Commit 4416420e by Segher Boessenkool Committed by Segher Boessenkool

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
parent b24a46be
2018-08-16 Segher Boessenkool <segher@kernel.crashing.org> 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 * config/rs6000/altivec.md: Don't set length attribute to the default
value. value.
* config/rs6000/darwin.md: Ditto. * config/rs6000/darwin.md: Ditto.
......
...@@ -11581,51 +11581,6 @@ ...@@ -11581,51 +11581,6 @@
operands[10] = GEN_INT (sextc); 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 ;; Only need to compare second words if first words equal
(define_insn "*cmp<mode>_internal1" (define_insn "*cmp<mode>_internal1"
[(set (match_operand:CCFP 0 "cc_reg_operand" "=y") [(set (match_operand:CCFP 0 "cc_reg_operand" "=y")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment