x86inc: allow manual use of WIN64_SPILL_XMM.

Functions using INIT_MMX may still access XMM registers through direct
means (xmm0-15). Therefore, they still need to be marked for clobber
so they can be properly saved/restored.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
Henrik Gramner 2012-02-04 00:28:46 -08:00 committed by Ronald S. Bultje
parent 314af0ff94
commit 9cf7385309

View File

@ -290,7 +290,11 @@ DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56]
push r5 push r5
%assign stack_offset stack_offset+16 %assign stack_offset stack_offset+16
%endif %endif
WIN64_SPILL_XMM %3 %if mmsize == 8
%assign xmm_regs_used 0
%else
WIN64_SPILL_XMM %3
%endif
LOAD_IF_USED 4, %1 LOAD_IF_USED 4, %1
LOAD_IF_USED 5, %1 LOAD_IF_USED 5, %1
LOAD_IF_USED 6, %1 LOAD_IF_USED 6, %1
@ -299,9 +303,6 @@ DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56]
%macro WIN64_SPILL_XMM 1 %macro WIN64_SPILL_XMM 1
%assign xmm_regs_used %1 %assign xmm_regs_used %1
%if mmsize == 8
%assign xmm_regs_used 0
%endif
ASSERT xmm_regs_used <= 16 ASSERT xmm_regs_used <= 16
%if xmm_regs_used > 6 %if xmm_regs_used > 6
sub rsp, (xmm_regs_used-6)*16+16 sub rsp, (xmm_regs_used-6)*16+16