MIPS: math-emu: Add z argument macros
authorPaul Burton <paul.burton@imgtec.com>
Thu, 21 Apr 2016 13:04:51 +0000 (14:04 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 12:02:22 +0000 (14:02 +0200)
Introduce macros for handling the "z" argument to maddf & msubf, making
its handling consistent with that of the "x" & "y" arguments rather than
open-coding equivalents.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Maciej W. Rozycki <macro@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13156/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/math-emu/dp_maddf.c
arch/mips/math-emu/ieee754dp.h
arch/mips/math-emu/ieee754int.h
arch/mips/math-emu/ieee754sp.h
arch/mips/math-emu/sp_maddf.c

index d5e0fb1..0e1d4d8 100644 (file)
@@ -36,16 +36,15 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
 
        COMPXDP;
        COMPYDP;
-
-       u64 zm; int ze; int zs __maybe_unused; int zc;
+       COMPZDP;
 
        EXPLODEXDP;
        EXPLODEYDP;
-       EXPLODEDP(z, zc, zs, ze, zm)
+       EXPLODEZDP;
 
        FLUSHXDP;
        FLUSHYDP;
-       FLUSHDP(z, zc, zs, ze, zm);
+       FLUSHZDP;
 
        ieee754_clearcx();
 
@@ -54,7 +53,7 @@ static union ieee754dp _dp_maddf(union ieee754dp z, union ieee754dp x,
                ieee754_setcx(IEEE754_INVALID_OPERATION);
                return ieee754dp_nanxcpt(z);
        case IEEE754_CLASS_DNORM:
-               DPDNORMx(zm, ze);
+               DPDNORMZ;
        /* QNAN is handled separately below */
        }
 
index e2babd9..9ba0230 100644 (file)
@@ -60,6 +60,7 @@ static inline int ieee754dp_finite(union ieee754dp x)
        while ((m >> DP_FBITS) == 0) { m <<= 1; e--; }
 #define DPDNORMX       DPDNORMx(xm, xe)
 #define DPDNORMY       DPDNORMx(ym, ye)
+#define DPDNORMZ       DPDNORMx(zm, ze)
 
 static inline union ieee754dp builddp(int s, int bx, u64 m)
 {
index ed7bb27..8bc2f69 100644 (file)
@@ -55,6 +55,9 @@ static inline int ieee754_class_nan(int xc)
 #define COMPYSP \
        unsigned ym; int ye; int ys; int yc
 
+#define COMPZSP \
+       unsigned zm; int ze; int zs; int zc
+
 #define EXPLODESP(v, vc, vs, ve, vm)                                   \
 {                                                                      \
        vs = SPSIGN(v);                                                 \
@@ -81,6 +84,7 @@ static inline int ieee754_class_nan(int xc)
 }
 #define EXPLODEXSP EXPLODESP(x, xc, xs, xe, xm)
 #define EXPLODEYSP EXPLODESP(y, yc, ys, ye, ym)
+#define EXPLODEZSP EXPLODESP(z, zc, zs, ze, zm)
 
 
 #define COMPXDP \
@@ -89,6 +93,9 @@ static inline int ieee754_class_nan(int xc)
 #define COMPYDP \
        u64 ym; int ye; int ys; int yc
 
+#define COMPZDP \
+       u64 zm; int ze; int zs; int zc
+
 #define EXPLODEDP(v, vc, vs, ve, vm)                                   \
 {                                                                      \
        vm = DPMANT(v);                                                 \
@@ -115,6 +122,7 @@ static inline int ieee754_class_nan(int xc)
 }
 #define EXPLODEXDP EXPLODEDP(x, xc, xs, xe, xm)
 #define EXPLODEYDP EXPLODEDP(y, yc, ys, ye, ym)
+#define EXPLODEZDP EXPLODEDP(z, zc, zs, ze, zm)
 
 #define FLUSHDP(v, vc, vs, ve, vm)                                     \
        if (vc==IEEE754_CLASS_DNORM) {                                  \
@@ -140,7 +148,9 @@ static inline int ieee754_class_nan(int xc)
 
 #define FLUSHXDP FLUSHDP(x, xc, xs, xe, xm)
 #define FLUSHYDP FLUSHDP(y, yc, ys, ye, ym)
+#define FLUSHZDP FLUSHDP(z, zc, zs, ze, zm)
 #define FLUSHXSP FLUSHSP(x, xc, xs, xe, xm)
 #define FLUSHYSP FLUSHSP(y, yc, ys, ye, ym)
+#define FLUSHZSP FLUSHSP(z, zc, zs, ze, zm)
 
 #endif /* __IEEE754INT_H  */
index 374a3f0..b24fdff 100644 (file)
@@ -65,6 +65,7 @@ static inline int ieee754sp_finite(union ieee754sp x)
        while ((m >> SP_FBITS) == 0) { m <<= 1; e--; }
 #define SPDNORMX       SPDNORMx(xm, xe)
 #define SPDNORMY       SPDNORMx(ym, ye)
+#define SPDNORMZ       SPDNORMx(zm, ze)
 
 static inline union ieee754sp buildsp(int s, int bx, unsigned m)
 {
index 93b7132..86e1d0b 100644 (file)
@@ -36,15 +36,15 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
 
        COMPXSP;
        COMPYSP;
-       u32 zm; int ze; int zs __maybe_unused; int zc;
+       COMPZSP;
 
        EXPLODEXSP;
        EXPLODEYSP;
-       EXPLODESP(z, zc, zs, ze, zm)
+       EXPLODEZSP;
 
        FLUSHXSP;
        FLUSHYSP;
-       FLUSHSP(z, zc, zs, ze, zm);
+       FLUSHZSP;
 
        ieee754_clearcx();
 
@@ -53,7 +53,7 @@ static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
                ieee754_setcx(IEEE754_INVALID_OPERATION);
                return ieee754sp_nanxcpt(z);
        case IEEE754_CLASS_DNORM:
-               SPDNORMx(zm, ze);
+               SPDNORMZ;
        /* QNAN is handled separately below */
        }