[PATCH] Improve other 13 define_insns

Jakub Jelinek jakub@redhat.com
Thu May 12 18:42:00 GMT 2016


On Thu, May 12, 2016 at 05:20:02PM +0300, Kirill Yukhin wrote:
> > 2016-05-04  Jakub Jelinek  <jakub@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")
> 
> 

Sorry for that, yes, this is needed.

	Jakub



More information about the Gcc-patches mailing list