mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
x86inc: add SPLATB_LOAD, SPLATB_REG, PSHUFLW macros
Signed-off-by: Diego Biurrun <diego@biurrun.de>
This commit is contained in:
parent
2cd1f5cadc
commit
4d4752366f
@ -1465,27 +1465,6 @@ VP8_DC_WHT
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro SPLATB_REG 2-3
|
||||
%if cpuflag(ssse3)
|
||||
movd %1, %2d
|
||||
pshufb %1, %3
|
||||
%elif cpuflag(sse2)
|
||||
movd %1, %2d
|
||||
punpcklbw %1, %1
|
||||
pshuflw %1, %1, 0x0
|
||||
punpcklqdq %1, %1
|
||||
%elif cpuflag(mmx2)
|
||||
movd %1, %2d
|
||||
punpcklbw %1, %1
|
||||
pshufw %1, %1, 0x0
|
||||
%else
|
||||
movd %1, %2d
|
||||
punpcklbw %1, %1
|
||||
punpcklwd %1, %1
|
||||
punpckldq %1, %1
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro SIMPLE_LOOPFILTER 2
|
||||
cglobal vp8_%1_loop_filter_simple, 3, %2, 8, dst, stride, flim, cntr
|
||||
%if mmsize == 8 ; mmx/mmxext
|
||||
|
@ -256,15 +256,26 @@
|
||||
%define ABSB ABSB_MMX
|
||||
%define ABSB2 ABSB2_MMX
|
||||
|
||||
%macro SPLATB_MMX 3
|
||||
%macro SPLATB_LOAD 3
|
||||
%if cpuflag(ssse3)
|
||||
movd %1, [%2-3]
|
||||
pshufb %1, %3
|
||||
%else
|
||||
movd %1, [%2-3] ;to avoid crossing a cacheline
|
||||
punpcklbw %1, %1
|
||||
SPLATW %1, %1, 3
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro SPLATB_SSSE3 3
|
||||
movd %1, [%2-3]
|
||||
%macro SPLATB_REG 3
|
||||
%if cpuflag(ssse3)
|
||||
movd %1, %2d
|
||||
pshufb %1, %3
|
||||
%else
|
||||
movd %1, %2d
|
||||
punpcklbw %1, %1
|
||||
SPLATW %1, %1, 0
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro PALIGNR_MMX 4-5 ; [dst,] src1, src2, imm, tmp
|
||||
@ -296,6 +307,14 @@
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro PSHUFLW 1+
|
||||
%if mmsize == 8
|
||||
pshufw %1
|
||||
%else
|
||||
pshuflw %1
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
|
||||
%ifnum %5
|
||||
pand m%3, m%5, m%4 ; src .. y6 .. y4
|
||||
@ -521,8 +540,22 @@
|
||||
%if mmsize == 16
|
||||
pshuflw %1, %2, (%3)*0x55
|
||||
punpcklqdq %1, %1
|
||||
%else
|
||||
%elif cpuflag(mmx2)
|
||||
pshufw %1, %2, (%3)*0x55
|
||||
%else
|
||||
%ifnidn %1, %2
|
||||
mova %1, %2
|
||||
%endif
|
||||
%if %3 & 2
|
||||
punpckhwd %1, %1
|
||||
%else
|
||||
punpcklwd %1, %1
|
||||
%endif
|
||||
%if %3 & 1
|
||||
punpckhwd %1, %1
|
||||
%else
|
||||
punpcklwd %1, %1
|
||||
%endif
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user