On Wed, Jul 31, 2024 at 3:40 PM Richard Biener <rguent...@suse.de> 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 this way? > > Thanks, > Richard. > > * i386.cc (TARGET_MODE_CAN_TRANSFER_BITS): Define. > (ix86_mode_can_transfer_bits): New function.
OK. Thanks for your efforts and your patience to resolve this issue! Uros. > --- > gcc/config/i386/i386.cc | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc > index 12d15feb5e9..9869c44ee15 100644 > --- a/gcc/config/i386/i386.cc > +++ b/gcc/config/i386/i386.cc > @@ -26113,6 +26113,25 @@ 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: > + /* These suffer from normalization upon load when not using SSE. */ > + return !(ix86_fpmath & FPMATH_387); > + default: > + return true; > + } > + > + return true; > +} > + > /* Target-specific selftests. */ > > #if CHECKING_P > @@ -26959,6 +26978,9 @@ ix86_libgcc_floating_mode_supported_p > #undef TARGET_HAVE_CCMP > #define TARGET_HAVE_CCMP ix86_have_ccmp > > +#undef TARGET_MODE_CAN_TRANSFER_BITS > +#define TARGET_MODE_CAN_TRANSFER_BITS ix86_mode_can_transfer_bits > + > static bool > ix86_libc_has_fast_function (int fcode ATTRIBUTE_UNUSED) > { > -- > 2.43.0 >