From 3a3ca394a5f7a83b45eeb93f823c1887cbfd96fd Mon Sep 17 00:00:00 2001 From: segher Date: Wed, 29 Nov 2017 22:30:24 +0000 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255259 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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") -- 2.11.4.GIT