diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2015-06-17 17:18:03 +0200 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2015-06-17 17:18:03 +0200 |
commit | 82ba6a8e7e8be8714e0976805cf1423b5c885504 (patch) | |
tree | 4312059242d4e303ad8672bd0475b4a6427543b0 | |
parent | abb226c954fadee4955160f0952e12296fc4a25e (diff) | |
download | gcc-82ba6a8e7e8be8714e0976805cf1423b5c885504.zip gcc-82ba6a8e7e8be8714e0976805cf1423b5c885504.tar.gz gcc-82ba6a8e7e8be8714e0976805cf1423b5c885504.tar.bz2 |
rs6000.md (*cmp<mode>_internal1): Rename to...
* 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.
From-SVN: r224563
-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 77af01c..58a0a2b 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 5d3e04b..6a14ee8 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 |