From 18b776e936e15310907e014e4e460d45d148bbf6 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Wed, 29 Nov 2017 23:30:24 +0100 Subject: [PATCH] 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 (*add3_carry_in_internal2): New. From-SVN: r255259 --- gcc/ChangeLog | 4 ++++ gcc/config/rs6000/rs6000.md | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8bc4a063697..62ca3dca421 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-11-29 Segher Boessenkool + + * config/rs6000/rs6000.md (*add3_carry_in_internal2): New. + 2017-11-29 Vladimir Makarov PR rtl-optimization/80818 diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index c9b35c9104a..12d5564d263 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -1915,6 +1915,16 @@ "adde %0,%1,%2" [(set_attr "type" "add")]) +(define_insn "*add3_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 "add3_carry_in_0" [(set (match_operand:GPR 0 "gpc_reg_operand" "=r") (plus:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")