diff mbox series

longlong.h: update from GCC for LoongArch clz/ctz support

Message ID 20221015061212.23105-1-xry111@xry111.site
State New
Headers show
Series longlong.h: update from GCC for LoongArch clz/ctz support | expand

Commit Message

Xi Ruoyao Oct. 15, 2022, 6:12 a.m. UTC
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(+)

Comments

caiyinyu Oct. 24, 2022, 1:08 p.m. UTC | #1
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.  */ \
Adhemerval Zanella Oct. 24, 2022, 2:10 p.m. UTC | #2
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 mbox series

Patch

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.  */ \