Jan Hubicka <hubicka@freesoft.cz>

Jan Hubicka <hubicka@freesoft.cz>
        * i386.md (movsf_push): Handle memory to memory case too, new splitter.
        (movdf_push, movxf_push): Likewise.
        (movsf_push_memory, movdf_push_memory, movxf_push_memory): Remove.

From-SVN: r26408
This commit is contained in:
Jan Hubicka 1999-04-13 16:28:39 +02:00 committed by Richard Henderson
parent eba0e61dc2
commit f72b27a5f6
2 changed files with 39 additions and 18 deletions

View File

@ -1,3 +1,9 @@
Tue Apr 13 14:26:31 1999 Jan Hubicka <hubicka@freesoft.cz>
* i386.md (movsf_push): Handle memory to memory case too, new splitter.
(movdf_push, movxf_push): Likewise.
(movsf_push_memory, movdf_push_memory, movxf_push_memory): Remove.
Tue Apr 13 14:14:06 1999 Jan Hubicka <hubicka@freesoft.cz>
* i386.md: Do not output mov %0,reg on AMD K6.

View File

@ -1283,7 +1283,8 @@
(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]))
@ -1310,11 +1311,15 @@
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" "")
@ -1405,7 +1410,8 @@
(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]))
@ -1432,11 +1438,15 @@
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" "")
@ -1529,7 +1539,8 @@
(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]))
@ -1555,11 +1566,15 @@
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" "")