1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

sync yasm macros from x264

Originally committed as revision 24406 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Loren Merritt 2010-07-21 22:45:16 +00:00
parent 8731dbd890
commit 532e769701

View File

@ -271,13 +271,21 @@ DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56]
ASSERT %2 >= %1 ASSERT %2 >= %1
%assign regs_used %2 %assign regs_used %2
ASSERT regs_used <= 7 ASSERT regs_used <= 7
%assign xmm_regs_used %3
ASSERT xmm_regs_used <= 16
%if regs_used > 4 %if regs_used > 4
push r4 push r4
push r5 push r5
%assign stack_offset stack_offset+16 %assign stack_offset stack_offset+16
%endif %endif
WIN64_SPILL_XMM %3
LOAD_IF_USED 4, %1
LOAD_IF_USED 5, %1
LOAD_IF_USED 6, %1
DEFINE_ARGS %4
%endmacro
%macro WIN64_SPILL_XMM 1
%assign xmm_regs_used %1
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
%assign stack_offset stack_offset+(xmm_regs_used-6)*16+16 %assign stack_offset stack_offset+(xmm_regs_used-6)*16+16
@ -287,13 +295,9 @@ DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56]
movdqa [rsp + (%%i-6)*16+8], xmm %+ %%i movdqa [rsp + (%%i-6)*16+8], xmm %+ %%i
%endrep %endrep
%endif %endif
LOAD_IF_USED 4, %1
LOAD_IF_USED 5, %1
LOAD_IF_USED 6, %1
DEFINE_ARGS %4
%endmacro %endmacro
%macro RESTORE_XMM_INTERNAL 1 %macro WIN64_RESTORE_XMM_INTERNAL 1
%if xmm_regs_used > 6 %if xmm_regs_used > 6
%assign %%i xmm_regs_used %assign %%i xmm_regs_used
%rep (xmm_regs_used-6) %rep (xmm_regs_used-6)
@ -304,14 +308,14 @@ DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56]
%endif %endif
%endmacro %endmacro
%macro RESTORE_XMM 1 %macro WIN64_RESTORE_XMM 1
RESTORE_XMM_INTERNAL %1 WIN64_RESTORE_XMM_INTERNAL %1
%assign stack_offset stack_offset-(xmm_regs_used-6)*16+16 %assign stack_offset stack_offset-(xmm_regs_used-6)*16+16
%assign xmm_regs_used 0 %assign xmm_regs_used 0
%endmacro %endmacro
%macro RET 0 %macro RET 0
RESTORE_XMM_INTERNAL rsp WIN64_RESTORE_XMM_INTERNAL rsp
%if regs_used > 4 %if regs_used > 4
pop r5 pop r5
pop r4 pop r4
@ -428,6 +432,13 @@ DECLARE_REG 6, ebp, ebp, bp, null, [esp + stack_offset + 28]
%endif ;====================================================================== %endif ;======================================================================
%ifndef WIN64
%macro WIN64_SPILL_XMM 1
%endmacro
%macro WIN64_RESTORE_XMM 1
%endmacro
%endif
;============================================================================= ;=============================================================================
@ -494,7 +505,7 @@ SECTION .note.GNU-stack noalloc noexec nowrite progbits
%define mova movq %define mova movq
%define movu movq %define movu movq
%define movh movd %define movh movd
%define movnt movntq %define movnta movntq
%assign %%i 0 %assign %%i 0
%rep 8 %rep 8
CAT_XDEFINE m, %%i, mm %+ %%i CAT_XDEFINE m, %%i, mm %+ %%i
@ -518,7 +529,7 @@ SECTION .note.GNU-stack noalloc noexec nowrite progbits
%define mova movdqa %define mova movdqa
%define movu movdqu %define movu movdqu
%define movh movq %define movh movq
%define movnt movntdq %define movnta movntdq
%assign %%i 0 %assign %%i 0
%rep num_mmregs %rep num_mmregs
CAT_XDEFINE m, %%i, xmm %+ %%i CAT_XDEFINE m, %%i, xmm %+ %%i