mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-20 06:11:04 +00:00
x86inc: Remove argument from WIN64_RESTORE_XMM
The use of rsp was pretty much hardcoded there and probably didn't work otherwise with stack_size > 0.
This commit is contained in:
parent
cd4ca82459
commit
d991b3e8a8
@ -475,41 +475,42 @@ DECLARE_REG 14, R13, 120
|
||||
WIN64_PUSH_XMM
|
||||
%endmacro
|
||||
|
||||
%macro WIN64_RESTORE_XMM_INTERNAL 1
|
||||
%macro WIN64_RESTORE_XMM_INTERNAL 0
|
||||
%assign %%pad_size 0
|
||||
%if xmm_regs_used > 8
|
||||
%assign %%i xmm_regs_used
|
||||
%rep xmm_regs_used-8
|
||||
%assign %%i %%i-1
|
||||
movaps xmm %+ %%i, [%1 + (%%i-8)*16 + stack_size + 32]
|
||||
movaps xmm %+ %%i, [rsp + (%%i-8)*16 + stack_size + 32]
|
||||
%endrep
|
||||
%endif
|
||||
%if stack_size_padded > 0
|
||||
%if stack_size > 0 && required_stack_alignment > STACK_ALIGNMENT
|
||||
mov rsp, rstkm
|
||||
%else
|
||||
add %1, stack_size_padded
|
||||
add rsp, stack_size_padded
|
||||
%assign %%pad_size stack_size_padded
|
||||
%endif
|
||||
%endif
|
||||
%if xmm_regs_used > 7
|
||||
movaps xmm7, [%1 + stack_offset - %%pad_size + 24]
|
||||
movaps xmm7, [rsp + stack_offset - %%pad_size + 24]
|
||||
%endif
|
||||
%if xmm_regs_used > 6
|
||||
movaps xmm6, [%1 + stack_offset - %%pad_size + 8]
|
||||
movaps xmm6, [rsp + stack_offset - %%pad_size + 8]
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro WIN64_RESTORE_XMM 1
|
||||
WIN64_RESTORE_XMM_INTERNAL %1
|
||||
%macro WIN64_RESTORE_XMM 0
|
||||
WIN64_RESTORE_XMM_INTERNAL
|
||||
%assign stack_offset (stack_offset-stack_size_padded)
|
||||
%assign stack_size_padded 0
|
||||
%assign xmm_regs_used 0
|
||||
%endmacro
|
||||
|
||||
%define has_epilogue regs_used > 7 || xmm_regs_used > 6 || mmsize == 32 || stack_size > 0
|
||||
|
||||
%macro RET 0
|
||||
WIN64_RESTORE_XMM_INTERNAL rsp
|
||||
WIN64_RESTORE_XMM_INTERNAL
|
||||
POP_IF_USED 14, 13, 12, 11, 10, 9, 8, 7
|
||||
%if mmsize == 32
|
||||
vzeroupper
|
||||
@ -625,7 +626,7 @@ DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14
|
||||
%if WIN64 == 0
|
||||
%macro WIN64_SPILL_XMM 1
|
||||
%endmacro
|
||||
%macro WIN64_RESTORE_XMM 1
|
||||
%macro WIN64_RESTORE_XMM 0
|
||||
%endmacro
|
||||
%macro WIN64_PUSH_XMM 0
|
||||
%endmacro
|
||||
|
Loading…
Reference in New Issue
Block a user