---
More testing would be appreciated
---
 libavfilter/x86/yadif.asm |   83 ++++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 38 deletions(-)

diff --git a/libavfilter/x86/yadif.asm b/libavfilter/x86/yadif.asm
index 5e406a4..da0d6eb 100644
--- a/libavfilter/x86/yadif.asm
+++ b/libavfilter/x86/yadif.asm
@@ -31,8 +31,8 @@ pw_1: times  8 dw 1
 SECTION .text
 
 %macro CHECK 2
-    movu      m2, [curq+mrefsq+%1]
-    movu      m3, [curq+prefsq+%2]
+    movu      m2, [r2+t1+%1]
+    movu      m3, [r2+t0+%2]
     mova      m4, m2
     mova      m5, m2
     pxor      m4, m3
@@ -97,20 +97,20 @@ SECTION .text
 %macro FILTER 3
 .loop%1:
     pxor         m7, m7
-    LOAD          0, [curq+mrefsq]
-    LOAD          1, [curq+prefsq]
+    LOAD          0, [r2+t1]
+    LOAD          1, [r2+t0]
     LOAD          2, [%2]
     LOAD          3, [%3]
     mova         m4, m3
     paddw        m3, m2
     psraw        m3, 1
-    mova   [rsp+ 0], m0
-    mova   [rsp+16], m3
-    mova   [rsp+32], m1
+    mova   [rsp- 0], m0
+    mova   [rsp-16], m3
+    mova   [rsp-32], m1
     psubw        m2, m4
     ABS1         m2, m4
-    LOAD          3, [prevq+mrefsq]
-    LOAD          4, [prevq+prefsq]
+    LOAD          3, [r1+t1]
+    LOAD          4, [r1+t0]
     psubw        m3, m0
     psubw        m4, m1
     ABS1         m3, m5
@@ -119,8 +119,8 @@ SECTION .text
     psrlw        m2, 1
     psrlw        m3, 1
     pmaxsw       m2, m3
-    LOAD          3, [nextq+mrefsq]
-    LOAD          4, [nextq+prefsq]
+    LOAD          3, [r3+t1]
+    LOAD          4, [r3+t0]
     psubw        m3, m0
     psubw        m4, m1
     ABS1         m3, m5
@@ -128,7 +128,7 @@ SECTION .text
     paddw        m3, m4
     psrlw        m3, 1
     pmaxsw       m2, m3
-    mova   [rsp+48], m2
+    mova   [rsp-48], m2
 
     paddw        m1, m0
     paddw        m0, m0
@@ -136,8 +136,8 @@ SECTION .text
     psrlw        m1, 1
     ABS1         m0, m2
 
-    movu         m2, [curq+mrefsq-1]
-    movu         m3, [curq+prefsq-1]
+    movu         m2, [r2+t1-1]
+    movu         m3, [r2+t0-1]
     mova         m4, m2
     psubusb      m2, m3
     psubusb      m3, m4
@@ -163,20 +163,20 @@ SECTION .text
     CHECK 1, -3
     CHECK2
 
-    mova         m6, [rsp+48]
-    cmp DWORD modem, 2
+    mova         m6, [rsp-48]
+    cmp   DWORD r8m, 2
     jge .end%1
-    LOAD          2, [%2+mrefsq*2]
-    LOAD          4, [%3+mrefsq*2]
-    LOAD          3, [%2+prefsq*2]
-    LOAD          5, [%3+prefsq*2]
+    LOAD          2, [%2+t1*2]
+    LOAD          4, [%3+t1*2]
+    LOAD          3, [%2+t0*2]
+    LOAD          5, [%3+t0*2]
     paddw        m2, m4
     paddw        m3, m5
     psrlw        m2, 1
     psrlw        m3, 1
-    mova         m4, [rsp+ 0]
-    mova         m5, [rsp+16]
-    mova         m7, [rsp+32]
+    mova         m4, [rsp- 0]
+    mova         m5, [rsp-16]
+    mova         m7, [rsp-32]
     psubw        m2, m4
     psubw        m3, m7
     mova         m0, m5
@@ -195,7 +195,7 @@ SECTION .text
     pmaxsw       m6, m4
 
 .end%1:
-    mova         m2, [rsp+16]
+    mova         m2, [rsp-16]
     mova         m3, m2
     psubw        m2, m6
     paddw        m3, m6
@@ -203,30 +203,37 @@ SECTION .text
     pminsw       m1, m3
     packuswb     m1, m1
 
-    movh     [dstq], m1
-    add        dstq, mmsize/2
-    add       prevq, mmsize/2
-    add        curq, mmsize/2
-    add       nextq, mmsize/2
-    sub          wd, mmsize/2
+    movh       [r0], m1
+    add          r0, mmsize/2
+    add          r1, mmsize/2
+    add          r2, mmsize/2
+    add          r3, mmsize/2
+    sub   DWORD r4m, mmsize/2
     jg .loop%1
 %endmacro
 
+%assign PAD -1*80
 %macro YADIF 0
-cglobal yadif_filter_line, 7, 7, 8, 16*5, dst, prev, cur, next, w, prefs, \
-                                          mrefs, parity, mode
-    test             wq, wq
+cglobal yadif_filter_line, 4, 7, 8, PAD
+    cmp DWORD r4m, 0
     jle .ret
-    movsxdifnidn prefsq, prefsd
-    movsxdifnidn mrefsq, mrefsd
+%if ARCH_X86_32
+    movifnidn  r4, r5mp
+    movifnidn  r5, r6mp
+       DECLARE_REG_TMP 4,5
+%else
+    movsxdifnidn r5, DWORD r5m
+    movsxdifnidn r6, DWORD r6m
+    DECLARE_REG_TMP 5,6
+%endif
 
-    cmp   DWORD paritym, 0
+    cmp DWORD r7m, 0
     je .parity0
-    FILTER 1, prevq, curq
+    FILTER 1, r1, r2
     jmp .ret
 
 .parity0:
-    FILTER 0, curq, nextq
+    FILTER 0, r2, r3
 
 .ret:
     RET
-- 
1.7.10.4

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to