Message ID | 20221015061212.23105-1-xry111@xry111.site |
---|---|
State | New |
Headers | show |
Series | longlong.h: update from GCC for LoongArch clz/ctz support | expand |
Gentle Ping. Tested with gcc 12.0.1 binutils 2.39 and this patch need to be backport to glibc 2.36-master. 在 2022/10/15 下午2:12, Xi Ruoyao 写道: > Update longlong.h to GCC r13-3269. Keep our local change (prefer https > for gnu.org URL). > --- > stdlib/longlong.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/stdlib/longlong.h b/stdlib/longlong.h > index 9b89469ac2..d8f76a43b5 100644 > --- a/stdlib/longlong.h > +++ b/stdlib/longlong.h > @@ -593,6 +593,18 @@ extern UDItype __umulsidi3 (USItype, USItype); > #define UMUL_TIME 14 > #endif > > +#ifdef __loongarch__ > +# if W_TYPE_SIZE == 32 > +# define count_leading_zeros(count, x) ((count) = __builtin_clz (x)) > +# define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x)) > +# define COUNT_LEADING_ZEROS_0 32 > +# elif W_TYPE_SIZE == 64 > +# define count_leading_zeros(count, x) ((count) = __builtin_clzll (x)) > +# define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x)) > +# define COUNT_LEADING_ZEROS_0 64 > +# endif > +#endif > + > #if defined (__M32R__) && W_TYPE_SIZE == 32 > #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ > /* The cmp clears the condition bit. */ \
On 15/10/22 03:12, Xi Ruoyao via Libc-alpha wrote: > Update longlong.h to GCC r13-3269. Keep our local change (prefer https > for gnu.org URL). LGTM, it matches gcc commit 6f653a2c85a450714bac905ea4f153234bc6cd5f. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > stdlib/longlong.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/stdlib/longlong.h b/stdlib/longlong.h > index 9b89469ac2..d8f76a43b5 100644 > --- a/stdlib/longlong.h > +++ b/stdlib/longlong.h > @@ -593,6 +593,18 @@ extern UDItype __umulsidi3 (USItype, USItype); > #define UMUL_TIME 14 > #endif > > +#ifdef __loongarch__ > +# if W_TYPE_SIZE == 32 > +# define count_leading_zeros(count, x) ((count) = __builtin_clz (x)) > +# define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x)) > +# define COUNT_LEADING_ZEROS_0 32 > +# elif W_TYPE_SIZE == 64 > +# define count_leading_zeros(count, x) ((count) = __builtin_clzll (x)) > +# define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x)) > +# define COUNT_LEADING_ZEROS_0 64 > +# endif > +#endif > + > #if defined (__M32R__) && W_TYPE_SIZE == 32 > #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ > /* The cmp clears the condition bit. */ \
diff --git a/stdlib/longlong.h b/stdlib/longlong.h index 9b89469ac2..d8f76a43b5 100644 --- a/stdlib/longlong.h +++ b/stdlib/longlong.h @@ -593,6 +593,18 @@ extern UDItype __umulsidi3 (USItype, USItype); #define UMUL_TIME 14 #endif +#ifdef __loongarch__ +# if W_TYPE_SIZE == 32 +# define count_leading_zeros(count, x) ((count) = __builtin_clz (x)) +# define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x)) +# define COUNT_LEADING_ZEROS_0 32 +# elif W_TYPE_SIZE == 64 +# define count_leading_zeros(count, x) ((count) = __builtin_clzll (x)) +# define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x)) +# define COUNT_LEADING_ZEROS_0 64 +# endif +#endif + #if defined (__M32R__) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ /* The cmp clears the condition bit. */ \