ieee754_csr
ieee754_csr_save = ieee754_csr; \
ieee754_csr_save.cx |= ieee754_csr.cx; \
ieee754_csr_save.sx |= ieee754_csr.sx; \
ieee754_csr.cx |= ieee754_csr_save.cx; \
ieee754_csr.sx |= ieee754_csr_save.sx; \
oldrm = ieee754_csr.rm;
ieee754_csr.rm = MIPSInst_FUNC(ir);
ieee754_csr.rm = oldrm;
oldrm = ieee754_csr.rm;
ieee754_csr.rm = MIPSInst_FUNC(ir);
ieee754_csr.rm = oldrm;
oldrm = ieee754_csr.rm;
ieee754_csr.rm = MIPSInst_FUNC(ir);
ieee754_csr.rm = oldrm;
oldrm = ieee754_csr.rm;
ieee754_csr.rm = MIPSInst_FUNC(ir);
ieee754_csr.rm = oldrm;
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
switch (ieee754_csr.rm) {
if (ieee754_csr.abs2008) {
oldrm = ieee754_csr.rm;
ieee754_csr.rm = FPU_CSR_RD;
ieee754_csr.rm = oldrm;
if (ieee754_csr.abs2008) {
oldrm = ieee754_csr.rm;
ieee754_csr.rm = FPU_CSR_RD;
ieee754_csr.rm = oldrm;
ieee754_csr.rm = FPU_CSR_RZ;
ieee754_csr.sx &= ~IEEE754_INEXACT;
if (ieee754_csr.sx & IEEE754_INEXACT || t.bits != y.bits) {
if (!(ieee754_csr.sx & IEEE754_INEXACT))
ieee754_csr = oldcsr;
oldcsr = ieee754_csr;
ieee754_csr.mx &= ~IEEE754_INEXACT;
ieee754_csr.sx &= ~IEEE754_INEXACT;
ieee754_csr.rm = FPU_CSR_RN;
if (ieee754_csr.rm == FPU_CSR_RD)
return ieee754dp_zero(ieee754_csr.rm == FPU_CSR_RD);
switch (ieee754_csr.rm) {
switch (ieee754_csr.rm) {
return (ieee754_csr.rm);
return (ieee754_csr.rm = rm);
return (ieee754_csr.cx);
return (ieee754_csr.cx & n);
return (ieee754_csr.sx);
return (ieee754_csr.sx = 0);
return (ieee754_csr.sx & n);
ieee754_csr.nan2008])
ieee754_csr.nan2008])
return ieee754_csr.nan2008 ? 0 : INT_MAX;
return ieee754_csr.nan2008 ? 0 : S64_MAX;
return ieee754_csr.nan2008 && xs ? INT_MIN : INT_MAX;
return ieee754_csr.nan2008 && xs ? S64_MIN : S64_MAX;
switch(ieee754_csr.rm) {
switch (ieee754_csr.rm) {
if (ieee754_csr.mx & IEEE754_UNDERFLOW)
return ieee754_csr.nan2008 ^ qbit;
if (ieee754_csr.nan2008) {
switch (ieee754_csr.rm) {
if (ieee754_csr.nod) {
else if (ieee754_csr.nan2008 ^ !(vm & DP_MBIT(DP_FBITS - 1))) \
if (ieee754_csr.nod) { \
if (ieee754_csr.nod) { \
ieee754_csr.cx = 0;
ieee754_csr.cx |= flags;
ieee754_csr.sx |= flags;
return ieee754_csr.mx & x;
else if (ieee754_csr.nan2008 ^ !(vm & SP_MBIT(SP_FBITS - 1))) \
switch(ieee754_csr.rm) {
switch (ieee754_csr.rm) {
if (ieee754_csr.mx & IEEE754_UNDERFLOW)
return ieee754_csr.nan2008 ^ qbit;
if (ieee754_csr.nan2008) {
switch (ieee754_csr.rm) {
if (ieee754_csr.nod) {
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
if (!ieee754_csr.nan2008) {
if ((ieee754_csr.rm == FPU_CSR_RU && !xs) ||
(ieee754_csr.rm == FPU_CSR_RD && xs))
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
switch (ieee754_csr.rm) {
if (ieee754_csr.abs2008) {
oldrm = ieee754_csr.rm;
ieee754_csr.rm = FPU_CSR_RD;
ieee754_csr.rm = oldrm;
if (ieee754_csr.abs2008) {
oldrm = ieee754_csr.rm;
ieee754_csr.rm = FPU_CSR_RD;
ieee754_csr.rm = oldrm;
switch (ieee754_csr.rm) {
if (ieee754_csr.rm == FPU_CSR_RD)
return ieee754sp_zero(ieee754_csr.rm == FPU_CSR_RD);
switch (ieee754_csr.rm) {
switch (ieee754_csr.rm) {