On Thu, Jun 19, 2025 at 01:18:10PM GMT, Jakub Jelinek wrote:
> On Thu, Jun 19, 2025 at 07:13:07PM +0800, Yang Yujie wrote:
> > On Thu, Jun 19, 2025 at 12:32:57PM GMT, Jakub Jelinek wrote:
> > > As mentioned in another mail, please follow what aarch64 is doing here (at
> > > least unless you explain how it violates your psABI):
> > >   if (n <= 8)
> > >     info->limb_mode = QImode;
> > >   else if (n <= 16)
> > >     info->limb_mode = HImode;
> > >   else if (n <= 32)
> > >     info->limb_mode = SImode;
> > >   else if (n <= 64)
> > >     info->limb_mode = DImode;
> > >   else if (n <= 128)
> > >     info->limb_mode = TImode;
> > >   else
> > >     info->limb_mode = DImode;
> > > 
> > >   if (n > 128)
> > >     info->abi_limb_mode = TImode;
> > >   else
> > >     info->abi_limb_mode = info->limb_mode;
> >  
> > If you have a large bigint like _BitInt(191), which takes up an odd number 
> > of
> > 64-bit chunks, I am not sure if lowering with TImode would leave the top 
> > (unused)
> > limb alone.  In LoongArch psABI that limb is considered undefined and
> > any operations on it should be optimized away.
> 
> I know about that from earlier discussions, but the above code doesn't
> change anything on that.  191 is limb_mode DImode, abi_limb_mode TImode like
> before.  The only thing that changes is the [65, 128] case, in that case
> there is no such thing as partial undefined limb and it is much better to
> use normal TImode arithmetics and perhaps libcalls for those cases instead
> of lowering it.

Ok. Thanks for the comments.

Yujie

Reply via email to