From: rearnsha Date: Sun, 3 Apr 2005 14:41:22 +0000 (+0000) Subject: PR target/14812 X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=aed179aedce82549f7625c95b0a1d5de5e5c8552 PR target/14812 * arm.md (addsi3_compare0_for_combiner): Delete. (addsi3_compare0_scratch_for_combiner): Delete. (cmpsi_neg_shiftsi): Delete. (compare_negsi_si): New pattern. (cmpsi_negshiftsi_si): New pattern. (negated_cbranchsi4): Restrict to equality_operator. * arm.md (movhi_insn_arch4): delete trailing white space from assembler template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97493 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ca63df1b4f..96e632e911f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2005-04-03 Richard Earnshaw + + PR target/14812 + * arm.md (addsi3_compare0_for_combiner): Delete. + (addsi3_compare0_scratch_for_combiner): Delete. + (cmpsi_neg_shiftsi): Delete. + (compare_negsi_si): New pattern. + (cmpsi_negshiftsi_si): New pattern. + (negated_cbranchsi4): Restrict to equality_operator. + + * arm.md (movhi_insn_arch4): delete trailing white space from assembler + template. + 2005-04-03 Kazu Hirata * cfghooks.c, cfgrtl.c, modulo-sched.c, config/i386/winnt.c: diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 1a1c06a0398..a4f914aa4c7 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -571,32 +571,13 @@ [(set_attr "conds" "set")] ) -;; These patterns are the same ones as the two regular addsi3_compare0 -;; patterns, except we write them slightly different - the combiner -;; tends to generate them this way. -(define_insn "*addsi3_compare0_for_combiner" - [(set (reg:CC CC_REGNUM) - (compare:CC - (match_operand:SI 1 "s_register_operand" "r,r") - (neg:SI (match_operand:SI 2 "arm_add_operand" "rI,L")))) - (set (match_operand:SI 0 "s_register_operand" "=r,r") - (plus:SI (match_dup 1) (match_dup 2)))] - "TARGET_ARM" - "@ - add%?s\\t%0, %1, %2 - sub%?s\\t%0, %1, #%n2" - [(set_attr "conds" "set")] -) - -(define_insn "*addsi3_compare0_scratch_for_combiner" - [(set (reg:CC CC_REGNUM) - (compare:CC - (match_operand:SI 0 "s_register_operand" "r,r") - (neg:SI (match_operand:SI 1 "arm_add_operand" "rI,L"))))] +(define_insn "*compare_negsi_si" + [(set (reg:CC_Z CC_REGNUM) + (compare:CC_Z + (neg:SI (match_operand:SI 0 "s_register_operand" "r")) + (match_operand:SI 1 "s_register_operand" "r")))] "TARGET_ARM" - "@ - cmn%?\\t%0, %1 - cmp%?\\t%0, #%n1" + "cmn%?\\t%1, %0" [(set_attr "conds" "set")] ) @@ -4861,7 +4842,7 @@ "@ mov%?\\t%0, %1\\t%@ movhi mvn%?\\t%0, #%B1\\t%@ movhi - str%?h\\t%1, %0\\t%@ movhi + str%?h\\t%1, %0\\t%@ movhi ldr%?h\\t%0, %1\\t%@ movhi" [(set_attr "type" "*,*,store1,load1") (set_attr "predicable" "yes") @@ -5777,7 +5758,7 @@ (define_insn "*negated_cbranchsi4" [(set (pc) (if_then_else - (match_operator 0 "arm_comparison_operator" + (match_operator 0 "equality_operator" [(match_operand:SI 1 "s_register_operand" "l") (neg:SI (match_operand:SI 2 "s_register_operand" "l"))]) (label_ref (match_operand 3 "" "")) @@ -6724,19 +6705,19 @@ (const_string "alu_shift_reg")))] ) -(define_insn "*cmpsi_neg_shiftsi" - [(set (reg:CC CC_REGNUM) - (compare:CC (match_operand:SI 0 "s_register_operand" "r") - (neg:SI (match_operator:SI 3 "shift_operator" - [(match_operand:SI 1 "s_register_operand" "r") - (match_operand:SI 2 "arm_rhs_operand" "rM")]))))] +(define_insn "*cmpsi_negshiftsi_si" + [(set (reg:CC_Z CC_REGNUM) + (compare:CC_Z + (neg:SI (match_operator:SI 1 "shift_operator" + [(match_operand:SI 2 "s_register_operand" "r") + (match_operand:SI 3 "reg_or_int_operand" "rM")])) + (match_operand:SI 0 "s_register_operand" "r")))] "TARGET_ARM" - "cmn%?\\t%0, %1%S3" + "cmn%?\\t%0, %2%S1" [(set_attr "conds" "set") - (set_attr "shift" "1") - (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") + (const_string "alu_shift") + (const_string "alu_shift_reg")))] ) ;; Cirrus SF compare instruction