From 057e1eedac864342866393f260295b2c73718595 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Thu, 7 May 2020 18:31:27 -0500 Subject: [PATCH] rs6000: New insns setnbc and setnbcr setnbc[r] is like setbc[r], but it writes -1 instead of 1 to the GPR. 2020-05-07 Segher Boessenkool * config/rs6000/rs6000.md (*setnbc_signed_): New define_insn. (*setnbcr_signed_): New define_insn. (*neg_eq_): Avoid for TARGET_FUTURE; add missing && 1. (*neg_ne_): Likewise. --- gcc/ChangeLog | 8 ++++++++ gcc/config/rs6000/rs6000.md | 27 +++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a161162591f..36226e00fc0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2020-05-07 Segher Boessenkool + + * config/rs6000/rs6000.md (*setnbc_signed_): New + define_insn. + (*setnbcr_signed_): New define_insn. + (*neg_eq_): Avoid for TARGET_FUTURE; add missing && 1. + (*neg_ne_): Likewise. + 2020-05-07 Segher Boessenkool * config/rs6000/rs6000.md (setbc_signed_): New diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index e8dc576779a..c02c2e1de72 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5157,6 +5157,25 @@ "setbcr %0,%j1" [(set_attr "type" "isel")]) +; Set Negative Boolean Condition (Reverse) +(define_insn "*setnbc_signed_" + [(set (match_operand:GPR 0 "gpc_reg_operand" "=r") + (neg:GPR (match_operator:GPR 1 "scc_comparison_operator" + [(match_operand:CCEITHER 2 "cc_reg_operand" "y") + (const_int 0)])))] + "TARGET_FUTURE" + "setnbc %0,%j1" + [(set_attr "type" "isel")]) + +(define_insn "*setnbcr_signed_" + [(set (match_operand:GPR 0 "gpc_reg_operand" "=r") + (neg:GPR (match_operator:GPR 1 "scc_rev_comparison_operator" + [(match_operand:CCEITHER 2 "cc_reg_operand" "y") + (const_int 0)])))] + "TARGET_FUTURE" + "setnbcr %0,%j1" + [(set_attr "type" "isel")]) + ;; Floating point conditional move (define_expand "movcc" [(set (match_operand:SFDF 0 "gpc_reg_operand") @@ -12062,9 +12081,9 @@ (clobber (match_scratch:P 3 "=r")) (clobber (match_scratch:P 4 "=r")) (clobber (reg:P CA_REGNO))] - "" + "!TARGET_FUTURE" "#" - "" + "&& 1" [(parallel [(set (match_dup 4) (plus:P (match_dup 3) (const_int -1))) @@ -12094,9 +12113,9 @@ (clobber (match_scratch:P 3 "=r")) (clobber (match_scratch:P 4 "=r")) (clobber (reg:P CA_REGNO))] - "" + "!TARGET_FUTURE" "#" - "" + "&& 1" [(parallel [(set (match_dup 4) (neg:P (match_dup 3))) (set (reg:P CA_REGNO) -- 2.30.2