diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2003-12-06 14:14:52 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2003-12-06 14:14:52 +0000 |
commit | e25c906af1f1022337e330728f3d46682216dbbc (patch) | |
tree | 1fd0be67fcc921227612cb16c13dd026719cc33d | |
parent | 439020ecbc43be30c9e7b16824a0001dab286f3b (diff) | |
download | gcc-e25c906af1f1022337e330728f3d46682216dbbc.zip gcc-e25c906af1f1022337e330728f3d46682216dbbc.tar.gz gcc-e25c906af1f1022337e330728f3d46682216dbbc.tar.bz2 |
* arm.md (IOR (COMPARISON) (AND)): New define_splits.
From-SVN: r74366
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 38 |
2 files changed, 42 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67e19d8..89d0735 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-12-06 Richard Earnshaw <reanrsha@arm.com> + + * arm.md (IOR (COMPARISON) (AND)): New define_splits. + 2003-12-06 Kelley Cook <kcook@gcc.gnu.org> * Makefile.in (program_transform_cross_name): Delete. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 17a3770..3c4dffc 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -7983,6 +7983,44 @@ [(set_attr "conds" "clob") (set_attr "length" "20")]) +(define_split + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (ior:SI + (and:SI (match_operand:SI 0 "s_register_operand" "") + (const_int 1)) + (match_operator:SI 1 "comparison_operator" + [(match_operand:SI 2 "s_register_operand" "") + (match_operand:SI 3 "arm_add_operand" "")])) + (const_int 0))) + (clobber (match_operand:SI 4 "s_register_operand" ""))] + "TARGET_ARM" + [(set (match_dup 4) + (ior:SI (match_op_dup 1 [(match_dup 2) (match_dup 3)]) + (match_dup 0))) + (set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (and:SI (match_dup 4) (const_int 1)) + (const_int 0)))] + "") + +(define_split + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (ior:SI + (match_operator:SI 1 "comparison_operator" + [(match_operand:SI 2 "s_register_operand" "") + (match_operand:SI 3 "arm_add_operand" "")]) + (and:SI (match_operand:SI 0 "s_register_operand" "") + (const_int 1))) + (const_int 0))) + (clobber (match_operand:SI 4 "s_register_operand" ""))] + "TARGET_ARM" + [(set (match_dup 4) + (ior:SI (match_op_dup 1 [(match_dup 2) (match_dup 3)]) + (match_dup 0))) + (set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (and:SI (match_dup 4) (const_int 1)) + (const_int 0)))] + "") + (define_insn "*negscc" [(set (match_operand:SI 0 "s_register_operand" "=r") (neg:SI (match_operator 3 "arm_comparison_operator" |