Paolo Bonzini <[EMAIL PROTECTED]> 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