2012-03-08 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/arm/arm.md (one_cmpldi2): Add NEON support.
---
gcc/config/arm/arm.md | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
@@ -4207,11 +4207,16 @@
"")
(define_insn_and_split "one_cmpldi2"
- [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
- (not:DI (match_operand:DI 1 "s_register_operand" "0,r")))]
+ [(set (match_operand:DI 0 "s_register_operand" "=w,&r,&r,?w")
+ (not:DI (match_operand:DI 1 "s_register_operand" " w, 0, r, w")))]
"TARGET_32BIT"
- "#"
- "TARGET_32BIT && reload_completed"
+ "@
+ vmvn\t%P0, %P1
+ #
+ #
+ vmvn\t%P0, %P1"
+ "TARGET_32BIT && reload_completed
+ && arm_general_register_operand (operands[0], DImode)"
[(set (match_dup 0) (not:SI (match_dup 1)))
(set (match_dup 2) (not:SI (match_dup 3)))]
"
@@ -4221,8 +4226,17 @@
operands[3] = gen_highpart (SImode, operands[1]);
operands[1] = gen_lowpart (SImode, operands[1]);
}"
- [(set_attr "length" "8")
- (set_attr "predicable" "yes")]
+ [(set_attr "length" "*,8,8,*")
+ (set_attr "predicable" "yes")
+ (set_attr "neon_type" "neon_int_1,*,*,neon_int_1")
+ (set_attr "arch" "nota8,*,*,onlya8")
+ (set_attr_alternative "insn_enabled"
+ [(if_then_else (match_test "TARGET_NEON")
+ (const_string "yes") (const_string "no"))
+ (const_string "yes")
+ (const_string "yes")
+ (if_then_else (match_test "TARGET_NEON")
+ (const_string "yes") (const_string "no"))])]
)
(define_expand "one_cmplsi2"