aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2003-12-06 14:14:52 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2003-12-06 14:14:52 +0000
commite25c906af1f1022337e330728f3d46682216dbbc (patch)
tree1fd0be67fcc921227612cb16c13dd026719cc33d
parent439020ecbc43be30c9e7b16824a0001dab286f3b (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/config/arm/arm.md38
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"