x86: h264_weight_10bit: port to cpuflags
This commit is contained in:
parent
83f9ed42ec
commit
5e9c6ef8f3
@ -48,7 +48,7 @@ SECTION .text
|
||||
movifnidn r5d, r5m
|
||||
%endmacro
|
||||
|
||||
%macro WEIGHT_SETUP 1
|
||||
%macro WEIGHT_SETUP 0
|
||||
mova m0, [pw_1]
|
||||
movd m2, r3m
|
||||
pslld m0, m2 ; 1<<log2_denom
|
||||
@ -59,19 +59,19 @@ SECTION .text
|
||||
pshufd m3, m3, 0
|
||||
mova m4, [pw_pixel_max]
|
||||
paddw m2, [sq_1] ; log2_denom+1
|
||||
%ifnidn %1, sse4
|
||||
%if notcpuflag(sse4)
|
||||
pxor m7, m7
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro WEIGHT_OP 2-3
|
||||
%if %0==2
|
||||
mova m5, [r0+%2]
|
||||
%macro WEIGHT_OP 1-2
|
||||
%if %0==1
|
||||
mova m5, [r0+%1]
|
||||
punpckhwd m6, m5, m0
|
||||
punpcklwd m5, m0
|
||||
%else
|
||||
movq m5, [r0+%2]
|
||||
movq m6, [r0+%3]
|
||||
movq m5, [r0+%1]
|
||||
movq m6, [r0+%2]
|
||||
punpcklwd m5, m0
|
||||
punpcklwd m6, m0
|
||||
%endif
|
||||
@ -79,7 +79,7 @@ SECTION .text
|
||||
pmaddwd m6, m3
|
||||
psrad m5, m2
|
||||
psrad m6, m2
|
||||
%ifidn %1, sse4
|
||||
%if cpuflag(sse4)
|
||||
packusdw m5, m6
|
||||
pminsw m5, m4
|
||||
%else
|
||||
@ -88,14 +88,14 @@ SECTION .text
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro WEIGHT_FUNC_DBL 1
|
||||
cglobal h264_weight_16_10_%1
|
||||
%macro WEIGHT_FUNC_DBL 0
|
||||
cglobal h264_weight_16_10
|
||||
WEIGHT_PROLOGUE
|
||||
WEIGHT_SETUP %1
|
||||
WEIGHT_SETUP
|
||||
.nextrow:
|
||||
WEIGHT_OP %1, 0
|
||||
WEIGHT_OP 0
|
||||
mova [r0 ], m5
|
||||
WEIGHT_OP %1, 16
|
||||
WEIGHT_OP 16
|
||||
mova [r0+16], m5
|
||||
add r0, r1
|
||||
dec r2d
|
||||
@ -103,17 +103,18 @@ cglobal h264_weight_16_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
WEIGHT_FUNC_DBL sse2
|
||||
WEIGHT_FUNC_DBL sse4
|
||||
INIT_XMM sse2
|
||||
WEIGHT_FUNC_DBL
|
||||
INIT_XMM sse4
|
||||
WEIGHT_FUNC_DBL
|
||||
|
||||
|
||||
%macro WEIGHT_FUNC_MM 1
|
||||
cglobal h264_weight_8_10_%1
|
||||
%macro WEIGHT_FUNC_MM 0
|
||||
cglobal h264_weight_8_10
|
||||
WEIGHT_PROLOGUE
|
||||
WEIGHT_SETUP %1
|
||||
WEIGHT_SETUP
|
||||
.nextrow:
|
||||
WEIGHT_OP %1, 0
|
||||
WEIGHT_OP 0
|
||||
mova [r0], m5
|
||||
add r0, r1
|
||||
dec r2d
|
||||
@ -121,19 +122,20 @@ cglobal h264_weight_8_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
WEIGHT_FUNC_MM sse2
|
||||
WEIGHT_FUNC_MM sse4
|
||||
INIT_XMM sse2
|
||||
WEIGHT_FUNC_MM
|
||||
INIT_XMM sse4
|
||||
WEIGHT_FUNC_MM
|
||||
|
||||
|
||||
%macro WEIGHT_FUNC_HALF_MM 1
|
||||
cglobal h264_weight_4_10_%1
|
||||
%macro WEIGHT_FUNC_HALF_MM 0
|
||||
cglobal h264_weight_4_10
|
||||
WEIGHT_PROLOGUE
|
||||
sar r2d, 1
|
||||
WEIGHT_SETUP %1
|
||||
WEIGHT_SETUP
|
||||
lea r3, [r1*2]
|
||||
.nextrow:
|
||||
WEIGHT_OP %1, 0, r1
|
||||
WEIGHT_OP 0, r1
|
||||
movh [r0], m5
|
||||
movhps [r0+r1], m5
|
||||
add r0, r3
|
||||
@ -142,9 +144,10 @@ cglobal h264_weight_4_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
WEIGHT_FUNC_HALF_MM sse2
|
||||
WEIGHT_FUNC_HALF_MM sse4
|
||||
INIT_XMM sse2
|
||||
WEIGHT_FUNC_HALF_MM
|
||||
INIT_XMM sse4
|
||||
WEIGHT_FUNC_HALF_MM
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
@ -168,7 +171,7 @@ DECLARE_REG_TMP 7
|
||||
movifnidn t0d, r7m
|
||||
%endmacro
|
||||
|
||||
%macro BIWEIGHT_SETUP 1
|
||||
%macro BIWEIGHT_SETUP 0
|
||||
lea t0, [t0*4+1] ; (offset<<2)+1
|
||||
or t0, 1
|
||||
shl r6, 16
|
||||
@ -182,23 +185,23 @@ DECLARE_REG_TMP 7
|
||||
pshufd m5, m5, 0
|
||||
mova m3, [pw_pixel_max]
|
||||
movifnidn r3d, r3m
|
||||
%ifnidn %1, sse4
|
||||
%if notcpuflag(sse4)
|
||||
pxor m7, m7
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro BIWEIGHT 2-3
|
||||
%if %0==2
|
||||
mova m0, [r0+%2]
|
||||
mova m1, [r1+%2]
|
||||
%macro BIWEIGHT 1-2
|
||||
%if %0==1
|
||||
mova m0, [r0+%1]
|
||||
mova m1, [r1+%1]
|
||||
punpckhwd m2, m0, m1
|
||||
punpcklwd m0, m1
|
||||
%else
|
||||
movq m0, [r0+%2]
|
||||
movq m1, [r1+%2]
|
||||
movq m0, [r0+%1]
|
||||
movq m1, [r1+%1]
|
||||
punpcklwd m0, m1
|
||||
movq m2, [r0+%3]
|
||||
movq m1, [r1+%3]
|
||||
movq m2, [r0+%2]
|
||||
movq m1, [r1+%2]
|
||||
punpcklwd m2, m1
|
||||
%endif
|
||||
pmaddwd m0, m4
|
||||
@ -207,7 +210,7 @@ DECLARE_REG_TMP 7
|
||||
paddd m2, m5
|
||||
psrad m0, m6
|
||||
psrad m2, m6
|
||||
%ifidn %1, sse4
|
||||
%if cpuflag(sse4)
|
||||
packusdw m0, m2
|
||||
pminsw m0, m3
|
||||
%else
|
||||
@ -216,14 +219,14 @@ DECLARE_REG_TMP 7
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro BIWEIGHT_FUNC_DBL 1
|
||||
cglobal h264_biweight_16_10_%1
|
||||
%macro BIWEIGHT_FUNC_DBL 0
|
||||
cglobal h264_biweight_16_10
|
||||
BIWEIGHT_PROLOGUE
|
||||
BIWEIGHT_SETUP %1
|
||||
BIWEIGHT_SETUP
|
||||
.nextrow:
|
||||
BIWEIGHT %1, 0
|
||||
BIWEIGHT 0
|
||||
mova [r0 ], m0
|
||||
BIWEIGHT %1, 16
|
||||
BIWEIGHT 16
|
||||
mova [r0+16], m0
|
||||
add r0, r2
|
||||
add r1, r2
|
||||
@ -232,16 +235,17 @@ cglobal h264_biweight_16_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
BIWEIGHT_FUNC_DBL sse2
|
||||
BIWEIGHT_FUNC_DBL sse4
|
||||
INIT_XMM sse2
|
||||
BIWEIGHT_FUNC_DBL
|
||||
INIT_XMM sse4
|
||||
BIWEIGHT_FUNC_DBL
|
||||
|
||||
%macro BIWEIGHT_FUNC 1
|
||||
cglobal h264_biweight_8_10_%1
|
||||
%macro BIWEIGHT_FUNC 0
|
||||
cglobal h264_biweight_8_10
|
||||
BIWEIGHT_PROLOGUE
|
||||
BIWEIGHT_SETUP %1
|
||||
BIWEIGHT_SETUP
|
||||
.nextrow:
|
||||
BIWEIGHT %1, 0
|
||||
BIWEIGHT 0
|
||||
mova [r0], m0
|
||||
add r0, r2
|
||||
add r1, r2
|
||||
@ -250,18 +254,19 @@ cglobal h264_biweight_8_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
BIWEIGHT_FUNC sse2
|
||||
BIWEIGHT_FUNC sse4
|
||||
INIT_XMM sse2
|
||||
BIWEIGHT_FUNC
|
||||
INIT_XMM sse4
|
||||
BIWEIGHT_FUNC
|
||||
|
||||
%macro BIWEIGHT_FUNC_HALF 1
|
||||
cglobal h264_biweight_4_10_%1
|
||||
%macro BIWEIGHT_FUNC_HALF 0
|
||||
cglobal h264_biweight_4_10
|
||||
BIWEIGHT_PROLOGUE
|
||||
BIWEIGHT_SETUP %1
|
||||
BIWEIGHT_SETUP
|
||||
sar r3d, 1
|
||||
lea r4, [r2*2]
|
||||
.nextrow:
|
||||
BIWEIGHT %1, 0, r2
|
||||
BIWEIGHT 0, r2
|
||||
movh [r0 ], m0
|
||||
movhps [r0+r2], m0
|
||||
add r0, r4
|
||||
@ -271,6 +276,7 @@ cglobal h264_biweight_4_10_%1
|
||||
REP_RET
|
||||
%endmacro
|
||||
|
||||
INIT_XMM
|
||||
BIWEIGHT_FUNC_HALF sse2
|
||||
BIWEIGHT_FUNC_HALF sse4
|
||||
INIT_XMM sse2
|
||||
BIWEIGHT_FUNC_HALF
|
||||
INIT_XMM sse4
|
||||
BIWEIGHT_FUNC_HALF
|
||||
|
Loading…
Reference in New Issue
Block a user