summaryrefslogtreecommitdiff
path: root/libavcodec/x86/h264_weight_10bit.asm
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2012-07-15 15:44:39 +0200
committerDiego Biurrun <diego@biurrun.de>2012-11-13 19:07:09 +0100
commit5e9c6ef8f3beb9ed7b271654a82349ac90fe43f2 (patch)
tree3478927db3ee39924ca6d9f2d5aae7761d4d35d7 /libavcodec/x86/h264_weight_10bit.asm
parent83f9ed42ec696cedd7b84f255968a5888f749fc9 (diff)
x86: h264_weight_10bit: port to cpuflags
Diffstat (limited to 'libavcodec/x86/h264_weight_10bit.asm')
-rw-r--r--libavcodec/x86/h264_weight_10bit.asm132
1 files changed, 69 insertions, 63 deletions
diff --git a/libavcodec/x86/h264_weight_10bit.asm b/libavcodec/x86/h264_weight_10bit.asm
index 20d26a49c3..3b09e420d2 100644
--- a/libavcodec/x86/h264_weight_10bit.asm
+++ b/libavcodec/x86/h264_weight_10bit.asm
@@ -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