RE: [PATCH] Fix carry bug in 128-bit unsigned integer adding
From: Liu Yu <hidden>
Date: 2008-01-09 03:05:39
=20 take a look at how include/math-emu/op-4.h implements=20 __FP_FRAC_ADD_4 & __FP_FRAC_SUB_4. Will that fix the bug, if=20 so we should make the code match how its done there. =20 - k =20 =20
The macro define __FP_FRAC_ADD_4 is below. It can fix the carry bug.=20
But still exist a problem that r[0-2] and x[0-2] cannot be referred to
the same variable.
If r0 and x0 are the same variable, the comparison ( r0 < x0 ) will
always fail.
I don't know whether we need to fix this problem.
---
#define __FP_FRAC_ADD_4(r3,r2,r1,r0,x3,x2,x1,x0,y3,y2,y1,y0) \
do { \
int _c1, _c2, _c3; \
r0 =3D x0 + y0; \
_c1 =3D r0 < x0; \
r1 =3D x1 + y1; \
_c2 =3D r1 < x1; \
r1 +=3D _c1; \
_c2 |=3D r1 < _c1; \
r2 =3D x2 + y2; \
_c3 =3D r2 < x2; \
r2 +=3D _c2; \
_c3 |=3D r2 < _c2; \
r3 =3D x3 + y3 + _c3; \
} while (0)
#endif