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,

Reply via email to