[PATCH], Improve moving SFmode to GPR on PowerPC, #2 of 8

Michael Meissner meissner@linux.vnet.ibm.com
Tue Sep 26 17:59:00 GMT 2017


On Tue, Sep 26, 2017 at 11:06:09AM -0500, Segher Boessenkool wrote:
> > @@ -6850,52 +6850,41 @@ (define_insn_and_split "movsi_from_sf"
> >    rtx op1 = operands[1];
> >    rtx op2 = operands[2];
> >    rtx op0_di = gen_rtx_REG (DImode, REGNO (op0));
> > +  rtx op2_si = gen_rtx_REG (SImode, REGNO (op2));
> >  
> 
> Does this work, btw?  I would expect you need reg_or_subregno, for op0
> that is (the new op2 might be fine, not sure).  You do use it in most
> places; please check.

It does work, but using reg_or_subreno is better.  I've changed it.

> >  ;; movsi_from_sf with zero extension
> >  ;;
> >  ;;		RLDICL       LWZ          LFIWZX       LXSIWZX   VSX->GPR
> > -;;		MTVSRWZ      VSX->VSX
> > +;;		VSX->VSX     MTVSRWZ
> >  
> >  (define_insn_and_split "*movdi_from_sf_zero_ext"
> >    [(set (match_operand:DI 0 "gpc_reg_operand"
> >  		"=r,         r,           ?*wI,        ?*wH,     r,
> > -		wIwH,        ?wK")
> > +		 wK,         wIwH")
> 
> This loses the "?", is that on purpose?

No.  I'll put it back (but I do think it is harmless, since the direct move
occurs before it).  In my original patches, I just left the value in a vector
register, and let the register allocator generate the direct move.  However,
when I updated the peephole2 (patch #7), it was a lot easier to write, if I
kept in the direct move option.  But I missed putting the '?' back in.
Thanks.

> >    [(set_attr "type"
> >  		"*,          load,        fpload,      fpload,  mftgpr,
> > -		 mffgpr,     veclogical")
> > +		 vecexts,    mffgpr")
> 
> vecsimple or vecfloat I guess, not vecexts.  We have no way of describing
> it exactly, of course.  Maybe just "two".

Ok.

> Okay for trunk with those things taken care of.  Thanks!

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797



More information about the Gcc-patches mailing list