fix fastmath no asm casts to shorter sizes

This commit is contained in:
toddouska 2013-03-15 15:11:21 -07:00
parent 31b03c8a2d
commit 6ba7743fb3

View File

@ -437,9 +437,10 @@ __asm__( \
#define INNERMUL \ #define INNERMUL \
do { fp_word t; \ do { fp_word t; \
_c[0] = t = ((fp_word)_c[0] + (fp_word)cy) + \ t = ((fp_word)_c[0] + (fp_word)cy) + \
(((fp_word)mu) * ((fp_word)*tmpm++)); \ (((fp_word)mu) * ((fp_word)*tmpm++)); \
cy = (t >> DIGIT_BIT); \ _c[0] = (fp_digit)t; \
cy = (fp_digit)(t >> DIGIT_BIT); \
} while (0) } while (0)
#define PROPCARRY \ #define PROPCARRY \
@ -975,8 +976,9 @@ __asm__( \
/* multiplies point i and j, updates carry "c1" and digit c2 */ /* multiplies point i and j, updates carry "c1" and digit c2 */
#define SQRADD(i, j) \ #define SQRADD(i, j) \
do { fp_word t; \ do { fp_word t; \
t = c0 + ((fp_word)i) * ((fp_word)j); c0 = t; \ t = c0 + ((fp_word)i) * ((fp_word)j); c0 = (fp_digit)t; \
t = c1 + (t >> DIGIT_BIT); c1 = t; c2 += t >> DIGIT_BIT; \ t = c1 + (t >> DIGIT_BIT); c1 = (fp_digit)t; \
c2 +=(fp_digit) (t >> DIGIT_BIT); \
} while (0); } while (0);
@ -984,10 +986,12 @@ __asm__( \
#define SQRADD2(i, j) \ #define SQRADD2(i, j) \
do { fp_word t; \ do { fp_word t; \
t = ((fp_word)i) * ((fp_word)j); \ t = ((fp_word)i) * ((fp_word)j); \
tt = (fp_word)c0 + t; c0 = tt; \ tt = (fp_word)c0 + t; c0 = (fp_digit)tt; \
tt = (fp_word)c1 + (tt >> DIGIT_BIT); c1 = tt; c2 += tt >> DIGIT_BIT; \ tt = (fp_word)c1 + (tt >> DIGIT_BIT); c1 = (fp_digit)tt; \
tt = (fp_word)c0 + t; c0 = tt; \ c2 +=(fp_digit)( tt >> DIGIT_BIT); \
tt = (fp_word)c1 + (tt >> DIGIT_BIT); c1 = tt; c2 += tt >> DIGIT_BIT; \ tt = (fp_word)c0 + t; c0 = (fp_digit)tt; \
tt = (fp_word)c1 + (tt >> DIGIT_BIT); c1 = (fp_digit)tt; \
c2 +=(fp_digit) (tt >> DIGIT_BIT); \
} while (0); } while (0);
#define SQRADDSC(i, j) \ #define SQRADDSC(i, j) \
@ -1276,8 +1280,9 @@ ____asm__( \
#define MULADD(i, j) \ #define MULADD(i, j) \
do { fp_word t; \ do { fp_word t; \
t = (fp_word)c0 + ((fp_word)i) * ((fp_word)j); c0 = t; \ t = (fp_word)c0 + ((fp_word)i) * ((fp_word)j); c0 = (fp_digit)t; \
t = (fp_word)c1 + (t >> DIGIT_BIT); c1 = t; c2 += t >> DIGIT_BIT; \ t = (fp_word)c1 + (t >> DIGIT_BIT); \
c1 = (fp_digit)t; c2 += (fp_digit)(t >> DIGIT_BIT); \
} while (0); } while (0);
#endif #endif