On Fri, 2013-08-16 at 19:11 +0200, Jakub Jelinek wrote:
> On Fri, Aug 16, 2013 at 12:06:56PM -0500, Peter Bergner wrote:
> > --- gcc/config/rs6000/dfp.md        (revision 201779)
> > +++ gcc/config/rs6000/dfp.md        (working copy)
> > @@ -135,8 +135,15 @@ (define_insn "*negtd2_fpr"
> >    [(set (match_operand:TD 0 "gpc_reg_operand" "=d")
> >     (neg:TD (match_operand:TD 1 "gpc_reg_operand" "d")))]
> >    "TARGET_HARD_FLOAT && TARGET_FPRS"
> > -  "fneg %0,%1"
> > -  [(set_attr "type" "fp")])
> > +  "*
> > +{
> > +  if (REGNO (operands[0]) == REGNO (operands[1]))
> > +    return \"fneg %0,%1\";
> > +  else
> > +    return \"fneg %0,%1\;fmr %L0,%L1\";
> > +}"
> > +  [(set_attr "type" "fp")
> > +   (set_attr "length" "8")])
> 
> Is the length right for the firt case though?
> I mean, shouldn't the insn have two alternatives:
> =d,d 0,d and length 4,8 ?

To be honest, I basically just cut/pasted the negtf2_internal pattern
without looking too closely, but I agree you are right.  I'll redo the
patch with your suggestion.  negtf2_internal always generates two insns,
so it doesn't need any changes.

Peter



Reply via email to