diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2010-08-30 15:40:36 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2010-08-30 15:40:36 +0200 |
commit | 3727f43413cd6b5d708977fec7d21a010efccedd (patch) | |
tree | 92e5a43785ef992209d5f1e13bd2f7bc7654b0e6 /gcc | |
parent | 66194a987634c42eaa7be0118ce34f4145abe609 (diff) | |
download | gcc-3727f43413cd6b5d708977fec7d21a010efccedd.zip gcc-3727f43413cd6b5d708977fec7d21a010efccedd.tar.gz gcc-3727f43413cd6b5d708977fec7d21a010efccedd.tar.bz2 |
* Move compare peephole2 to a better place.
From-SVN: r163645
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386.md | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2f28873..c59d97e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -17170,24 +17170,6 @@ (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int 4)))])] "") -;; Convert compares with 1 to shorter inc/dec operations when CF is not -;; required and register dies. Similarly for 128 to -128. -(define_peephole2 - [(set (match_operand 0 "flags_reg_operand" "") - (match_operator 1 "compare_operator" - [(match_operand 2 "register_operand" "") - (match_operand 3 "const_int_operand" "")]))] - "(((!TARGET_FUSE_CMP_AND_BRANCH || optimize_insn_for_size_p ()) - && incdec_operand (operands[3], GET_MODE (operands[3]))) - || (!TARGET_FUSE_CMP_AND_BRANCH - && INTVAL (operands[3]) == 128)) - && ix86_match_ccmode (insn, CCGCmode) - && peep2_reg_dead_p (1, operands[2])" - [(parallel [(set (match_dup 0) - (match_op_dup 1 [(match_dup 2) (match_dup 3)])) - (clobber (match_dup 2))])] - "") - (define_peephole2 [(match_scratch:DI 0 "r") (parallel [(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -8))) @@ -17303,6 +17285,23 @@ (set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int 8)))])] "") +;; Convert compares with 1 to shorter inc/dec operations when CF is not +;; required and register dies. Similarly for 128 to -128. +(define_peephole2 + [(set (match_operand 0 "flags_reg_operand" "") + (match_operator 1 "compare_operator" + [(match_operand 2 "register_operand" "") + (match_operand 3 "const_int_operand" "")]))] + "(((!TARGET_FUSE_CMP_AND_BRANCH || optimize_insn_for_size_p ()) + && incdec_operand (operands[3], GET_MODE (operands[3]))) + || (!TARGET_FUSE_CMP_AND_BRANCH + && INTVAL (operands[3]) == 128)) + && ix86_match_ccmode (insn, CCGCmode) + && peep2_reg_dead_p (1, operands[2])" + [(parallel [(set (match_dup 0) + (match_op_dup 1 [(match_dup 2) (match_dup 3)])) + (clobber (match_dup 2))])]) + ;; Convert imul by three, five and nine into lea (define_peephole2 [(parallel |