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.