mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
x86: move horizontal add macros to x86util
Also port relevant AVX2/XOP optimizations from x264 with permission to relicense to LGPL from the corresponding authors Signed-off-by: James Almer <jamrial@gmail.com> Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
443261cbbd
commit
76ed71a72b
@ -171,22 +171,6 @@ PRED4x4_HD
|
|||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; void ff_pred4x4_dc(pixel *src, const pixel *topright, int stride)
|
; void ff_pred4x4_dc(pixel *src, const pixel *topright, int stride)
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
%macro HADDD 2 ; sum junk
|
|
||||||
%if mmsize == 16
|
|
||||||
movhlps %2, %1
|
|
||||||
paddd %1, %2
|
|
||||||
pshuflw %2, %1, 0xE
|
|
||||||
paddd %1, %2
|
|
||||||
%else
|
|
||||||
pshufw %2, %1, 0xE
|
|
||||||
paddd %1, %2
|
|
||||||
%endif
|
|
||||||
%endmacro
|
|
||||||
|
|
||||||
%macro HADDW 2
|
|
||||||
pmaddwd %1, [pw_1]
|
|
||||||
HADDD %1, %2
|
|
||||||
%endmacro
|
|
||||||
|
|
||||||
INIT_MMX mmxext
|
INIT_MMX mmxext
|
||||||
cglobal pred4x4_dc_10, 3, 3
|
cglobal pred4x4_dc_10, 3, 3
|
||||||
|
@ -273,6 +273,39 @@
|
|||||||
%endif
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
%macro HADDD 2 ; sum junk
|
||||||
|
%if sizeof%1 == 32
|
||||||
|
%define %2 xmm%2
|
||||||
|
vextracti128 %2, %1, 1
|
||||||
|
%define %1 xmm%1
|
||||||
|
paddd %1, %2
|
||||||
|
%endif
|
||||||
|
%if mmsize >= 16
|
||||||
|
%if cpuflag(xop) && sizeof%1 == 16
|
||||||
|
vphadddq %1, %1
|
||||||
|
%endif
|
||||||
|
movhlps %2, %1
|
||||||
|
paddd %1, %2
|
||||||
|
%endif
|
||||||
|
%if notcpuflag(xop) || sizeof%1 != 16
|
||||||
|
PSHUFLW %2, %1, q0032
|
||||||
|
paddd %1, %2
|
||||||
|
%endif
|
||||||
|
%undef %1
|
||||||
|
%undef %2
|
||||||
|
%endmacro
|
||||||
|
|
||||||
|
%macro HADDW 2 ; reg, tmp
|
||||||
|
%if cpuflag(xop) && sizeof%1 == 16
|
||||||
|
vphaddwq %1, %1
|
||||||
|
movhlps %2, %1
|
||||||
|
paddd %1, %2
|
||||||
|
%else
|
||||||
|
pmaddwd %1, [pw_1]
|
||||||
|
HADDD %1, %2
|
||||||
|
%endif
|
||||||
|
%endmacro
|
||||||
|
|
||||||
%macro PALIGNR 4-5
|
%macro PALIGNR 4-5
|
||||||
%if cpuflag(ssse3)
|
%if cpuflag(ssse3)
|
||||||
%if %0==5
|
%if %0==5
|
||||||
|
Loading…
Reference in New Issue
Block a user