(define_insn "movsf_push"
[(set (match_operand:SF 0 "push_operand" "=<,<")
(match_operand:SF 1 "general_operand" "*rfF,m"))]
- "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed"
+ "TARGET_PUSH_MEMORY || GET_CODE (operands[1]) != MEM
+ || reload_in_progress || reload_completed"
"*
{
if (STACK_REG_P (operands[1]))
return AS1 (push%L0,%1);
}")
-(define_insn "movsf_push_memory"
- [(set (match_operand:SF 0 "push_operand" "=<")
- (match_operand:SF 1 "memory_operand" "m"))]
- "TARGET_PUSH_MEMORY"
- "* return AS1 (push%L0,%1);")
+(define_split
+ [(set (match_operand:SF 0 "push_operand" "")
+ (match_operand:SF 1 "general_operand" ""))]
+ "reload_completed && STACK_REG_P (operands[1])"
+ [(set (reg:SI 7)
+ (minus:SI (reg:SI 7) (const_int 4)))
+ (set (mem:SF (reg:SI 7))
+ (match_dup 1))]
+ "")
(define_expand "movsf"
[(set (match_operand:SF 0 "general_operand" "")
(define_insn "movdf_push"
[(set (match_operand:DF 0 "push_operand" "=<,<")
(match_operand:DF 1 "general_operand" "*rfF,o"))]
- "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed"
+ "TARGET_PUSH_MEMORY || GET_CODE (operands[1]) != MEM
+ || reload_in_progress || reload_completed"
"*
{
if (STACK_REG_P (operands[1]))
return output_move_double (operands);
}")
-(define_insn "movdf_push_memory"
- [(set (match_operand:DF 0 "push_operand" "=<")
- (match_operand:DF 1 "memory_operand" "o"))]
- "TARGET_PUSH_MEMORY"
- "* return output_move_pushmem (operands, insn, GET_MODE_SIZE (DFmode),0,0);")
+(define_split
+ [(set (match_operand:DF 0 "push_operand" "")
+ (match_operand:DF 1 "register_operand" ""))]
+ "reload_completed && STACK_REG_P (operands[1])"
+ [(set (reg:SI 7)
+ (minus:SI (reg:SI 7) (const_int 8)))
+ (set (mem:DF (reg:SI 7))
+ (match_dup 1))]
+ "")
(define_expand "movdf"
[(set (match_operand:DF 0 "general_operand" "")
(define_insn "movxf_push"
[(set (match_operand:XF 0 "push_operand" "=<,<")
(match_operand:XF 1 "general_operand" "*rfF,o"))]
- "GET_CODE (operands[1]) != MEM || reload_in_progress || reload_completed"
+ "TARGET_PUSH_MEMORY || GET_CODE (operands[1]) != MEM
+ || reload_in_progress || reload_completed"
"*
{
if (STACK_REG_P (operands[1]))
return output_move_double (operands);
}")
-(define_insn "movxf_push_memory"
- [(set (match_operand:XF 0 "push_operand" "=<")
- (match_operand:XF 1 "memory_operand" "o"))]
- "TARGET_PUSH_MEMORY"
- "* return output_move_pushmem (operands, insn, GET_MODE_SIZE (XFmode),0,0);")
+(define_split
+ [(set (match_operand:XF 0 "push_operand" "")
+ (match_operand:XF 1 "register_operand" ""))]
+ "reload_completed && STACK_REG_P (operands[1])"
+ [(set (reg:SI 7)
+ (minus:SI (reg:SI 7) (const_int 12)))
+ (set (mem:XF (reg:SI 7))
+ (match_dup 1))]
+ "")
(define_expand "movxf"
[(set (match_operand:XF 0 "general_operand" "")