summaryrefslogtreecommitdiff
path: root/longlong.h
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2014-09-24 19:40:36 +0200
committerMarc Glisse <marc.glisse@inria.fr>2014-09-24 19:40:36 +0200
commit06307336ed303da12743e573356d96532df33ec5 (patch)
tree5bc10ec1860e9328670ef847526e1bf46333ebc3 /longlong.h
parenta7689c1de373ca4652baeb2977a202ad3999f419 (diff)
downloadgmp-06307336ed303da12743e573356d96532df33ec5.tar.gz
On arm64, use __builtin_c[lt]zl, fix typo in umul_ppmm.
Diffstat (limited to 'longlong.h')
-rw-r--r--longlong.h8
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__ */