diff options
author | Richard Henderson <rth@redhat.com> | 2003-02-04 13:48:42 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-02-04 13:48:42 -0800 |
commit | 1efd0b97d6e5f1cf93928fdeb50534b7edba1dad (patch) | |
tree | 82d974da89258a6e8422fad2a9e295cfaebbc0af /gcc/longlong.h | |
parent | 087fc75a008c6ba18d728cb395f2e28be2f994c0 (diff) | |
download | gcc-1efd0b97d6e5f1cf93928fdeb50534b7edba1dad.zip gcc-1efd0b97d6e5f1cf93928fdeb50534b7edba1dad.tar.gz gcc-1efd0b97d6e5f1cf93928fdeb50534b7edba1dad.tar.bz2 |
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
Diffstat (limited to 'gcc/longlong.h')
-rw-r--r-- | gcc/longlong.h | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc/longlong.h b/gcc/longlong.h index c1fee2d..ecca2de 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; \ |