From 3727f43413cd6b5d708977fec7d21a010efccedd Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 30 Aug 2010 15:40:36 +0200 Subject: [PATCH] * Move compare peephole2 to a better place. From-SVN: r163645 --- gcc/config/i386/i386.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2f288733f98..c59d97ebb6a 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