Commit 7fac69e5 by Richard Earnshaw Committed by Richard Earnshaw

arm.md (minmax_arithsi): Reject all eliminable registers, not just the frame and argument pointers.

	* arm.md (minmax_arithsi): Reject all eliminable registers, not just
	the frame and argument pointers.
	(strqi_preinc, strqi_predec, loadqi_preinc, loadqi_predec): Likewise.
	(loadqisi_preinc, loadqisi_predec, strsi_preinc): Likewise.
	(strsi_predec, loadsi_preinc, loadsi_predec): Likewise.
	(strqi_shiftpreinc, strqi_shiftpredec, loadqi_shiftpreinc): Likewise.
	(loadqi_shiftpredec, strsi_shiftpreinc, strsi_shiftpredec): Likewise.
	(loadsi_shiftpreinc, loadsi_shiftpredec): Likewise.

From-SVN: r97380
parent a34d3336
2005-04-01 Richard Earnshaw <richard.earnshaw@arm.com>
* arm.md (minmax_arithsi): Reject all eliminable registers, not just
the frame and argument pointers.
(strqi_preinc, strqi_predec, loadqi_preinc, loadqi_predec): Likewise.
(loadqisi_preinc, loadqisi_predec, strsi_preinc): Likewise.
(strsi_predec, loadsi_preinc, loadsi_predec): Likewise.
(strqi_shiftpreinc, strqi_shiftpredec, loadqi_shiftpreinc): Likewise.
(loadqi_shiftpredec, strsi_shiftpreinc, strsi_shiftpredec): Likewise.
(loadsi_shiftpreinc, loadsi_shiftpredec): Likewise.
2005-04-01 Danny Smith <dannysmith@users.sourceforge.net> 2005-04-01 Danny Smith <dannysmith@users.sourceforge.net>
* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Define, * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Define,
......
...@@ -2550,10 +2550,7 @@ ...@@ -2550,10 +2550,7 @@
(match_operand:SI 3 "arm_rhs_operand" "rI,rI")]) (match_operand:SI 3 "arm_rhs_operand" "rI,rI")])
(match_operand:SI 1 "s_register_operand" "0,?r")])) (match_operand:SI 1 "s_register_operand" "0,?r")]))
(clobber (reg:CC CC_REGNUM))] (clobber (reg:CC CC_REGNUM))]
"TARGET_ARM "TARGET_ARM && !arm_eliminable_register (operands[1])"
&& (GET_CODE (operands[1]) != REG
|| (REGNO(operands[1]) != FRAME_POINTER_REGNUM
&& REGNO(operands[1]) != ARG_POINTER_REGNUM))"
"* "*
{ {
enum rtx_code code = GET_CODE (operands[4]); enum rtx_code code = GET_CODE (operands[4]);
...@@ -9330,10 +9327,9 @@ ...@@ -9330,10 +9327,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))] (plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str%?b\\t%3, [%0, %2]!" "str%?b\\t%3, [%0, %2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9346,10 +9342,9 @@ ...@@ -9346,10 +9342,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str%?b\\t%3, [%0, -%2]!" "str%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9362,10 +9357,9 @@ ...@@ -9362,10 +9357,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))] (plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?b\\t%3, [%0, %2]!" "ldr%?b\\t%3, [%0, %2]!"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9378,10 +9372,9 @@ ...@@ -9378,10 +9372,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?b\\t%3, [%0, -%2]!" "ldr%?b\\t%3, [%0, -%2]!"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9395,10 +9388,9 @@ ...@@ -9395,10 +9388,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))] (plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?b\\t%3, [%0, %2]!\\t%@ z_extendqisi" "ldr%?b\\t%3, [%0, %2]!\\t%@ z_extendqisi"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9412,10 +9404,9 @@ ...@@ -9412,10 +9404,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?b\\t%3, [%0, -%2]!\\t%@ z_extendqisi" "ldr%?b\\t%3, [%0, -%2]!\\t%@ z_extendqisi"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9428,10 +9419,9 @@ ...@@ -9428,10 +9419,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))] (plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str%?\\t%3, [%0, %2]!" "str%?\\t%3, [%0, %2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9444,10 +9434,9 @@ ...@@ -9444,10 +9434,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"str%?\\t%3, [%0, -%2]!" "str%?\\t%3, [%0, -%2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9460,10 +9449,9 @@ ...@@ -9460,10 +9449,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(plus:SI (match_dup 1) (match_dup 2)))] (plus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?\\t%3, [%0, %2]!" "ldr%?\\t%3, [%0, %2]!"
[(set_attr "type" "load1") [(set_attr "type" "load1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9476,10 +9464,9 @@ ...@@ -9476,10 +9464,9 @@
(set (match_operand:SI 0 "s_register_operand" "=r") (set (match_operand:SI 0 "s_register_operand" "=r")
(minus:SI (match_dup 1) (match_dup 2)))] (minus:SI (match_dup 1) (match_dup 2)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& (GET_CODE (operands[2]) != REG && !arm_eliminable_register (operands[2])"
|| REGNO (operands[2]) != FRAME_POINTER_REGNUM)"
"ldr%?\\t%3, [%0, -%2]!" "ldr%?\\t%3, [%0, -%2]!"
[(set_attr "type" "load1") [(set_attr "type" "load1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9495,9 +9482,9 @@ ...@@ -9495,9 +9482,9 @@
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)]) (plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))] (match_dup 1)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"str%?b\\t%5, [%0, %3%S2]!" "str%?b\\t%5, [%0, %3%S2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9513,9 +9500,9 @@ ...@@ -9513,9 +9500,9 @@
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))] (match_dup 4)])))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"str%?b\\t%5, [%0, -%3%S2]!" "str%?b\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9531,9 +9518,9 @@ ...@@ -9531,9 +9518,9 @@
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)]) (plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))] (match_dup 1)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"ldr%?b\\t%5, [%0, %3%S2]!" "ldr%?b\\t%5, [%0, %3%S2]!"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9549,9 +9536,9 @@ ...@@ -9549,9 +9536,9 @@
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))] (match_dup 4)])))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"ldr%?b\\t%5, [%0, -%3%S2]!" "ldr%?b\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "load_byte") [(set_attr "type" "load_byte")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9567,9 +9554,9 @@ ...@@ -9567,9 +9554,9 @@
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)]) (plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))] (match_dup 1)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"str%?\\t%5, [%0, %3%S2]!" "str%?\\t%5, [%0, %3%S2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9585,9 +9572,9 @@ ...@@ -9585,9 +9572,9 @@
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))] (match_dup 4)])))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"str%?\\t%5, [%0, -%3%S2]!" "str%?\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "store1") [(set_attr "type" "store1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9603,9 +9590,9 @@ ...@@ -9603,9 +9590,9 @@
(plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)]) (plus:SI (match_op_dup 2 [(match_dup 3) (match_dup 4)])
(match_dup 1)))] (match_dup 1)))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"ldr%?\\t%5, [%0, %3%S2]!" "ldr%?\\t%5, [%0, %3%S2]!"
[(set_attr "type" "load1") [(set_attr "type" "load1")
(set_attr "predicable" "yes")] (set_attr "predicable" "yes")]
...@@ -9621,9 +9608,9 @@ ...@@ -9621,9 +9608,9 @@
(minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
(match_dup 4)])))] (match_dup 4)])))]
"TARGET_ARM "TARGET_ARM
&& REGNO (operands[0]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[0])
&& REGNO (operands[1]) != FRAME_POINTER_REGNUM && !arm_eliminable_register (operands[1])
&& REGNO (operands[3]) != FRAME_POINTER_REGNUM" && !arm_eliminable_register (operands[3])"
"ldr%?\\t%5, [%0, -%3%S2]!" "ldr%?\\t%5, [%0, -%3%S2]!"
[(set_attr "type" "load1") [(set_attr "type" "load1")
(set_attr "predicable" "yes")]) (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