From 66bbd82f205161a3576b83fc67f03eb84f53e152 Mon Sep 17 00:00:00 2001 From: segher Date: Thu, 16 Aug 2018 19:47:01 +0000 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263604 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 cf134ccdd504..38ef1fd4c8c8 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 50c264f0dc1b..c69195238516 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.47.2