(set_attr "mode" "SI")
(set_attr "length_immediate" "1")])
+; The first alternative is used only to compute proper length of instruction.
+; Reload's algorithm does not take into account the cost of spill instructions
+; needed to free register in given class, so avoid it from choosing the first
+; alternative when eax is not available.
+
(define_insn "*movsi_1"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=*a,r,*a,m,!*y,!rm,!*y,!*Y,!rm,!*Y")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=*?a,r,*?a,m,!*y,!rm,!*y,!*Y,!rm,!*Y")
(match_operand:SI 1 "general_operand" "im,rinm,rinm,rin,rm,*y,*y,rm,*Y,*Y"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{
[(set_attr "type" "push")
(set_attr "mode" "QI")])
+; The first alternative is used only to compute proper length of instruction.
+; Reload's algorithm does not take into account the cost of spill instructions
+; needed to free register in given class, so avoid it from choosing the first
+; alternative when eax is not available.
+
(define_insn "*movhi_1"
- [(set (match_operand:HI 0 "nonimmediate_operand" "=*a,r,r,*a,r,m")
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=*?a,r,r,*?a,r,m")
(match_operand:HI 1 "general_operand" "i,r,rn,rm,rm,rn"))]
"GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM"
{