mirror of https://git.videolan.org/git/ffmpeg.git
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
|
%endif
|
||||||
%endmacro
|
%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
|
%macro SIMPLE_LOOPFILTER 2
|
||||||
cglobal vp8_%1_loop_filter_simple, 3, %2, 8, dst, stride, flim, cntr
|
cglobal vp8_%1_loop_filter_simple, 3, %2, 8, dst, stride, flim, cntr
|
||||||
%if mmsize == 8 ; mmx/mmxext
|
%if mmsize == 8 ; mmx/mmxext
|
||||||
|
|
|
@ -256,15 +256,26 @@
|
||||||
%define ABSB ABSB_MMX
|
%define ABSB ABSB_MMX
|
||||||
%define ABSB2 ABSB2_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
|
movd %1, [%2-3] ;to avoid crossing a cacheline
|
||||||
punpcklbw %1, %1
|
punpcklbw %1, %1
|
||||||
SPLATW %1, %1, 3
|
SPLATW %1, %1, 3
|
||||||
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro SPLATB_SSSE3 3
|
%macro SPLATB_REG 3
|
||||||
movd %1, [%2-3]
|
%if cpuflag(ssse3)
|
||||||
|
movd %1, %2d
|
||||||
pshufb %1, %3
|
pshufb %1, %3
|
||||||
|
%else
|
||||||
|
movd %1, %2d
|
||||||
|
punpcklbw %1, %1
|
||||||
|
SPLATW %1, %1, 0
|
||||||
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PALIGNR_MMX 4-5 ; [dst,] src1, src2, imm, tmp
|
%macro PALIGNR_MMX 4-5 ; [dst,] src1, src2, imm, tmp
|
||||||
|
@ -296,6 +307,14 @@
|
||||||
%endif
|
%endif
|
||||||
%endmacro
|
%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
|
%macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
|
||||||
%ifnum %5
|
%ifnum %5
|
||||||
pand m%3, m%5, m%4 ; src .. y6 .. y4
|
pand m%3, m%5, m%4 ; src .. y6 .. y4
|
||||||
|
@ -521,8 +540,22 @@
|
||||||
%if mmsize == 16
|
%if mmsize == 16
|
||||||
pshuflw %1, %2, (%3)*0x55
|
pshuflw %1, %2, (%3)*0x55
|
||||||
punpcklqdq %1, %1
|
punpcklqdq %1, %1
|
||||||
%else
|
%elif cpuflag(mmx2)
|
||||||
pshufw %1, %2, (%3)*0x55
|
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
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue