From e25c906af1f1022337e330728f3d46682216dbbc Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Sat, 6 Dec 2003 14:14:52 +0000 Subject: [PATCH] * arm.md (IOR (COMPARISON) (AND)): New define_splits. From-SVN: r74366 --- gcc/ChangeLog | 4 ++++ gcc/config/arm/arm.md | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67e19d898ed..89d0735e233 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-12-06 Richard Earnshaw + + * arm.md (IOR (COMPARISON) (AND)): New define_splits. + 2003-12-06 Kelley Cook * Makefile.in (program_transform_cross_name): Delete. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 17a37704e3d..3c4dffc9185 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" -- 2.30.2