diff options
Diffstat (limited to 'arch/mips/math-emu/dp_add.c')
-rw-r--r-- | arch/mips/math-emu/dp_add.c | 14 |
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) |