------- Comment #11 from hjl at lucon dot org  2007-04-05 20:06 -------
(In reply to comment #10)
> (In reply to comment #9)
> > (In reply to comment #8)
> > 
> > > > Please also change operands 1 and 2 of sdot_prodv8hi expander to
> > > > register_operand to avoid further suprises.
> > > > 
> > > 
> > > I am not sure if there is an issue since op0 of sse2_pmaddwd must be
> > > register and it must be the same as op1 or op2.
> > 
> > But only after reload. Nothing prevents gcc to generate two MEM input 
> > operands.
> > Although reload will fix this by putting one of input operands into register
> > (and match it with output operand), but this will be too late for any
> > pre-reload pass to make any optimization on inputs.
> > 
> 
> Will something like
> 
> --- sse.md.pmaddwd      2007-04-04 17:44:43.000000000 -0700
> +++ sse.md      2007-04-05 12:02:28.000000000 -0700
> @@ -3044,7 +3044,7 @@
>     (match_operand:V8HI 1 "nonimmediate_operand" "")
>     (match_operand:V8HI 2 "nonimmediate_operand" "")
>     (match_operand:V4SI 3 "register_operand" "")]
> -  "TARGET_SSE2"
> +  "TARGET_SSE && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
>  {
>    rtx t = gen_reg_rtx (V4SImode);
>    emit_insn (gen_sse2_pmaddwd (t, operands[1], operands[2]));
> 
> work?
> 

It doesn't work.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31478

Reply via email to