aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/math-emu/dp_add.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/math-emu/dp_add.c')
-rw-r--r--arch/mips/math-emu/dp_add.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/arch/mips/math-emu/dp_add.c b/arch/mips/math-emu/dp_add.c
index 7f64577df984..8954ef031f84 100644
--- a/arch/mips/math-emu/dp_add.c
+++ b/arch/mips/math-emu/dp_add.c
@@ -37,19 +37,20 @@ union ieee754dp ieee754dp_add(union ieee754dp x, union ieee754dp y)
37 FLUSHYDP; 37 FLUSHYDP;
38 38
39 switch (CLPAIR(xc, yc)) { 39 switch (CLPAIR(xc, yc)) {
40 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_QNAN):
41 case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_SNAN): 40 case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_SNAN):
42 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_SNAN):
43 case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_SNAN): 41 case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_SNAN):
44 case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_SNAN): 42 case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_SNAN):
45 case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_SNAN): 43 case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_SNAN):
46 case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_SNAN): 44 case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_SNAN):
45 return ieee754dp_nanxcpt(y);
46
47 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_SNAN):
48 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_QNAN):
47 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_ZERO): 49 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_ZERO):
48 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_NORM): 50 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_NORM):
49 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_DNORM): 51 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_DNORM):
50 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF): 52 case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
51 ieee754_setcx(IEEE754_INVALID_OPERATION); 53 return ieee754dp_nanxcpt(x);
52 return ieee754dp_nanxcpt(ieee754dp_indef());
53 54
54 case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN): 55 case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
55 case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN): 56 case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
@@ -150,8 +151,6 @@ union ieee754dp ieee754dp_add(union ieee754dp x, union ieee754dp y)
150 * leaving result in xm, xs and xe. 151 * leaving result in xm, xs and xe.
151 */ 152 */
152 xm = xm + ym; 153 xm = xm + ym;
153 xe = xe;
154 xs = xs;
155 154
156 if (xm >> (DP_FBITS + 1 + 3)) { /* carry out */ 155 if (xm >> (DP_FBITS + 1 + 3)) { /* carry out */
157 xm = XDPSRS1(xm); 156 xm = XDPSRS1(xm);
@@ -160,11 +159,8 @@ union ieee754dp ieee754dp_add(union ieee754dp x, union ieee754dp y)
160 } else { 159 } else {
161 if (xm >= ym) { 160 if (xm >= ym) {
162 xm = xm - ym; 161 xm = xm - ym;
163 xe = xe;
164 xs = xs;
165 } else { 162 } else {
166 xm = ym - xm; 163 xm = ym - xm;
167 xe = xe;
168 xs = ys; 164 xs = ys;
169 } 165 }
170 if (xm == 0) 166 if (xm == 0)