aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/math-emu/op-4.h
diff options
context:
space:
mode:
authorLiu Yu <Yu.Liu@freescale.com>2008-01-17 22:21:39 -0500
committerKumar Gala <galak@kernel.crashing.org>2008-01-23 20:34:21 -0500
commite3bc3a09bdfc1b3b88b32d7960c4c3b84a2b860f (patch)
tree9072a7d785bb1aa3ef0714f0a9fc27ccd5ce1bca /arch/powerpc/math-emu/op-4.h
parente5091842dc067c0c9ae0d8a26f9e2eecf7df34f3 (diff)
[POWERPC] Fix carry bug in 128-bit unsigned integer adding
Synchronize it to the definition in include/math-emu/op-4.h for short term. Signed-off-by: Liu Yu <Yu.Liu@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/math-emu/op-4.h')
-rw-r--r--arch/powerpc/math-emu/op-4.h40
1 files changed, 30 insertions, 10 deletions
diff --git a/arch/powerpc/math-emu/op-4.h b/arch/powerpc/math-emu/op-4.h
index fcdd6d064c54..c9ae626070da 100644
--- a/arch/powerpc/math-emu/op-4.h
+++ b/arch/powerpc/math-emu/op-4.h
@@ -194,19 +194,39 @@
194 (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0) 194 (X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0)
195 195
196#ifndef __FP_FRAC_ADD_4 196#ifndef __FP_FRAC_ADD_4
197#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 197#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
198 (r0 = x0 + y0, \ 198 do { \
199 r1 = x1 + y1 + (r0 < x0), \ 199 int _c1, _c2, _c3; \
200 r2 = x2 + y2 + (r1 < x1), \ 200 r0 = x0 + y0; \
201 r3 = x3 + y3 + (r2 < x2)) 201 _c1 = r0 < x0; \
202 r1 = x1 + y1; \
203 _c2 = r1 < x1; \
204 r1 += _c1; \
205 _c2 |= r1 < _c1; \
206 r2 = x2 + y2; \
207 _c3 = r2 < x2; \
208 r2 += _c2; \
209 _c3 |= r2 < _c2; \
210 r3 = x3 + y3 + _c3; \
211 } while (0)
202#endif 212#endif
203 213
204#ifndef __FP_FRAC_SUB_4 214#ifndef __FP_FRAC_SUB_4
205#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \ 215#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
206 (r0 = x0 - y0, \ 216 do { \
207 r1 = x1 - y1 - (r0 > x0), \ 217 int _c1, _c2, _c3; \
208 r2 = x2 - y2 - (r1 > x1), \ 218 r0 = x0 - y0; \
209 r3 = x3 - y3 - (r2 > x2)) 219 _c1 = r0 > x0; \
220 r1 = x1 - y1; \
221 _c2 = r1 > x1; \
222 r1 -= _c1; \
223 _c2 |= r1 > _c1; \
224 r2 = x2 - y2; \
225 _c3 = r2 > x2; \
226 r2 -= _c2; \
227 _c3 |= r2 > _c2; \
228 r3 = x3 - y3 - _c3; \
229 } while (0)
210#endif 230#endif
211 231
212#ifndef __FP_FRAC_ADDI_4 232#ifndef __FP_FRAC_ADDI_4