diff mbox series

rs6000: Add second variant of adde

Message ID 1c14d1ae7148d3b01a3441960f90089b13838607.1511994173.git.segher@kernel.crashing.org
State New
Headers show
Series rs6000: Add second variant of adde | expand

Commit Message

Segher Boessenkool Nov. 29, 2017, 10:27 p.m. UTC
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.


Segher


2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>

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

---
 gcc/config/rs6000/rs6000.md | 10 ++++++++++
 1 file changed, 10 insertions(+)
diff mbox series

Patch

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 20b1581..7e91d54 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1915,6 +1915,16 @@  (define_insn "*add<mode>3_carry_in_internal"
   "adde %0,%1,%2"
   [(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"
   [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
 	(plus:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")