Hi Jakub, On 04 May 21:43, Jakub Jelinek wrote: > Hi! > > This patch tweaks more define_insns at once, again all the insns > should be already in AVX512F or AVX512VL. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > 2016-05-04 Jakub Jelinek <ja...@redhat.com> > > * config/i386/sse.md (sse_shufps_<mode>, sse_storehps, sse_loadhps, > sse_storelps, sse_movss, avx2_vec_dup<mode>, avx2_vec_dupv8sf_1, > sse2_shufpd_<mode>, sse2_storehpd, sse2_storelpd, sse2_loadhpd, > sse2_loadlpd, sse2_movsd): Use v instead of x in vex or maybe_vex > alternatives, use maybe_evex instead of vex in prefix. > > ;; Avoid combining registers from different units in a single alternative, > ;; see comment above inline_secondary_memory_needed function in i386.c > (define_insn "sse2_storehpd" > - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x,x,*f,r") > + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,v,x,*f,r") > (vec_select:DF > - (match_operand:V2DF 1 "nonimmediate_operand" " x,0,x,o,o,o") > + (match_operand:V2DF 1 "nonimmediate_operand" " v,0,v,o,o,o") Same (as [1]) here. Testing this fix: @@ -8426,7 +8426,7 @@ ;; Avoid combining registers from different units in a single alternative, ;; see comment above inline_secondary_memory_needed function in i386.c (define_insn "sse2_storehpd" - [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,v,x,*f,r") + [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,Yv,x,*f,r") (vec_select:DF (match_operand:V2DF 1 "nonimmediate_operand" " v,0,v,o,o,o")
[1] - https://gcc.gnu.org/ml/gcc-patches/2016-05/msg00908.html -- Thanks, K