mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge commit '49ebe3f9fe02174ae7e14548001fd146ed375cc2'
* commit '49ebe3f9fe02174ae7e14548001fd146ed375cc2': x86inc: fix some corner cases of SWAP Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
3352fdb292
@ -912,42 +912,42 @@ INIT_XMM
|
||||
|
||||
%macro PERMUTE 2-* ; takes a list of pairs to swap
|
||||
%rep %0/2
|
||||
%xdefine tmp%2 m%2
|
||||
%xdefine ntmp%2 nm%2
|
||||
%xdefine %%tmp%2 m%2
|
||||
%rotate 2
|
||||
%endrep
|
||||
%rep %0/2
|
||||
%xdefine m%1 tmp%2
|
||||
%xdefine nm%1 ntmp%2
|
||||
%undef tmp%2
|
||||
%undef ntmp%2
|
||||
%xdefine m%1 %%tmp%2
|
||||
CAT_XDEFINE n, m%1, %1
|
||||
%rotate 2
|
||||
%endrep
|
||||
%endmacro
|
||||
|
||||
%macro SWAP 2-* ; swaps a single chain (sometimes more concise than pairs)
|
||||
%rep %0-1
|
||||
%ifdef m%1
|
||||
%xdefine tmp m%1
|
||||
%xdefine m%1 m%2
|
||||
%xdefine m%2 tmp
|
||||
CAT_XDEFINE n, m%1, %1
|
||||
CAT_XDEFINE n, m%2, %2
|
||||
%else
|
||||
; If we were called as "SWAP m0,m1" rather than "SWAP 0,1" infer the original numbers here.
|
||||
; Be careful using this mode in nested macros though, as in some cases there may be
|
||||
; other copies of m# that have already been dereferenced and don't get updated correctly.
|
||||
%xdefine %%n1 n %+ %1
|
||||
%xdefine %%n2 n %+ %2
|
||||
%xdefine tmp m %+ %%n1
|
||||
CAT_XDEFINE m, %%n1, m %+ %%n2
|
||||
CAT_XDEFINE m, %%n2, tmp
|
||||
CAT_XDEFINE n, m %+ %%n1, %%n1
|
||||
CAT_XDEFINE n, m %+ %%n2, %%n2
|
||||
%macro SWAP 2+ ; swaps a single chain (sometimes more concise than pairs)
|
||||
%ifnum %1 ; SWAP 0, 1, ...
|
||||
SWAP_INTERNAL_NUM %1, %2
|
||||
%else ; SWAP m0, m1, ...
|
||||
SWAP_INTERNAL_NAME %1, %2
|
||||
%endif
|
||||
%undef tmp
|
||||
%endmacro
|
||||
|
||||
%macro SWAP_INTERNAL_NUM 2-*
|
||||
%rep %0-1
|
||||
%xdefine %%tmp m%1
|
||||
%xdefine m%1 m%2
|
||||
%xdefine m%2 %%tmp
|
||||
CAT_XDEFINE n, m%1, %1
|
||||
CAT_XDEFINE n, m%2, %2
|
||||
%rotate 1
|
||||
%endrep
|
||||
%endrep
|
||||
%endmacro
|
||||
|
||||
%macro SWAP_INTERNAL_NAME 2-*
|
||||
%xdefine %%args n %+ %1
|
||||
%rep %0-1
|
||||
%xdefine %%args %%args, n %+ %2
|
||||
%rotate 1
|
||||
%endrep
|
||||
SWAP_INTERNAL_NUM %%args
|
||||
%endmacro
|
||||
|
||||
; If SAVE_MM_PERMUTATION is placed at the end of a function, then any later
|
||||
|
Loading…
Reference in New Issue
Block a user