https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89229

--- Comment #18 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jakub Jelinek from comment #14)
> Comment on attachment 45685 [details]
> I am testing this
> 
> The movsi change doesn't look entirely right to me.  While OImode or TImode
> is not allowed in ext sse regs unless AVX512VL, that is not the case for
> SImode, so for SImode if one or both operands are ext sse regs and
> !TARGET_AVX512VL, we need to use MODE_XI and use the pattern with %g1, %g0
> in there.

No need to set MODE_XI:

        if (EXT_REX_SSE_REG_P (operands[0])
              || EXT_REX_SSE_REG_P (operands[1]))
            {
              if (TARGET_AVX512VL)
                return "vmovdqa32\t{%1, %0|%0, %1}"; 
              else
                return "vmovdqa32\t{%g1, %0|%0, %g1}";
            }
          else
            return "%vmovdqa\t{%1, %0|%0, %1}";

Reply via email to