rs6000: Delete old add+cmp patterns
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 16 Aug 2018 19:47:01 +0000 (21:47 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 16 Aug 2018 19:47:01 +0000 (21:47 +0200)
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

gcc/ChangeLog
gcc/config/rs6000/rs6000.md

index cf134ccdd5047ea9c7936d4fff45c589a6df5156..38ef1fd4c8c83604b9afbc1b561cf192ab60c79d 100644 (file)
@@ -1,3 +1,8 @@
+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
index 50c264f0dc1b83a10b68e3c23e94b4b7aabee43e..c691952385169035f6297c213f4f942c48a62746 100644 (file)
   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")