diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2010-07-02 16:22:33 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2010-07-02 16:22:33 +0000 |
commit | 18e8200f7082b15957ee05829ce51a06c381b378 (patch) | |
tree | 3e2175e4e860e041e9dd2980eda39ad668e981e4 /gcc/config/arm/thumb2.md | |
parent | faeb4ee3aac0ece0f8619ba8c3a2908c6ed7b9c1 (diff) | |
download | gcc-18e8200f7082b15957ee05829ce51a06c381b378.zip gcc-18e8200f7082b15957ee05829ce51a06c381b378.tar.gz gcc-18e8200f7082b15957ee05829ce51a06c381b378.tar.bz2 |
re PR rtl-optimization/42835 (Missed merging common code sequence at the end of two basic blocks)
PR target/42835
* config/arm/arm-modes.def (CC_NOTB): New mode.
* config/arm/arm.c (get_arm_condition_code): Handle it.
* config/arm/thumb2.md (thumb2_compare_scc): Delete pattern.
* config/arm/arm.md (subsi3_compare0_c): New pattern.
(compare_scc): Now a define_and_split. Add a number of extra
splitters before it.
testsuite/
PR target/42835
* gcc.target/arm/pr42835.c: New test.
From-SVN: r161725
Diffstat (limited to 'gcc/config/arm/thumb2.md')
-rw-r--r-- | gcc/config/arm/thumb2.md | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 3985183..ac275ad 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -599,42 +599,6 @@ (set_attr "length" "6,10")] ) -(define_insn "*thumb2_compare_scc" - [(set (match_operand:SI 0 "s_register_operand" "=r,r") - (match_operator:SI 1 "arm_comparison_operator" - [(match_operand:SI 2 "s_register_operand" "r,r") - (match_operand:SI 3 "arm_add_operand" "rI,L")])) - (clobber (reg:CC CC_REGNUM))] - "TARGET_THUMB2" - "* - if (operands[3] == const0_rtx) - { - if (GET_CODE (operands[1]) == LT) - return \"lsr\\t%0, %2, #31\"; - - if (GET_CODE (operands[1]) == GE) - return \"mvn\\t%0, %2\;lsr\\t%0, %0, #31\"; - - if (GET_CODE (operands[1]) == EQ) - return \"rsbs\\t%0, %2, #1\;it\\tcc\;movcc\\t%0, #0\"; - } - - if (GET_CODE (operands[1]) == NE) - { - if (which_alternative == 1) - return \"adds\\t%0, %2, #%n3\;it\\tne\;movne\\t%0, #1\"; - return \"subs\\t%0, %2, %3\;it\\tne\;movne\\t%0, #1\"; - } - if (which_alternative == 1) - output_asm_insn (\"cmn\\t%2, #%n3\", operands); - else - output_asm_insn (\"cmp\\t%2, %3\", operands); - return \"ite\\t%D1\;mov%D1\\t%0, #0\;mov%d1\\t%0, #1\"; - " - [(set_attr "conds" "clob") - (set_attr "length" "14")] -) - (define_insn "*thumb2_cond_move" [(set (match_operand:SI 0 "s_register_operand" "=r,r,r") (if_then_else:SI (match_operator 3 "equality_operator" |