mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
[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>
This commit is contained in:
parent
e5091842dc
commit
e3bc3a09bd
1 changed files with 30 additions and 10 deletions
|
@ -194,19 +194,39 @@
|
|||
(X##_f[3] = I3, X##_f[2] = I2, X##_f[1] = I1, X##_f[0] = I0)
|
||||
|
||||
#ifndef __FP_FRAC_ADD_4
|
||||
#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
|
||||
(r0 = x0 + y0, \
|
||||
r1 = x1 + y1 + (r0 < x0), \
|
||||
r2 = x2 + y2 + (r1 < x1), \
|
||||
r3 = x3 + y3 + (r2 < x2))
|
||||
#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
|
||||
do { \
|
||||
int _c1, _c2, _c3; \
|
||||
r0 = x0 + y0; \
|
||||
_c1 = r0 < x0; \
|
||||
r1 = x1 + y1; \
|
||||
_c2 = r1 < x1; \
|
||||
r1 += _c1; \
|
||||
_c2 |= r1 < _c1; \
|
||||
r2 = x2 + y2; \
|
||||
_c3 = r2 < x2; \
|
||||
r2 += _c2; \
|
||||
_c3 |= r2 < _c2; \
|
||||
r3 = x3 + y3 + _c3; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef __FP_FRAC_SUB_4
|
||||
#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
|
||||
(r0 = x0 - y0, \
|
||||
r1 = x1 - y1 - (r0 > x0), \
|
||||
r2 = x2 - y2 - (r1 > x1), \
|
||||
r3 = x3 - y3 - (r2 > x2))
|
||||
#define __FP_FRAC_SUB_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
|
||||
do { \
|
||||
int _c1, _c2, _c3; \
|
||||
r0 = x0 - y0; \
|
||||
_c1 = r0 > x0; \
|
||||
r1 = x1 - y1; \
|
||||
_c2 = r1 > x1; \
|
||||
r1 -= _c1; \
|
||||
_c2 |= r1 > _c1; \
|
||||
r2 = x2 - y2; \
|
||||
_c3 = r2 > x2; \
|
||||
r2 -= _c2; \
|
||||
_c3 |= r2 > _c2; \
|
||||
r3 = x3 - y3 - _c3; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef __FP_FRAC_ADDI_4
|
||||
|
|
Loading…
Reference in a new issue