This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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