[PATCH 4/4] rs6000: Delete old add+cmp patterns
Segher Boessenkool
segher@kernel.crashing.org
Thu Aug 16 17:15:00 GMT 2018
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.
2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (two unnamed define_insn and define_split):
Delete.
---
gcc/config/rs6000/rs6000.md | 45 ---------------------------------------------
1 file changed, 45 deletions(-)
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 50c264f..c691952 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11581,51 +11581,6 @@ (define_peephole2
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")
--
1.8.3.1
More information about the Gcc-patches
mailing list