diff options
author | Greta Yorsh <greta.yorsh@arm.com> | 2013-04-12 16:22:06 +0100 |
---|---|---|
committer | Greta Yorsh <gretay@gcc.gnu.org> | 2013-04-12 16:22:06 +0100 |
commit | 9a946fd66c0d8504a8360b19c07cfe19f70748cb (patch) | |
tree | 5b51f291a4a96dcc3998898c25dde1484d30289e /gcc/config/arm | |
parent | 0ea62378675fd1051cb45fbebf0df6ee69423128 (diff) | |
download | gcc-9a946fd66c0d8504a8360b19c07cfe19f70748cb.zip gcc-9a946fd66c0d8504a8360b19c07cfe19f70748cb.tar.gz gcc-9a946fd66c0d8504a8360b19c07cfe19f70748cb.tar.bz2 |
arm.md (mov_scc,mov_negscc,mov_notscc): Convert define_insn into define_insn_and_split and emit movsicc patterns.
2013-04-12 Greta Yorsh <Greta.Yorsh@arm.com>
* config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert
define_insn into define_insn_and_split and emit movsicc patterns.
From-SVN: r197925
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.md | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 073ee6b..4284535 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -8259,36 +8259,56 @@ operands[3] = const0_rtx;" ) -(define_insn "*mov_scc" +(define_insn_and_split "*mov_scc" [(set (match_operand:SI 0 "s_register_operand" "=r") (match_operator:SI 1 "arm_comparison_operator" [(match_operand 2 "cc_register" "") (const_int 0)]))] "TARGET_ARM" - "mov%D1\\t%0, #0\;mov%d1\\t%0, #1" + "#" ; "mov%D1\\t%0, #0\;mov%d1\\t%0, #1" + "TARGET_ARM" + [(set (match_dup 0) + (if_then_else:SI (match_dup 1) + (const_int 1) + (const_int 0)))] + "" [(set_attr "conds" "use") - (set_attr "insn" "mov") (set_attr "length" "8")] ) -(define_insn "*mov_negscc" +(define_insn_and_split "*mov_negscc" [(set (match_operand:SI 0 "s_register_operand" "=r") (neg:SI (match_operator:SI 1 "arm_comparison_operator" [(match_operand 2 "cc_register" "") (const_int 0)])))] "TARGET_ARM" - "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0" + "#" ; "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0" + "TARGET_ARM" + [(set (match_dup 0) + (if_then_else:SI (match_dup 1) + (match_dup 3) + (const_int 0)))] + { + operands[3] = GEN_INT (~0); + } [(set_attr "conds" "use") - (set_attr "insn" "mov") (set_attr "length" "8")] ) -(define_insn "*mov_notscc" +(define_insn_and_split "*mov_notscc" [(set (match_operand:SI 0 "s_register_operand" "=r") (not:SI (match_operator:SI 1 "arm_comparison_operator" [(match_operand 2 "cc_register" "") (const_int 0)])))] "TARGET_ARM" - "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + "#" ; "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + "TARGET_ARM" + [(set (match_dup 0) + (if_then_else:SI (match_dup 1) + (match_dup 3) + (match_dup 4)))] + { + operands[3] = GEN_INT (~1); + operands[4] = GEN_INT (~0); + } [(set_attr "conds" "use") - (set_attr "insn" "mov") (set_attr "length" "8")] ) |