From: Segher Boessenkool Date: Thu, 16 Aug 2018 19:47:01 +0000 (+0200) Subject: rs6000: Delete old add+cmp patterns X-Git-Tag: basepoints/gcc-10~4722 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4416420e14b7505355c2318a6bd09ae073551d36;p=thirdparty%2Fgcc.git 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 --- 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")