From 4416420e14b7505355c2318a6bd09ae073551d36 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Thu, 16 Aug 2018 21:47:01 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.md | 45 ------------------------------------- 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,3 +1,8 @@ +2018-08-16 Segher Boessenkool + + * config/rs6000/rs6000.md (two unnamed define_insn and define_split): + Delete. + 2018-08-16 Segher Boessenkool * config/rs6000/altivec.md: Don't set length attribute to the default 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_internal1" [(set (match_operand:CCFP 0 "cc_reg_operand" "=y") -- 2.30.2