x86: Fix integral_init4/8h_avx2
authorHenrik Gramner <henrik@gramner.com>
Thu, 27 Aug 2015 17:53:00 +0000 (19:53 +0200)
committerHenrik Gramner <henrik@gramner.com>
Thu, 27 Aug 2015 17:56:58 +0000 (19:56 +0200)
The AVX2 implementation was using the wrong offsets. It went undetected due to
the checkasm test being incorrect.

common/x86/mc-a2.asm

index 7fa72fc..727e9c8 100644 (file)
@@ -1511,11 +1511,12 @@ cglobal integral_init4h, 3,4
     neg     r2
     pxor    m4, m4
 .loop:
-    mova    m0, [r1+r2]
+    mova   xm0, [r1+r2]
+    mova   xm1, [r1+r2+16]
 %if mmsize==32
-    movu    m1, [r1+r2+8]
+    vinserti128 m0, m0, [r1+r2+ 8], 1
+    vinserti128 m1, m1, [r1+r2+24], 1
 %else
-    mova    m1, [r1+r2+16]
     palignr m1, m0, 8
 %endif
     mpsadbw m0, m4, 0
@@ -1541,13 +1542,14 @@ cglobal integral_init8h, 3,4
     neg     r2
     pxor    m4, m4
 .loop:
-    mova    m0, [r1+r2]
+    mova   xm0, [r1+r2]
+    mova   xm1, [r1+r2+16]
 %if mmsize==32
-    movu    m1, [r1+r2+8]
+    vinserti128 m0, m0, [r1+r2+ 8], 1
+    vinserti128 m1, m1, [r1+r2+24], 1
     mpsadbw m2, m0, m4, 100100b
     mpsadbw m3, m1, m4, 100100b
 %else
-    mova    m1, [r1+r2+16]
     palignr m1, m0, 8
     mpsadbw m2, m0, m4, 100b
     mpsadbw m3, m1, m4, 100b