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 /gcc/config/rs6000/rs6000.md | |
parent | f2ab3baca4933fb9e7d34a1859ae11384c3d81dc (diff) | |
download | gcc-527467c8c6925b2c58b82a3b4ea47aa94597e276.tar.gz |
* 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
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 26 |
1 files changed, 9 insertions, 17 deletions
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 |