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