rs6000: Add second variant of adde

This adds a second variant of the adde insn pattern, this one with the
CA register as the second operand.  The existing pattern has it as the
third operand.  It would be ideal if RTL was always canonicalised like
that, but it isn't (and that is not trivial), and this is a simple and
harmless patch.


	* config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.

From-SVN: r255259
This commit is contained in:
Segher Boessenkool 2017-11-29 23:30:24 +01:00 committed by Segher Boessenkool
parent 561c58b4d9
commit 18b776e936
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2017-11-29 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
2017-11-29 Vladimir Makarov <vmakarov@redhat.com> 2017-11-29 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/80818 PR rtl-optimization/80818

View File

@ -1915,6 +1915,16 @@
"adde %0,%1,%2" "adde %0,%1,%2"
[(set_attr "type" "add")]) [(set_attr "type" "add")])
(define_insn "*add<mode>3_carry_in_internal2"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(plus:GPR (plus:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
(reg:GPR CA_REGNO))
(match_operand:GPR 2 "gpc_reg_operand" "r")))
(clobber (reg:GPR CA_REGNO))]
""
"adde %0,%1,%2"
[(set_attr "type" "add")])
(define_insn "add<mode>3_carry_in_0" (define_insn "add<mode>3_carry_in_0"
[(set (match_operand:GPR 0 "gpc_reg_operand" "=r") [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
(plus:GPR (match_operand:GPR 1 "gpc_reg_operand" "r") (plus:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")