avfilter/x86/vf_interlace : avfilter/x86/vf_interlace : fix crash when using unaligne...
authorMartin Vignali <martin.vignali@gmail.com>
Thu, 14 Dec 2017 16:55:11 +0000 (17:55 +0100)
committerMartin Vignali <martin.vignali@gmail.com>
Fri, 15 Dec 2017 10:28:29 +0000 (11:28 +0100)
related to ticket 6491

libavfilter/x86/vf_interlace.asm

index f835388..06b2698 100644 (file)
@@ -73,8 +73,8 @@ cglobal lowpass_line_16, 5, 5, 7, dst, h, src, mref, pref
 cglobal lowpass_line_complex, 5, 5, 8, dst, h, src, mref, pref
     pxor m7, m7
 .loop:
-    mova m0, [srcq+mrefq]
-    mova m2, [srcq+prefq]
+    movu m0, [srcq+mrefq]
+    movu m2, [srcq+prefq]
     mova m1, m0
     mova m3, m2
     punpcklbw m0, m7
@@ -85,7 +85,7 @@ cglobal lowpass_line_complex, 5, 5, 8, dst, h, src, mref, pref
     paddw m1, m3
     mova m6, m0
     mova m5, m1
-    mova m2, [srcq]
+    movu m2, [srcq]
     mova m3, m2
     punpcklbw m2, m7
     punpckhbw m3, m7
@@ -100,8 +100,8 @@ cglobal lowpass_line_complex, 5, 5, 8, dst, h, src, mref, pref
     pcmpgtw m6, m2
     pcmpgtw m5, m3
     packsswb m6, m5
-    mova m2, [srcq+mrefq*2]
-    mova m4, [srcq+prefq*2]
+    movu m2, [srcq+mrefq*2]
+    movu m4, [srcq+prefq*2]
     mova m3, m2
     mova m5, m4
     punpcklbw m2, m7
@@ -118,8 +118,9 @@ cglobal lowpass_line_complex, 5, 5, 8, dst, h, src, mref, pref
     psrlw m1, 3
     packuswb m0, m1
     mova m1, m0
-    pmaxub m0, [srcq]
-    pminub m1, [srcq]
+    movu m2, [srcq]
+    pmaxub m0, m2
+    pminub m1, m2
     pand m0, m6
     pandn m6, m1
     por m0, m6
@@ -134,18 +135,18 @@ REP_RET
 cglobal lowpass_line_complex_12, 5, 5, 8, 16, dst, h, src, mref, pref, clip_max
     movd m7, DWORD clip_maxm
     SPLATW m7, m7, 0
-    mova [rsp], m7
+    movu [rsp], m7
 .loop:
-    mova m0, [srcq+mrefq]
-    mova m1, [srcq+mrefq+mmsize]
-    mova m2, [srcq+prefq]
-    mova m3, [srcq+prefq+mmsize]
+    movu m0, [srcq+mrefq]
+    movu m1, [srcq+mrefq+mmsize]
+    movu m2, [srcq+prefq]
+    movu m3, [srcq+prefq+mmsize]
     paddw m0, m2
     paddw m1, m3
     mova m6, m0
     mova m7, m1
-    mova m2, [srcq]
-    mova m3, [srcq+mmsize]
+    movu m2, [srcq]
+    movu m3, [srcq+mmsize]
     paddw m0, m2
     paddw m1, m3
     psllw m2, 1
@@ -156,10 +157,10 @@ cglobal lowpass_line_complex_12, 5, 5, 8, 16, dst, h, src, mref, pref, clip_max
     psllw m1, 1
     pcmpgtw m6, m2
     pcmpgtw m7, m3
-    mova m2, [srcq+2*mrefq]
-    mova m3, [srcq+2*mrefq+mmsize]
-    mova m4, [srcq+2*prefq]
-    mova m5, [srcq+2*prefq+mmsize]
+    movu m2, [srcq+2*mrefq]
+    movu m3, [srcq+2*mrefq+mmsize]
+    movu m4, [srcq+2*prefq]
+    movu m5, [srcq+2*prefq+mmsize]
     paddw m2, m4
     paddw m3, m5
     paddw m0, [pw_4]
@@ -172,10 +173,12 @@ cglobal lowpass_line_complex_12, 5, 5, 8, 16, dst, h, src, mref, pref, clip_max
     pminsw m1, [rsp]
     mova m2, m0
     mova m3, m1
-    pmaxsw m0, [srcq]
-    pmaxsw m1, [srcq+mmsize]
-    pminsw m2, [srcq]
-    pminsw m3, [srcq+mmsize]
+    movu m4, [srcq]
+    pmaxsw m0, m4
+    pminsw m2, m4
+    movu m4, [srcq + mmsize]
+    pmaxsw m1, m4
+    pminsw m3, m4
     pand m0, m6
     pand m1, m7
     pandn m6, m2