diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mpi/longlong.h | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h index d411355f238e..aac511417ad1 100644 --- a/lib/mpi/longlong.h +++ b/lib/mpi/longlong.h | |||
@@ -151,15 +151,12 @@ do { \ | |||
151 | #endif /* __a29k__ */ | 151 | #endif /* __a29k__ */ |
152 | 152 | ||
153 | #if defined(__alpha) && W_TYPE_SIZE == 64 | 153 | #if defined(__alpha) && W_TYPE_SIZE == 64 |
154 | #define umul_ppmm(ph, pl, m0, m1) \ | 154 | #define umul_ppmm(ph, pl, m0, m1) \ |
155 | do { \ | 155 | do { \ |
156 | UDItype __m0 = (m0), __m1 = (m1); \ | 156 | UDItype __m0 = (m0), __m1 = (m1); \ |
157 | __asm__ ("umulh %r1,%2,%0" \ | 157 | (ph) = __builtin_alpha_umulh(__m0, __m1); \ |
158 | : "=r" ((UDItype) ph) \ | 158 | (pl) = __m0 * __m1; \ |
159 | : "%rJ" (__m0), \ | 159 | } while (0) |
160 | "rI" (__m1)); \ | ||
161 | (pl) = __m0 * __m1; \ | ||
162 | } while (0) | ||
163 | #define UMUL_TIME 46 | 160 | #define UMUL_TIME 46 |
164 | #ifndef LONGLONG_STANDALONE | 161 | #ifndef LONGLONG_STANDALONE |
165 | #define udiv_qrnnd(q, r, n1, n0, d) \ | 162 | #define udiv_qrnnd(q, r, n1, n0, d) \ |
@@ -167,7 +164,7 @@ do { UDItype __r; \ | |||
167 | (q) = __udiv_qrnnd(&__r, (n1), (n0), (d)); \ | 164 | (q) = __udiv_qrnnd(&__r, (n1), (n0), (d)); \ |
168 | (r) = __r; \ | 165 | (r) = __r; \ |
169 | } while (0) | 166 | } while (0) |
170 | extern UDItype __udiv_qrnnd(); | 167 | extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype); |
171 | #define UDIV_TIME 220 | 168 | #define UDIV_TIME 220 |
172 | #endif /* LONGLONG_STANDALONE */ | 169 | #endif /* LONGLONG_STANDALONE */ |
173 | #endif /* __alpha */ | 170 | #endif /* __alpha */ |