aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-17 15:18:03 +0000
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-17 15:18:03 +0000
commit527467c8c6925b2c58b82a3b4ea47aa94597e276 (patch)
tree4312059242d4e303ad8672bd0475b4a6427543b0
parentf2ab3baca4933fb9e7d34a1859ae11384c3d81dc (diff)
* config/rs6000/rs6000.md (*cmp<mode>_internal1): Rename to...
(*cmp<mode>_signed): ... this. (*cmpsi_internal2, *cmpdi_internal2): Merge, rename to... (*cmp<mode>_unsigned): ... this. Remove %b. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224563 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.md26
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 <segher@kernel.crashing.org>
+
+ * config/rs6000/rs6000.md (*cmp<mode>_internal1): Rename to...
+ (*cmp<mode>_signed): ... this.
+ (*cmpsi_internal2, *cmpdi_internal2): Merge, rename to...
+ (*cmp<mode>_unsigned): ... this. Remove %b.
+
2015-06-17 Andrew MacLeod <amacleod@redhat.com>
* 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<mode>_internal1"
+(define_insn "*cmp<mode>_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<wd>%I2 %0,%1,%2"
[(set_attr "type" "cmp")])
+(define_insn "*cmp<mode>_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<wd>%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