aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2010-08-30 15:40:36 +0200
committerUros Bizjak <uros@gcc.gnu.org>2010-08-30 15:40:36 +0200
commit3727f43413cd6b5d708977fec7d21a010efccedd (patch)
tree92e5a43785ef992209d5f1e13bd2f7bc7654b0e6 /gcc
parent66194a987634c42eaa7be0118ce34f4145abe609 (diff)
downloadgcc-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.md35
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