On Sat, Feb 9, 2019 at 2:50 AM Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Sat, Feb 09, 2019 at 11:40:49AM +0100, Jakub Jelinek wrote:
> > 2019-02-09  Jakub Jelinek  <ja...@redhat.com>
> >
> >       PR target/89229
> >       * config/i386/i386.md (*movoi_internal_avx, *movti_internal): Handle
> >       MODE_XI properly.
>
> Actually, I believe this shouldn't be needed, basically I think MODE_XI
> should never be the case for these instructions, because hard_regno_mode_ok
> shouldn't allow that:
>
>       /* AVX512VL allows sse regs16+ for 128/256 bit modes.  */
>       if (TARGET_AVX512VL
>           && (mode == OImode
>               || mode == TImode
>               || VALID_AVX256_REG_MODE (mode)
>               || VALID_AVX512VL_128_REG_MODE (mode)))
>         return true;
>
>       /* xmm16-xmm31 are only available for AVX-512.  */
>       if (EXT_REX_SSE_REGNO_P (regno))
>         return false;
>
> but then the question is if we really need:
> (and (not (match_test "TARGET_AVX512VL"))
>                     (ior (match_operand 0 "ext_sse_reg_operand")
>                          (match_operand 1 "ext_sse_reg_operand")))
>                  (const_string "XI")
> on both of the instructions, not avx512vl, the above shouldn't allow
> ext_sse_reg_operand through with OImode or TImode.
> We still need the MODE_XI -> EXT_REX_SSE_REGNO_P patch H.J. posted.
>
>         Jakub

I believe all usages of

(ior (match_operand 0 "ext_sse_reg_operand")
      (match_operand 1 "ext_sse_reg_operand"))

should be checked.  I am not sure if they should be there at all.

-- 
H.J.

Reply via email to