This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [MIPS] MADD issue


Paolo Bonzini <paolo.bonzini@lu.unisi.ch> writes:

> > (define_insn "adddi3_internal_1"
> >   [(set (match_operand:DI 0 "register_operand" "=d,&d")
> >         (plus:DI (match_operand:DI 1 "register_operand" "0,d")
> >                  (match_operand:DI 2 "register_operand" "d,d")))
> >    (clobber (match_operand:SI 3 "register_operand" "=d,d"))]
> >   "!TARGET_64BIT && !TARGET_DEBUG_G_MODE && !TARGET_MIPS16"
> > {
> >   return (REGNO (operands[0]) == REGNO (operands[1])
> >           && REGNO (operands[0]) == REGNO (operands[2]))
> >     ? "srl\t%3,%L0,31\;sll\t%M0,%M0,1\;sll\t%L0,%L1,1\;addu\t%M0,%M0,%3"
> >     : "addu\t%L0,%L1,%L2\;sltu\t%3,%L0,%L2\;addu\t%M0,%M1,%M2\;addu\t%M0,%M0,%3";
> > }
> 
> This should be a post-reload (i.e. predicated on reload_completed)
> split, I think.

Actually, with the relatively recent lower-subreg work, it is
desirable to split this sort of instruction before reload.  That is,
do an unconditional split.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]