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:
parent
8731dbd890
commit
532e769701
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user