@ -208,6 +208,17 @@
pminub % 2 , % 4
% endmacro
% macro ABSD2_MMX 4
pxor % 3 , % 3
pxor % 4 , % 4
pcmpgtd % 3 , % 1
pcmpgtd % 4 , % 2
pxor % 1 , % 3
pxor % 2 , % 4
psubd % 1 , % 3
psubd % 2 , % 4
% endmacro
% macro ABSB_SSSE3 2
pabsb % 1 , % 1
% endmacro
@ -230,12 +241,7 @@
% macro SPLATB_MMX 3
movd % 1 , [ % 2 - 3 ] ;to avoid crossing a cacheline
punpcklbw % 1 , % 1
% if mmsize==16
pshuflw % 1 , % 1 , 0xff
punpcklqdq % 1 , % 1
% else
pshufw % 1 , % 1 , 0xff
% endif
SPLATW % 1 , % 1 , 3
% endmacro
% macro SPLATB_SSSE3 3
@ -243,125 +249,169 @@
pshufb % 1 , % 3
% endmacro
% macro PALIGNR_MMX 4
% ifnidn %4, %2
% macro PALIGNR_MMX 4-5 ; [dst,] src1, src2, imm, tmp
% define %%dst %1
% if %0==5
% ifnidn %1, %2
mova %% ds t , % 2
% endif
% rotate 1
% endif
% ifnidn %4, %2
mova % 4 , % 2
% endif
% if mmsize == 8
psllq % 1 , ( 8 -% 3 ) * 8
% endif
% if mmsize==8
psllq %% ds t , ( 8 -% 3 ) * 8
psrlq % 4 , % 3 * 8
% else
pslldq % 1 , 16 -% 3
% else
pslldq %% ds t , 16 -% 3
psrldq % 4 , % 3
%endif
por % 1 , % 4
% endif
por %% ds t , % 4
% endmacro
% macro PALIGNR_SSSE3 4
% macro PALIGNR_SSSE3 4-5
% if %0==5
palignr % 1 , % 2 , % 3 , % 4
% else
palignr % 1 , % 2 , % 3
% endif
% endmacro
% macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
% ifnum %5
mova m % 1 , m % 5
mova m % 3 , m % 5
pand m % 3 , m % 5 , m % 4 ; src .. y6 .. y4
pand m % 1 , m % 5 , m % 2 ; dst .. y6 .. y4
% else
mova m % 1 , % 5
mova m % 3 , m % 1
pand m % 3 , m % 1 , m % 4 ; src .. y6 .. y4
pand m % 1 , m % 1 , m % 2 ; dst .. y6 .. y4
% endif
pand m % 1 , m % 2 ; dst .. y6 .. y4
pand m % 3 , m % 4 ; src .. y6 .. y4
psrlw m % 2 , 8 ; dst .. y7 .. y5
psrlw m % 4 , 8 ; src .. y7 .. y5
psrlw m % 2 , 8 ; dst .. y7 .. y5
psrlw m % 4 , 8 ; src .. y7 .. y5
% endmacro
% macro SUMSUB_BA 2-3
% if %0==2
paddw % 1 , % 2
paddw % 2 , % 2
psubw % 2 , % 1
% macro SUMSUB_BA 3-4
% if %0==3
padd % 1 m % 2 , m % 3
padd % 1 m % 3 , m % 3
psub % 1 m % 3 , m % 2
% else
% if avx_enabled == 0
mova m % 4 , m % 2
padd % 1 m % 2 , m % 3
psub % 1 m % 3 , m % 4
% else
mova % 3 , % 1
paddw % 1 , % 2
psubw % 2 , % 3
padd % 1 m % 4 , m % 2 , m % 3
psub % 1 m % 3 , m % 2
SWAP % 2 , % 4
% endif
% endif
% endmacro
% macro SUMSUB_BADC 4- 5
% if %0==5
SUMSUB_BA % 1 , % 2 , % 5
SUMSUB_BA % 3 , % 4 , % 5
% macro SUMSUB_BADC 5-6
% if %0==6
SUMSUB_BA % 1 , % 2 , % 3 , % 6
SUMSUB_BA % 1 , % 4 , % 5 , % 6
% else
paddw % 1 , % 2
paddw % 3 , % 4
paddw % 2 , % 2
paddw % 4 , % 4
psubw % 2 , % 1
psubw % 4 , % 3
padd % 1 m % 2 , m % 3
padd % 1 m % 4 , m % 5
padd % 1 m % 3 , m % 3
padd % 1 m % 5 , m % 5
psub % 1 m % 3 , m % 2
psub % 1 m % 5 , m % 4
% endif
% endmacro
% macro SUMSUB2_AB 3
mova % 3 , % 1
paddw % 1 , % 1
paddw % 1 , % 2
psubw % 3 , % 2
psubw % 3 , % 2
% macro SUMSUB2_AB 4
% ifnum %3
psub % 1 m % 4 , m % 2 , m % 3
psub % 1 m % 4 , m % 3
padd % 1 m % 2 , m % 2
padd % 1 m % 2 , m % 3
% else
mova m % 4 , m % 2
padd % 1 m % 2 , m % 2
padd % 1 m % 2 , % 3
psub % 1 m % 4 , % 3
psub % 1 m % 4 , % 3
% endif
% endmacro
% macro SUMSUB2_BA 3
mova m % 3 , m % 1
paddw m % 1 , m % 2
paddw m % 1 , m % 2
psubw m % 2 , m % 3
psubw m % 2 , m % 3
% macro SUMSUB2_BA 4
% if avx_enabled == 0
mova m % 4 , m % 2
padd % 1 m % 2 , m % 3
padd % 1 m % 2 , m % 3
psub % 1 m % 3 , m % 4
psub % 1 m % 3 , m % 4
% else
padd % 1 m % 4 , m % 2 , m % 3
padd % 1 m % 4 , m % 3
psub % 1 m % 3 , m % 2
psub % 1 m % 3 , m % 2
SWAP % 2 , % 4
% endif
% endmacro
% macro SUMSUBD2_AB 4
mova % 4 , % 1
mova % 3 , % 2
psraw % 2 , 1 ; %2: %2>>1
psraw % 1 , 1 ; %1: %1>>1
paddw % 2 , % 4 ; %2: %2>>1+%1
psubw % 1 , % 3 ; %1: %1>>1-%2
% macro SUMSUBD2_AB 5
% ifnum %4
psra % 1 m % 5 , m % 2 , 1 ; %3: %3>>1
psra % 1 m % 4 , m % 3 , 1 ; %2: %2>>1
padd % 1 m % 4 , m % 2 ; %3: %3>>1+%2
psub % 1 m % 5 , m % 3 ; %2: %2>>1-%3
SWAP % 2 , % 5
SWAP % 3 , % 4
% else
mova % 5 , m % 2
mova % 4 , m % 3
psra % 1 m % 3 , 1 ; %3: %3>>1
psra % 1 m % 2 , 1 ; %2: %2>>1
padd % 1 m % 3 , % 5 ; %3: %3>>1+%2
psub % 1 m % 2 , % 4 ; %2: %2>>1-%3
% endif
% endmacro
% macro DCT4_1D 5
% ifnum %5
SUMSUB_BADC m % 4 , m % 1 , m % 3 , m % 2 ; m%5
SUMSUB_BA m % 3 , m % 4 , m % 5
SUMSUB2_AB m % 1 , m % 2 , m % 5
SUMSUB_BADC w , % 4 , % 1 , % 3 , % 2 , % 5
SUMSUB_BA w , % 3 , % 4 , % 5
SUMSUB2_AB w , % 1 , % 2 , % 5
SWAP % 1 , % 3 , % 4 , % 5 , % 2
% else
SUMSUB_BADC m % 4 , m % 1 , m % 3 , m % 2
SUMSUB_BA m % 3 , m % 4
mova [ % 5 ], m % 2
SUMSUB2_AB m % 1 , [ % 5 ], m % 2
SUMSUB_BADC w , % 4 , % 1 , % 3 , % 2
SUMSUB_BA w , % 3 , % 4
mova [ % 5 ], m % 2
SUMSUB2_AB w , % 1 , [ % 5 ], % 2
SWAP % 1 , % 3 , % 4 , % 2
% endif
% endmacro
% macro IDCT4_1D 5- 6
% ifnum %5
SUMSUBD2_AB m % 2 , m % 4 , m % 6 , m % 5
; %2: %2>>1-%4 %4: %2+%4 >>1
SUMSUB_BA m % 3 , m % 1 , m % 6
; %3: %1+%3 %1: %1-%3
SUMSUB_BADC m % 4 , m % 3 , m % 2 , m % 1 , m % 6
; %4: %1+%3 + (%2+%4 >>1)
; %3: %1+%3 - (%2+%4 >>1)
; %2: %1-%3 + (%2>>1-%4 )
; %1: %1-%3 - (%2>>1-%4 )
% macro IDCT4_1D 6-7
% ifnum %6
SUMSUBD2_AB % 1 , % 3 , % 5 , % 7 , % 6
; %3: %3>>1-%5 %5: %3+%5 >>1
SUMSUB_BA % 1 , % 4 , % 2 , % 7
; %4: %2+%4 %2: %2-%4
SUMSUB_BADC % 1 , % 5 , % 4 , % 3 , % 2 , % 7
; %5: %2+%4 + (%3+%5 >>1)
; %4: %2+%4 - (%3+%5 >>1)
; %3: %2-%4 + (%3>>1-%5 )
; %2: %2-%4 - (%3>>1-%5 )
% else
SUMSUBD2_AB m % 2 , m % 4 , [ % 5 ], [ % 5 + 16 ]
SUMSUB_BA m % 3 , m % 1
SUMSUB_BADC m % 4 , m % 3 , m % 2 , m % 1
% ifidn %1, w
SUMSUBD2_AB % 1 , % 3 , % 5 , [ % 6 ], [ % 6 + 16 ]
% else
SUMSUBD2_AB % 1 , % 3 , % 5 , [ % 6 ], [ % 6 + 32 ]
% endif
SUMSUB_BA % 1 , % 4 , % 2
SUMSUB_BADC % 1 , % 5 , % 4 , % 3 , % 2
% endif
SWAP % 1 , % 4 , % 3
; %1: %1+%3 + (%2+%4>>1) row0
; %2: %1-%3 + (%2>>1-%4) row1
; %3: %1-%3 - (%2>>1-%4 ) row2
; %4: %1+%3 - (%2+%4 >>1) row3
SWAP % 2 , % 5 , % 4
; %2: %2+%4 + (%3+%5 >>1) row0
; %3: %2-%4 + (%3>>1-%5 ) row1
; %4: %2-%4 - (%3>>1-%5 ) row2
; %5: %2+%4 - (%3+%5 >>1) row3
% endmacro