---
libavfilter/x86/vf_gradfun.asm | 82 +++++++++++++-----------------------------
1 file changed, 24 insertions(+), 58 deletions(-)
diff --git a/libavfilter/x86/vf_gradfun.asm b/libavfilter/x86/vf_gradfun.asm
index e1737dd..0ba051d 100644
--- a/libavfilter/x86/vf_gradfun.asm
+++ b/libavfilter/x86/vf_gradfun.asm
@@ -27,6 +27,27 @@ pw_ff: times 8 dw 0xFF
SECTION .text
+%macro FILTER_LINE 1
+ movh m0, [r2+r0]
+ movh m1, [r3+r0]
+ punpcklbw m0, m7
+ punpcklwd m1, m1
+ psllw m0, 7
+ psubw m1, m0
+ PABSW m2, m1
+ pmulhuw m2, m5
+ psubw m2, m6
+ pminsw m2, m7
+ pmullw m2, m2
+ psllw m1, 2
+ paddw m0, %1
+ pmulhw m1, m2
+ paddw m0, m1
+ psraw m0, 7
+ packuswb m0, m0
+ movh [r1+r0], m0
+%endmacro
+
INIT_MMX mmxext
cglobal gradfun_filter_line, 6, 6
movh m5, r4d
@@ -36,48 +57,10 @@ cglobal gradfun_filter_line, 6, 6
mova m3, [r5]
mova m4, [r5+8]
.loop:
- movh m0, [r2+r0]
- movh m1, [r3+r0]
- punpcklbw m0, m7
- punpcklwd m1, m1
- psllw m0, 7
- pxor m2, m2
- psubw m1, m0
- psubw m2, m1
- pmaxsw m2, m1
- pmulhuw m2, m5
- psubw m2, m6
- pminsw m2, m7
- pmullw m2, m2
- paddw m0, m3
- psllw m1, 2
- pmulhw m1, m2
- paddw m0, m1
- psraw m0, 7
- packuswb m0, m0
- movh [r1+r0], m0
+ FILTER_LINE m3
add r0, 4
jge .end
- movh m0, [r2+r0]
- movh m1, [r3+r0]
- punpcklbw m0, m7
- punpcklwd m1, m1
- psllw m0, 7
- pxor m2, m2
- psubw m1, m0
- psubw m2, m1
- pmaxsw m2, m1
- pmulhuw m2, m5
- psubw m2, m6
- pminsw m2, m7
- pmullw m2, m2
- paddw m0, m4
- psllw m1, 2
- pmulhw m1, m2
- paddw m0, m1
- psraw m0, 7
- packuswb m0, m0
- movh [r1+r0], m0
+ FILTER_LINE m4
add r0, 4
jl .loop
.end:
@@ -92,24 +75,7 @@ cglobal gradfun_filter_line, 6, 6, 8
punpcklqdq m5, m5
mova m4, [r5]
.loop:
- movh m0, [r2+r0]
- movh m1, [r3+r0]
- punpcklbw m0, m7
- punpcklwd m1, m1
- psllw m0, 7
- psubw m1, m0
- pabsw m2, m1
- pmulhuw m2, m5
- psubw m2, m6
- pminsw m2, m7
- pmullw m2, m2
- psllw m1, 2
- paddw m0, m4
- pmulhw m1, m2
- paddw m0, m1
- psraw m0, 7
- packuswb m0, m0
- movh [r1+r0], m0
+ FILTER_LINE m4
add r0, 8
jl .loop
REP_RET
--
1.8.3.2
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel