On Wed, Jul 31, 2024 at 10:24 AM Jakub Jelinek <ja...@redhat.com> wrote: > > On Wed, Jul 31, 2024 at 10:11:44AM +0200, Uros Bizjak wrote: > > OK. Richard, can you please mention the above in the comment why > > XFmode is rejected in the hook? > > > > Later, we can perhaps benchmark XFmode move vs. generic memory copy to > > get some hard data. > > My (limited) understanding was that the hook would be used only for cases > where we'd like to e.g. value number some SF/DF/XF etc. mode loads and some > subsequent loads from the same address with different mode but same size > the same and replace say int or long long later load with VIEW_CONVERT_EXPR > of the result of the SF/SF mode load. That is what was incorrect, because > the load didn't preserve all the bits. The patch would still keep doing > normal SF/DF/XF etc. mode copies if that is all that happens in the program, > load some floating point value and store it elsewhere or as part of larger > aggregate copy.
So, the hook should allow everything besides SF/DFmode, simply: 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; } Uros,