On Tue, 30 Jul 2024, Uros Bizjak wrote:
> On Tue, Jul 30, 2024 at 1:07 PM Uros Bizjak <[email protected]> wrote:
> >
> > On Tue, Jul 30, 2024 at 12:18 PM Richard Biener <[email protected]> wrote:
> > >
> > > The following implements the hook, excluding x87 modes for scalar
> > > and complex float modes.
> > >
> > > Bootstrapped and tested on x86_64-unknown-linux-gnu.
> > >
> > > OK?
> > >
> > > Thanks,
> > > Richard.
> > >
> > > * i386.cc (TARGET_MODE_CAN_TRANSFER_BITS): Define.
> > > (ix86_mode_can_transfer_bits): New function.
> > > ---
> > > gcc/config/i386/i386.cc | 21 +++++++++++++++++++++
> > > 1 file changed, 21 insertions(+)
> > >
> > > diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
> > > index 12d15feb5e9..5184366916b 100644
> > > --- a/gcc/config/i386/i386.cc
> > > +++ b/gcc/config/i386/i386.cc
> > > @@ -26113,6 +26113,24 @@ ix86_have_ccmp ()
> > > return (bool) TARGET_APX_CCMP;
> > > }
> > >
> > > +/* Implement TARGET_MODE_CAN_TRANSFER_BITS. */
> > > +static bool
> > > +ix86_mode_can_transfer_bits (machine_mode mode)
> > > +{
> > > + if (GET_MODE_CLASS (mode) == MODE_FLOAT
> > > + || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT)
> > > + switch (GET_MODE_INNER (mode))
> > > + {
> > > + case SFmode:
> > > + case DFmode:
> > > + return TARGET_SSE_MATH && !TARGET_MIX_SSE_I387;
> >
> > This can be simplified to:
> >
> > return !(ix86_fpmath & FPMATH_387);
Done.
> > (Which implies that we should introduce TARGET_I387_MATH to parallel
> > TARGET_SSE_MATH some day...)
> >
> > > + default:
> > > + return false;
> >
> > We don't want to enable HFmode for transfers?
Jakub indicated that wouldn't be safe - is it?
> Oh, and please add a small comment why we don't use XFmode here.
Will do.
/* Do not enable XFmode, there is padding in it and it suffers
from normalization upon load like SFmode and DFmode when
not using SSE. */
Thanks,
Richard.
> Uros.
>
--
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)