From 82ba6a8e7e8be8714e0976805cf1423b5c885504 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Wed, 17 Jun 2015 17:18:03 +0200 Subject: [PATCH] rs6000.md (*cmp_internal1): Rename to... * config/rs6000/rs6000.md (*cmp_internal1): Rename to... (*cmp_signed): ... this. (*cmpsi_internal2, *cmpdi_internal2): Merge, rename to... (*cmp_unsigned): ... this. Remove %b. From-SVN: r224563 --- gcc/ChangeLog | 7 +++++++ gcc/config/rs6000/rs6000.md | 26 +++++++++----------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77af01c8cec..58a0a2bd717 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-06-17 Segher Boessenkool + + * config/rs6000/rs6000.md (*cmp_internal1): Rename to... + (*cmp_signed): ... this. + (*cmpsi_internal2, *cmpdi_internal2): Merge, rename to... + (*cmp_unsigned): ... this. Remove %b. + 2015-06-17 Andrew MacLeod * coretypes.h: Include input.h and as-a.h. diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 5d3e04be819..6a14ee8fd60 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -10714,7 +10714,7 @@ ;; Here are the actual compare insns. -(define_insn "*cmp_internal1" +(define_insn "*cmp_signed" [(set (match_operand:CC 0 "cc_reg_operand" "=y") (compare:CC (match_operand:GPR 1 "gpc_reg_operand" "r") (match_operand:GPR 2 "reg_or_short_operand" "rI")))] @@ -10722,6 +10722,14 @@ "cmp%I2 %0,%1,%2" [(set_attr "type" "cmp")]) +(define_insn "*cmp_unsigned" + [(set (match_operand:CCUNS 0 "cc_reg_operand" "=y") + (compare:CCUNS (match_operand:GPR 1 "gpc_reg_operand" "r") + (match_operand:GPR 2 "reg_or_u_short_operand" "rK")))] + "" + "cmpl%I2 %0,%1,%2" + [(set_attr "type" "cmp")]) + ;; If we are comparing a register for equality with a large constant, ;; we can do this with an XOR followed by a compare. But this is profitable ;; only if the large constant is only used for the comparison (and in this @@ -10766,22 +10774,6 @@ operands[10] = GEN_INT (sextc); }) -(define_insn "*cmpsi_internal2" - [(set (match_operand:CCUNS 0 "cc_reg_operand" "=y") - (compare:CCUNS (match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "reg_or_u_short_operand" "rK")))] - "" - "cmplw%I2 %0,%1,%b2" - [(set_attr "type" "cmp")]) - -(define_insn "*cmpdi_internal2" - [(set (match_operand:CCUNS 0 "cc_reg_operand" "=y") - (compare:CCUNS (match_operand:DI 1 "gpc_reg_operand" "r") - (match_operand:DI 2 "reg_or_u_short_operand" "rK")))] - "" - "cmpld%I2 %0,%1,%b2" - [(set_attr "type" "cmp")]) - ;; The following two insns don't exist as single insns, but if we provide ;; them, we can swap an add and compare, which will enable us to overlap more ;; of the required delay between a compare and branch. We generate code for -- 2.30.2