diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2014-09-24 19:40:36 +0200 |
---|---|---|
committer | Marc Glisse <marc.glisse@inria.fr> | 2014-09-24 19:40:36 +0200 |
commit | 06307336ed303da12743e573356d96532df33ec5 (patch) | |
tree | 5bc10ec1860e9328670ef847526e1bf46333ebc3 /longlong.h | |
parent | a7689c1de373ca4652baeb2977a202ad3999f419 (diff) | |
download | gmp-06307336ed303da12743e573356d96532df33ec5.tar.gz |
On arm64, use __builtin_c[lt]zl, fix typo in umul_ppmm.
Diffstat (limited to 'longlong.h')
-rw-r--r-- | longlong.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/longlong.h b/longlong.h index 4f3adbb90..d7667cec1 100644 --- a/longlong.h +++ b/longlong.h @@ -556,13 +556,11 @@ extern UWtype __MPN(udiv_qrnnd) (UWtype *, UWtype, UWtype, UWtype); #define umul_ppmm(ph, pl, m0, m1) \ do { \ UDItype __m0 = (m0), __m1 = (m1); \ - __asm__ ("umulh\t%0, %1, %2" : "=r" (ph) : "r" (m0), "r" (m1)); \ + __asm__ ("umulh\t%0, %1, %2" : "=r" (ph) : "r" (__m0), "r" (__m1)); \ (pl) = __m0 * __m1; \ } while (0) -#define count_leading_zeros(count, x) \ - __asm__ ("clz\t%0, %1" : "=r" (count) : "r" (x)) -#define count_trailing_zeros(count, x) \ - __asm__ ("rbit\t%0, %1\n\tclz\t%0, %0" : "=r" (count) : "r" (x)) +#define count_leading_zeros(count, x) count_leading_zeros_gcc_clz(count, x) +#define count_trailing_zeros(count, x) count_trailing_zeros_gcc_ctz(count, x) #define COUNT_LEADING_ZEROS_0 64 #endif /* __aarch64__ */ |