summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2018-08-16 21:47:01 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2018-08-16 21:47:01 +0200
commit4416420e14b7505355c2318a6bd09ae073551d36 (patch)
tree0ddf72df6882d27de4fc77f08f4988b831b1ab85
parentb24a46beddca2278e1879b1ed5086bfd957eebb7 (diff)
downloadgcc-4416420e14b7505355c2318a6bd09ae073551d36.tar.gz
rs6000: Delete old add+cmp patterns
There are some patterns that recognise the parallel of an add and a compare, and split it back to the same two insns. This apparently helped RIOS machines before RTL scheduling existed? Either way, it isn't helpful anymore, and even hurts a tiny bit. So, delete it. * config/rs6000/rs6000.md (two unnamed define_insn and define_split): Delete. From-SVN: r263604
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.md45
2 files changed, 5 insertions, 45 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cf134ccdd50..38ef1fd4c8c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
+ * config/rs6000/rs6000.md (two unnamed define_insn and define_split):
+ Delete.
+
+2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
+
* config/rs6000/altivec.md: Don't set length attribute to the default
value.
* config/rs6000/darwin.md: Ditto.
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 50c264f0dc1..c6919523851 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11581,51 +11581,6 @@
operands[10] = GEN_INT (sextc);
})
-;; 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
-;; them by splitting.
-
-(define_insn ""
- [(set (match_operand:CC 3 "cc_reg_operand" "=y")
- (compare:CC (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "short_cint_operand" "i")))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))]
- ""
- "#"
- [(set_attr "length" "8")])
-
-(define_insn ""
- [(set (match_operand:CCUNS 3 "cc_reg_operand" "=y")
- (compare:CCUNS (match_operand:SI 1 "gpc_reg_operand" "r")
- (match_operand:SI 2 "u_short_cint_operand" "i")))
- (set (match_operand:SI 0 "gpc_reg_operand" "=r")
- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))]
- ""
- "#"
- [(set_attr "length" "8")])
-
-(define_split
- [(set (match_operand:CC 3 "cc_reg_operand")
- (compare:CC (match_operand:SI 1 "gpc_reg_operand")
- (match_operand:SI 2 "short_cint_operand")))
- (set (match_operand:SI 0 "gpc_reg_operand")
- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand")))]
- ""
- [(set (match_dup 3) (compare:CC (match_dup 1) (match_dup 2)))
- (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 4)))])
-
-(define_split
- [(set (match_operand:CCUNS 3 "cc_reg_operand")
- (compare:CCUNS (match_operand:SI 1 "gpc_reg_operand")
- (match_operand:SI 2 "u_short_cint_operand")))
- (set (match_operand:SI 0 "gpc_reg_operand")
- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand")))]
- ""
- [(set (match_dup 3) (compare:CCUNS (match_dup 1) (match_dup 2)))
- (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 4)))])
-
;; Only need to compare second words if first words equal
(define_insn "*cmp<mode>_internal1"
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y")