MIPS: math-emu: Replace DP_MBITS with DP_FBITS and SP_MBITS with SP_FBITS.
[firefly-linux-kernel-4.4.55.git] / arch / mips / math-emu / ieee754int.h
index 4b6c6fb353047e1b9b7185a0cda2e7e95b866d51..543e8f0b5a977601ab2bf38f4cfb905b65509cf4 100644 (file)
  *
  * ########################################################################
  */
-
+#ifndef __IEEE754INT_H
+#define __IEEE754INT_H
 
 #include "ieee754.h"
 
 #define DP_EBIAS       1023
 #define DP_EMIN                (-1022)
 #define DP_EMAX                1023
-#define DP_MBITS       52
+#define DP_FBITS       52
 
 #define SP_EBIAS       127
 #define SP_EMIN                (-126)
 #define SP_EMAX                127
-#define SP_MBITS       23
+#define SP_FBITS       23
 
 #define DP_MBIT(x)     ((u64)1 << (x))
-#define DP_HIDDEN_BIT  DP_MBIT(DP_MBITS)
+#define DP_HIDDEN_BIT  DP_MBIT(DP_FBITS)
 #define DP_SIGN_BIT    DP_MBIT(63)
 
 #define SP_MBIT(x)     ((u32)1 << (x))
-#define SP_HIDDEN_BIT  SP_MBIT(SP_MBITS)
+#define SP_HIDDEN_BIT  SP_MBIT(SP_FBITS)
 #define SP_SIGN_BIT    SP_MBIT(31)
 
 
 
 #define CLPAIR(x, y)   ((x)*6+(y))
 
-#define CLEARCX \
-  (ieee754_csr.cx = 0)
+static inline void ieee754_clearcx(void)
+{
+       ieee754_csr.cx = 0;
+}
 
-#define SETCX(x) \
-  (ieee754_csr.cx |= (x), ieee754_csr.sx |= (x))
+static inline void ieee754_setcx(const unsigned int flags)
+{
+       ieee754_csr.cx |= flags;
+       ieee754_csr.sx |= flags;
+}
 
-#define SETANDTESTCX(x) \
-  (SETCX(x), ieee754_csr.mx & (x))
+static inline int ieee754_setandtestcx(const unsigned int x)
+{
+       ieee754_setcx(x);
 
-#define TSTX() \
-       (ieee754_csr.cx & ieee754_csr.mx)
+       return ieee754_csr.mx & x;
+}
 
+static inline int ieee754_tstx(void)
+{
+       return ieee754_csr.cx & ieee754_csr.mx;
+}
 
 #define COMPXSP \
-  unsigned xm; int xe; int xs __maybe_unused; int xc
+       unsigned xm; int xe; int xs __maybe_unused; int xc
 
 #define COMPYSP \
-  unsigned ym; int ye; int ys; int yc
-
-#define EXPLODESP(v, vc, vs, ve, vm) \
-{\
-    vs = SPSIGN(v);\
-    ve = SPBEXP(v);\
-    vm = SPMANT(v);\
-    if(ve == SP_EMAX+1+SP_EBIAS){\
-       if(vm == 0)\
-         vc = IEEE754_CLASS_INF;\
-       else if(vm & SP_MBIT(SP_MBITS-1)) \
-         vc = IEEE754_CLASS_SNAN;\
-       else \
-         vc = IEEE754_CLASS_QNAN;\
-    } else if(ve == SP_EMIN-1+SP_EBIAS) {\
-       if(vm) {\
-           ve = SP_EMIN;\
-           vc = IEEE754_CLASS_DNORM;\
-       } else\
-         vc = IEEE754_CLASS_ZERO;\
-    } else {\
-       ve -= SP_EBIAS;\
-       vm |= SP_HIDDEN_BIT;\
-       vc = IEEE754_CLASS_NORM;\
-    }\
+       unsigned ym; int ye; int ys; int yc
+
+#define EXPLODESP(v, vc, vs, ve, vm)                                   \
+{                                                                      \
+       vs = SPSIGN(v);                                                 \
+       ve = SPBEXP(v);                                                 \
+       vm = SPMANT(v);                                                 \
+       if (ve == SP_EMAX+1+SP_EBIAS) {                                 \
+               if (vm == 0)                                            \
+                       vc = IEEE754_CLASS_INF;                         \
+               else if (vm & SP_MBIT(SP_FBITS-1))                      \
+                       vc = IEEE754_CLASS_SNAN;                        \
+       else                                                            \
+               vc = IEEE754_CLASS_QNAN;                                \
+       } else if (ve == SP_EMIN-1+SP_EBIAS) {                          \
+               if (vm) {                                               \
+                       ve = SP_EMIN;                                   \
+                       vc = IEEE754_CLASS_DNORM;                       \
+               } else                                                  \
+                       vc = IEEE754_CLASS_ZERO;                        \
+       } else {                                                        \
+               ve -= SP_EBIAS;                                         \
+               vm |= SP_HIDDEN_BIT;                                    \
+               vc = IEEE754_CLASS_NORM;                                \
+       }                                                               \
 }
 #define EXPLODEXSP EXPLODESP(x, xc, xs, xe, xm)
 #define EXPLODEYSP EXPLODESP(y, yc, ys, ye, ym)
 
 
 #define COMPXDP \
-u64 xm; int xe; int xs __maybe_unused; int xc
+       u64 xm; int xe; int xs __maybe_unused; int xc
 
 #define COMPYDP \
-u64 ym; int ye; int ys; int yc
-
-#define EXPLODEDP(v, vc, vs, ve, vm) \
-{\
-    vm = DPMANT(v);\
-    vs = DPSIGN(v);\
-    ve = DPBEXP(v);\
-    if(ve == DP_EMAX+1+DP_EBIAS){\
-       if(vm == 0)\
-         vc = IEEE754_CLASS_INF;\
-       else if(vm & DP_MBIT(DP_MBITS-1)) \
-         vc = IEEE754_CLASS_SNAN;\
-       else \
-         vc = IEEE754_CLASS_QNAN;\
-    } else if(ve == DP_EMIN-1+DP_EBIAS) {\
-       if(vm) {\
-           ve = DP_EMIN;\
-           vc = IEEE754_CLASS_DNORM;\
-       } else\
-         vc = IEEE754_CLASS_ZERO;\
-    } else {\
-       ve -= DP_EBIAS;\
-       vm |= DP_HIDDEN_BIT;\
-       vc = IEEE754_CLASS_NORM;\
-    }\
+       u64 ym; int ye; int ys; int yc
+
+#define EXPLODEDP(v, vc, vs, ve, vm)                                   \
+{                                                                      \
+       vm = DPMANT(v);                                                 \
+       vs = DPSIGN(v);                                                 \
+       ve = DPBEXP(v);                                                 \
+       if (ve == DP_EMAX+1+DP_EBIAS) {                                 \
+               if (vm == 0)                                            \
+                       vc = IEEE754_CLASS_INF;                         \
+               else if (vm & DP_MBIT(DP_FBITS-1))                      \
+                       vc = IEEE754_CLASS_SNAN;                        \
+               else                                                    \
+                       vc = IEEE754_CLASS_QNAN;                        \
+       } else if (ve == DP_EMIN-1+DP_EBIAS) {                          \
+               if (vm) {                                               \
+                       ve = DP_EMIN;                                   \
+                       vc = IEEE754_CLASS_DNORM;                       \
+       } else                                                          \
+               vc = IEEE754_CLASS_ZERO;                                \
+       } else {                                                        \
+               ve -= DP_EBIAS;                                         \
+               vm |= DP_HIDDEN_BIT;                                    \
+               vc = IEEE754_CLASS_NORM;                                \
+       }                                                               \
 }
 #define EXPLODEXDP EXPLODEDP(x, xc, xs, xe, xm)
 #define EXPLODEYDP EXPLODEDP(y, yc, ys, ye, ym)
 
-#define FLUSHDP(v, vc, vs, ve, vm) \
-       if(vc==IEEE754_CLASS_DNORM) {\
-           if(ieee754_csr.nod) {\
-               SETCX(IEEE754_INEXACT);\
-               vc = IEEE754_CLASS_ZERO;\
-               ve = DP_EMIN-1+DP_EBIAS;\
-               vm = 0;\
-               v = ieee754dp_zero(vs);\
-           }\
+#define FLUSHDP(v, vc, vs, ve, vm)                                     \
+       if (vc==IEEE754_CLASS_DNORM) {                                  \
+               if (ieee754_csr.nod) {                                  \
+                       ieee754_setcx(IEEE754_INEXACT);                 \
+                       vc = IEEE754_CLASS_ZERO;                        \
+                       ve = DP_EMIN-1+DP_EBIAS;                        \
+                       vm = 0;                                         \
+                       v = ieee754dp_zero(vs);                         \
+               }                                                       \
        }
 
-#define FLUSHSP(v, vc, vs, ve, vm) \
-       if(vc==IEEE754_CLASS_DNORM) {\
-           if(ieee754_csr.nod) {\
-               SETCX(IEEE754_INEXACT);\
-               vc = IEEE754_CLASS_ZERO;\
-               ve = SP_EMIN-1+SP_EBIAS;\
-               vm = 0;\
-               v = ieee754sp_zero(vs);\
-           }\
+#define FLUSHSP(v, vc, vs, ve, vm)                                     \
+       if (vc==IEEE754_CLASS_DNORM) {                                  \
+               if (ieee754_csr.nod) {                                  \
+                       ieee754_setcx(IEEE754_INEXACT);                 \
+                       vc = IEEE754_CLASS_ZERO;                        \
+                       ve = SP_EMIN-1+SP_EBIAS;                        \
+                       vm = 0;                                         \
+                       v = ieee754sp_zero(vs);                         \
+               }                                                       \
        }
 
 #define FLUSHXDP FLUSHDP(x, xc, xs, xe, xm)
 #define FLUSHYDP FLUSHDP(y, yc, ys, ye, ym)
 #define FLUSHXSP FLUSHSP(x, xc, xs, xe, xm)
 #define FLUSHYSP FLUSHSP(y, yc, ys, ye, ym)
+
+#endif /* __IEEE754INT_H  */