aboutsummaryrefslogtreecommitdiff
path: root/gcc/longlong.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-02-04 13:48:42 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-02-04 13:48:42 -0800
commit1efd0b97d6e5f1cf93928fdeb50534b7edba1dad (patch)
tree82d974da89258a6e8422fad2a9e295cfaebbc0af /gcc/longlong.h
parent087fc75a008c6ba18d728cb395f2e28be2f994c0 (diff)
downloadgcc-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.h14
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; \