---
 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

Reply via email to