Commit e0079468 by Paul Brook Committed by Paul Brook

arm.md (arm_addsi3): Add r/r/k alternative.

2009-02-02  Paul Brook  <paul@codesourcery.com>

	gcc/
	* config/arm/arm.md (arm_addsi3): Add r/r/k alternative.

From-SVN: r143874
parent eca72963
2009-02-02 Paul Brook <paul@codesourcery.com>
* config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
2009-02-02 Jakub Jelinek <jakub@redhat.com>
PR inline-asm/39058
......
......@@ -605,14 +605,18 @@
""
)
;; The r/r/k alternative is required when reloading the address
;; (plus (reg rN) (reg sp)) into (reg rN). In this case reload will
;; put the duplicated register first, and not try the commutative version.
(define_insn_and_split "*arm_addsi3"
[(set (match_operand:SI 0 "s_register_operand" "=r, !k,r, !k,r")
(plus:SI (match_operand:SI 1 "s_register_operand" "%rk,!k,rk,!k,rk")
(match_operand:SI 2 "reg_or_int_operand" "rI, rI,L, L,?n")))]
[(set (match_operand:SI 0 "s_register_operand" "=r, !k, r,r, !k,r")
(plus:SI (match_operand:SI 1 "s_register_operand" "%rk,!k, r,rk,!k,rk")
(match_operand:SI 2 "reg_or_int_operand" "rI, rI,!k,L, L,?n")))]
"TARGET_32BIT"
"@
add%?\\t%0, %1, %2
add%?\\t%0, %1, %2
add%?\\t%0, %2, %1
sub%?\\t%0, %1, #%n2
sub%?\\t%0, %1, #%n2
#"
......@@ -627,7 +631,7 @@
operands[1], 0);
DONE;
"
[(set_attr "length" "4,4,4,4,16")
[(set_attr "length" "4,4,4,4,4,16")
(set_attr "predicable" "yes")]
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment