mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
x86util: Port all macros to cpuflags
Also do some small cosmetic changes: Drop pointless _MMX suffix from ABSD2 macro name, drop pointless check for MMX support, we always assume MMX is available in our SIMD code, fix spelling.
This commit is contained in:
parent
522d850e68
commit
994c4bc107
@ -66,7 +66,7 @@ SCALARPRODUCT
|
|||||||
; %1 = number of xmm registers used
|
; %1 = number of xmm registers used
|
||||||
; %2 = number of inline load/process/store loops per asm loop
|
; %2 = number of inline load/process/store loops per asm loop
|
||||||
; %3 = process 4*mmsize (%3=0) or 8*mmsize (%3=1) bytes per loop
|
; %3 = process 4*mmsize (%3=0) or 8*mmsize (%3=1) bytes per loop
|
||||||
; %4 = CLIPD function takes min/max as float instead of int (CLIPD_SSE2)
|
; %4 = CLIPD function takes min/max as float instead of int (SSE2 version)
|
||||||
; %5 = suffix
|
; %5 = suffix
|
||||||
%macro VECTOR_CLIP_INT32 4-5
|
%macro VECTOR_CLIP_INT32 4-5
|
||||||
cglobal vector_clip_int32%5, 5,5,%1, dst, src, min, max, len
|
cglobal vector_clip_int32%5, 5,5,%1, dst, src, min, max, len
|
||||||
@ -122,14 +122,11 @@ cglobal vector_clip_int32%5, 5,5,%1, dst, src, min, max, len
|
|||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
INIT_MMX mmx
|
INIT_MMX mmx
|
||||||
%define CLIPD CLIPD_MMX
|
|
||||||
VECTOR_CLIP_INT32 0, 1, 0, 0
|
VECTOR_CLIP_INT32 0, 1, 0, 0
|
||||||
INIT_XMM sse2
|
INIT_XMM sse2
|
||||||
VECTOR_CLIP_INT32 6, 1, 0, 0, _int
|
VECTOR_CLIP_INT32 6, 1, 0, 0, _int
|
||||||
%define CLIPD CLIPD_SSE2
|
|
||||||
VECTOR_CLIP_INT32 6, 2, 0, 1
|
VECTOR_CLIP_INT32 6, 2, 0, 1
|
||||||
INIT_XMM sse4
|
INIT_XMM sse4
|
||||||
%define CLIPD CLIPD_SSE41
|
|
||||||
%ifdef m8
|
%ifdef m8
|
||||||
VECTOR_CLIP_INT32 11, 1, 1, 0
|
VECTOR_CLIP_INT32 11, 1, 1, 0
|
||||||
%else
|
%else
|
||||||
|
@ -174,13 +174,13 @@
|
|||||||
%endif
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PSIGNW_MMX 2
|
%macro PSIGNW 2
|
||||||
|
%if cpuflag(ssse3)
|
||||||
|
psignw %1, %2
|
||||||
|
%else
|
||||||
pxor %1, %2
|
pxor %1, %2
|
||||||
psubw %1, %2
|
psubw %1, %2
|
||||||
%endmacro
|
%endif
|
||||||
|
|
||||||
%macro PSIGNW_SSSE3 2
|
|
||||||
psignw %1, %2
|
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro ABS1 2
|
%macro ABS1 2
|
||||||
@ -221,7 +221,7 @@
|
|||||||
%endif
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro ABSB 2 ; source mmreg, temp mmreg (unused for ssse3)
|
%macro ABSB 2 ; source mmreg, temp mmreg (unused for SSSE3)
|
||||||
%if cpuflag(ssse3)
|
%if cpuflag(ssse3)
|
||||||
pabsb %1, %1
|
pabsb %1, %1
|
||||||
%else
|
%else
|
||||||
@ -245,7 +245,7 @@
|
|||||||
%endif
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro ABSD2_MMX 4
|
%macro ABSD2 4
|
||||||
pxor %3, %3
|
pxor %3, %3
|
||||||
pxor %4, %4
|
pxor %4, %4
|
||||||
pcmpgtd %3, %1
|
pcmpgtd %3, %1
|
||||||
@ -290,7 +290,7 @@
|
|||||||
%else
|
%else
|
||||||
palignr %1, %2, %3
|
palignr %1, %2, %3
|
||||||
%endif
|
%endif
|
||||||
%elif cpuflag(mmx) ; [dst,] src1, src2, imm, tmp
|
%else ; [dst,] src1, src2, imm, tmp
|
||||||
%define %%dst %1
|
%define %%dst %1
|
||||||
%if %0==5
|
%if %0==5
|
||||||
%ifnidn %1, %2
|
%ifnidn %1, %2
|
||||||
@ -606,37 +606,47 @@
|
|||||||
pminsw %1, %3
|
pminsw %1, %3
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PMINSD_MMX 3 ; dst, src, tmp
|
%macro PMINSD 3 ; dst, src, tmp/unused
|
||||||
|
%if cpuflag(sse4)
|
||||||
|
pminsd %1, %2
|
||||||
|
%elif cpuflag(sse2)
|
||||||
|
cvtdq2ps %1, %1
|
||||||
|
minps %1, %2
|
||||||
|
cvtps2dq %1, %1
|
||||||
|
%else
|
||||||
mova %3, %2
|
mova %3, %2
|
||||||
pcmpgtd %3, %1
|
pcmpgtd %3, %1
|
||||||
pxor %1, %2
|
pxor %1, %2
|
||||||
pand %1, %3
|
pand %1, %3
|
||||||
pxor %1, %2
|
pxor %1, %2
|
||||||
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro PMAXSD_MMX 3 ; dst, src, tmp
|
%macro PMAXSD 3 ; dst, src, tmp/unused
|
||||||
|
%if cpuflag(sse4)
|
||||||
|
pmaxsd %1, %2
|
||||||
|
%else
|
||||||
mova %3, %1
|
mova %3, %1
|
||||||
pcmpgtd %3, %2
|
pcmpgtd %3, %2
|
||||||
pand %1, %3
|
pand %1, %3
|
||||||
pandn %3, %2
|
pandn %3, %2
|
||||||
por %1, %3
|
por %1, %3
|
||||||
|
%endif
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro CLIPD_MMX 3-4 ; src/dst, min, max, tmp
|
%macro CLIPD 3-4
|
||||||
PMINSD_MMX %1, %3, %4
|
%if cpuflag(sse4); src/dst, min, max, unused
|
||||||
PMAXSD_MMX %1, %2, %4
|
pminsd %1, %3
|
||||||
%endmacro
|
pmaxsd %1, %2
|
||||||
|
%elif cpuflag(sse2) ; src/dst, min (float), max (float), unused
|
||||||
%macro CLIPD_SSE2 3-4 ; src/dst, min (float), max (float), unused
|
|
||||||
cvtdq2ps %1, %1
|
cvtdq2ps %1, %1
|
||||||
minps %1, %3
|
minps %1, %3
|
||||||
maxps %1, %2
|
maxps %1, %2
|
||||||
cvtps2dq %1, %1
|
cvtps2dq %1, %1
|
||||||
%endmacro
|
%else ; src/dst, min, max, tmp
|
||||||
|
PMINSD %1, %3, %4
|
||||||
%macro CLIPD_SSE41 3-4 ; src/dst, min, max, unused
|
PMAXSD %1, %2, %4
|
||||||
pminsd %1, %3
|
%endif
|
||||||
pmaxsd %1, %2
|
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
%macro VBROADCASTSS 2 ; dst xmm/ymm, src m32
|
%macro VBROADCASTSS 2 ; dst xmm/ymm, src m32
|
||||||
|
@ -364,15 +364,7 @@ cglobal hscale%1to%2_%4, %5, 10, %6, pos0, dst, w, srcmem, filter, fltpos, fltsi
|
|||||||
movd [dstq+wq*2], m0
|
movd [dstq+wq*2], m0
|
||||||
%endif ; %3 ==/!= X
|
%endif ; %3 ==/!= X
|
||||||
%else ; %2 == 19
|
%else ; %2 == 19
|
||||||
%if mmsize == 8
|
PMINSD m0, m2, m4
|
||||||
PMINSD_MMX m0, m2, m4
|
|
||||||
%elif cpuflag(sse4)
|
|
||||||
pminsd m0, m2
|
|
||||||
%else ; sse2/ssse3
|
|
||||||
cvtdq2ps m0, m0
|
|
||||||
minps m0, m2
|
|
||||||
cvtps2dq m0, m0
|
|
||||||
%endif ; mmx/sse2/ssse3/sse4
|
|
||||||
%ifnidn %3, X
|
%ifnidn %3, X
|
||||||
mova [dstq+wq*(4>>wshr)], m0
|
mova [dstq+wq*(4>>wshr)], m0
|
||||||
%else ; %3 == X
|
%else ; %3 == X
|
||||||
|
Loading…
Reference in New Issue
Block a user