diff options
author | segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-17 15:18:03 +0000 |
---|---|---|
committer | segher <segher@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-17 15:18:03 +0000 |
commit | 527467c8c6925b2c58b82a3b4ea47aa94597e276 (patch) | |
tree | 4312059242d4e303ad8672bd0475b4a6427543b0 | |
parent | f2ab3baca4933fb9e7d34a1859ae11384c3d81dc (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/ChangeLog | 7 | ||||
-rw-r--r-- | 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 <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 |