From 68bf4455117c0ee957fe4931142f81b97525a713 Mon Sep 17 00:00:00 2001 From: rth Date: Tue, 13 Apr 1999 14:28:39 +0000 Subject: [PATCH] Jan Hubicka * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26408 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/i386.md | 51 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9cdc3f422e0..94ec1361820 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Apr 13 14:26:31 1999 Jan Hubicka + + * 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 * i386.md: Do not output mov %0,reg on AMD K6. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7e143ac197c..02256d4ea6c 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -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" "") -- 2.11.0