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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user