On Thu, 2022-10-13 at 16:43 +0800, Lulu Cheng wrote:
> Looks good to me!
> 
> Thanks!

Pushed r13-3269.

> 
> 在 2022/10/12 下午10:23, Xi Ruoyao 写道:
> > LoongArch always support clz and ctz instructions, so we can always
> > use
> > __builtin_{clz,ctz} for count_{leading,trailing}_zeros.  This
> > improves
> > the code of libgcc, and also benefits Glibc once we merge longlong.h
> > there.
> > 
> > Bootstrapped and regtested on loongarch64-linux-gnu.
> > 
> > include/ChangeLog:
> > 
> >         * longlong.h [__loongarch__] (count_leading_zeros): Define.
> >         [__loongarch__] (count_trailing_zeros): Likewise.
> >         [__loongarch__] (COUNT_LEADING_ZEROS_0): Likewise.
> > ---
> >   include/longlong.h | 12 ++++++++++++
> >   1 file changed, 12 insertions(+)
> > 
> > diff --git a/include/longlong.h b/include/longlong.h
> > index 64a7b10f9b2..c3a6f1e7eaa 100644
> > --- a/include/longlong.h
> > +++ b/include/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.  */ \
> 

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

Reply via email to