From: Richard Henderson Date: Tue, 4 Feb 2003 21:48:42 +0000 (-0800) Subject: longlong.h [alpha] (count_leading_zeros, [...]): Use builtins instead of inline assembly. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1efd0b97d6e5f1cf93928fdeb50534b7edba1dad;p=gcc.git longlong.h [alpha] (count_leading_zeros, [...]): Use builtins instead of inline assembly. * longlong.h [alpha] (count_leading_zeros, count_trailing_zeros): Use builtins instead of inline assembly. From-SVN: r62407 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bcb901772b8..411627d7a70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-02-04 Richard Henderson + + * longlong.h [alpha] (count_leading_zeros, count_trailing_zeros): Use + builtins instead of inline assembly. + 2003-02-04 Falk Hueffner PR c/9376 diff --git a/gcc/longlong.h b/gcc/longlong.h index c1fee2d2589..ecca2deef2d 100644 --- a/gcc/longlong.h +++ b/gcc/longlong.h @@ -128,30 +128,28 @@ extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype); #define UDIV_TIME 220 #endif /* LONGLONG_STANDALONE */ #ifdef __alpha_cix__ -#define count_leading_zeros(COUNT,X) \ - __asm__("ctlz %1,%0" : "=r"(COUNT) : "r"(X)) -#define count_trailing_zeros(COUNT,X) \ - __asm__("cttz %1,%0" : "=r"(COUNT) : "r"(X)) +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X)) +#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X)) #define COUNT_LEADING_ZEROS_0 64 #else extern const UQItype __clz_tab[] ATTRIBUTE_HIDDEN; #define count_leading_zeros(COUNT,X) \ do { \ UDItype __xr = (X), __t, __a; \ - __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr)); \ + __t = __builtin_alpha_cmpbge (0, __xr); \ __a = __clz_tab[__t ^ 0xff] - 1; \ - __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a)); \ + __t = __builtin_alpha_extbl (__xr, __a); \ (COUNT) = 64 - (__clz_tab[__t] + __a*8); \ } while (0) #define count_trailing_zeros(COUNT,X) \ do { \ UDItype __xr = (X), __t, __a; \ - __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr)); \ + __t = __builtin_alpha_cmpbge (0, __xr); \ __t = ~__t & -~__t; \ __a = ((__t & 0xCC) != 0) * 2; \ __a += ((__t & 0xF0) != 0) * 4; \ __a += ((__t & 0xAA) != 0); \ - __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a)); \ + __t = __builtin_alpha_extbl (__xr, __a); \ __a <<= 3; \ __t &= -__t; \ __a += ((__t & 0xCC) != 0) * 2; \