11b362b15af34006e6a11974088a46d42b903418eJohann; 21b362b15af34006e6a11974088a46d42b903418eJohann; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann; 41b362b15af34006e6a11974088a46d42b903418eJohann; Use of this source code is governed by a BSD-style license 51b362b15af34006e6a11974088a46d42b903418eJohann; that can be found in the LICENSE file in the root of the source 61b362b15af34006e6a11974088a46d42b903418eJohann; tree. An additional intellectual property rights grant can be found 71b362b15af34006e6a11974088a46d42b903418eJohann; in the file PATENTS. All contributing project authors may 81b362b15af34006e6a11974088a46d42b903418eJohann; be found in the AUTHORS file in the root of the source tree. 91b362b15af34006e6a11974088a46d42b903418eJohann; 101b362b15af34006e6a11974088a46d42b903418eJohann 111b362b15af34006e6a11974088a46d42b903418eJohann 121b362b15af34006e6a11974088a46d42b903418eJohann%include "vpx_ports/x86_abi_support.asm" 131b362b15af34006e6a11974088a46d42b903418eJohann 141b362b15af34006e6a11974088a46d42b903418eJohann%macro LF_ABS 2 151b362b15af34006e6a11974088a46d42b903418eJohann ; %1 value not preserved 161b362b15af34006e6a11974088a46d42b903418eJohann ; %2 value preserved 171b362b15af34006e6a11974088a46d42b903418eJohann ; output in %1 181b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, %2 ; v2 191b362b15af34006e6a11974088a46d42b903418eJohann 201b362b15af34006e6a11974088a46d42b903418eJohann psubusb scratch1, %1 ; v2 - v1 211b362b15af34006e6a11974088a46d42b903418eJohann psubusb %1, %2 ; v1 - v2 221b362b15af34006e6a11974088a46d42b903418eJohann por %1, scratch1 ; abs(v2 - v1) 231b362b15af34006e6a11974088a46d42b903418eJohann%endmacro 241b362b15af34006e6a11974088a46d42b903418eJohann 251b362b15af34006e6a11974088a46d42b903418eJohann%macro LF_FILTER_HEV_MASK 8-9 261b362b15af34006e6a11974088a46d42b903418eJohann 271b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %1, %2 ; abs(p3 - p2) 281b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %2, %3 ; abs(p2 - p1) 291b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %1, %2 ; accumulate mask 301b362b15af34006e6a11974088a46d42b903418eJohann%if %0 == 8 311b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch2, %3 ; save p1 321b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS scratch2, %4 ; abs(p1 - p0) 331b362b15af34006e6a11974088a46d42b903418eJohann%endif 341b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %4, %5 ; abs(p0 - q0) 351b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %5, %6 ; abs(q0 - q1) 361b362b15af34006e6a11974088a46d42b903418eJohann%if %0 == 8 371b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %5, scratch2 ; accumulate hev 381b362b15af34006e6a11974088a46d42b903418eJohann%else 391b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %5, %9 401b362b15af34006e6a11974088a46d42b903418eJohann%endif 411b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %1, %5 ; accumulate mask 421b362b15af34006e6a11974088a46d42b903418eJohann 431b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %3, %6 ; abs(p1 - q1) 441b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %6, %7 ; abs(q1 - q2) 451b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %1, %6 ; accumulate mask 461b362b15af34006e6a11974088a46d42b903418eJohann LF_ABS %7, %8 ; abs(q2 - q3) 471b362b15af34006e6a11974088a46d42b903418eJohann pmaxub %1, %7 ; accumulate mask 481b362b15af34006e6a11974088a46d42b903418eJohann 491b362b15af34006e6a11974088a46d42b903418eJohann paddusb %4, %4 ; 2 * abs(p0 - q0) 501b362b15af34006e6a11974088a46d42b903418eJohann pand %3, [GLOBAL(tfe)] 511b362b15af34006e6a11974088a46d42b903418eJohann psrlw %3, 1 ; abs(p1 - q1) / 2 521b362b15af34006e6a11974088a46d42b903418eJohann paddusb %4, %3 ; abs(p0 - q0) * 2 + abs(p1 - q1) / 2 531b362b15af34006e6a11974088a46d42b903418eJohann 541b362b15af34006e6a11974088a46d42b903418eJohann psubusb %1, [limit] 551b362b15af34006e6a11974088a46d42b903418eJohann psubusb %4, [blimit] 561b362b15af34006e6a11974088a46d42b903418eJohann por %1, %4 571b362b15af34006e6a11974088a46d42b903418eJohann pcmpeqb %1, zero ; mask 581b362b15af34006e6a11974088a46d42b903418eJohann 591b362b15af34006e6a11974088a46d42b903418eJohann psubusb %5, [thresh] 601b362b15af34006e6a11974088a46d42b903418eJohann pcmpeqb %5, zero ; ~hev 611b362b15af34006e6a11974088a46d42b903418eJohann%endmacro 621b362b15af34006e6a11974088a46d42b903418eJohann 631b362b15af34006e6a11974088a46d42b903418eJohann%macro LF_FILTER 6 641b362b15af34006e6a11974088a46d42b903418eJohann ; %1-%4: p1-q1 651b362b15af34006e6a11974088a46d42b903418eJohann ; %5: mask 661b362b15af34006e6a11974088a46d42b903418eJohann ; %6: hev 671b362b15af34006e6a11974088a46d42b903418eJohann 681b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch2, %6 ; save hev 691b362b15af34006e6a11974088a46d42b903418eJohann 701b362b15af34006e6a11974088a46d42b903418eJohann pxor %1, [GLOBAL(t80)] ; ps1 711b362b15af34006e6a11974088a46d42b903418eJohann pxor %4, [GLOBAL(t80)] ; qs1 721b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, %1 731b362b15af34006e6a11974088a46d42b903418eJohann psubsb scratch1, %4 ; signed_char_clamp(ps1 - qs1) 741b362b15af34006e6a11974088a46d42b903418eJohann pandn scratch2, scratch1 ; vp8_filter &= hev 751b362b15af34006e6a11974088a46d42b903418eJohann 761b362b15af34006e6a11974088a46d42b903418eJohann pxor %2, [GLOBAL(t80)] ; ps0 771b362b15af34006e6a11974088a46d42b903418eJohann pxor %3, [GLOBAL(t80)] ; qs0 781b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, %3 791b362b15af34006e6a11974088a46d42b903418eJohann psubsb scratch1, %2 ; qs0 - ps0 801b362b15af34006e6a11974088a46d42b903418eJohann paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0) 811b362b15af34006e6a11974088a46d42b903418eJohann paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0) 821b362b15af34006e6a11974088a46d42b903418eJohann paddsb scratch2, scratch1 ; vp8_filter += (qs0 - ps0) 831b362b15af34006e6a11974088a46d42b903418eJohann pand %5, scratch2 ; &= mask 841b362b15af34006e6a11974088a46d42b903418eJohann 851b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch2, %5 861b362b15af34006e6a11974088a46d42b903418eJohann paddsb %5, [GLOBAL(t4)] ; Filter1 871b362b15af34006e6a11974088a46d42b903418eJohann paddsb scratch2, [GLOBAL(t3)] ; Filter2 881b362b15af34006e6a11974088a46d42b903418eJohann 891b362b15af34006e6a11974088a46d42b903418eJohann ; Filter1 >> 3 901b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, zero 911b362b15af34006e6a11974088a46d42b903418eJohann pcmpgtb scratch1, %5 921b362b15af34006e6a11974088a46d42b903418eJohann psrlw %5, 3 931b362b15af34006e6a11974088a46d42b903418eJohann pand scratch1, [GLOBAL(te0)] 941b362b15af34006e6a11974088a46d42b903418eJohann pand %5, [GLOBAL(t1f)] 951b362b15af34006e6a11974088a46d42b903418eJohann por %5, scratch1 961b362b15af34006e6a11974088a46d42b903418eJohann 971b362b15af34006e6a11974088a46d42b903418eJohann psubsb %3, %5 ; qs0 - Filter1 981b362b15af34006e6a11974088a46d42b903418eJohann pxor %3, [GLOBAL(t80)] 991b362b15af34006e6a11974088a46d42b903418eJohann 1001b362b15af34006e6a11974088a46d42b903418eJohann ; Filter2 >> 3 1011b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, zero 1021b362b15af34006e6a11974088a46d42b903418eJohann pcmpgtb scratch1, scratch2 1031b362b15af34006e6a11974088a46d42b903418eJohann psrlw scratch2, 3 1041b362b15af34006e6a11974088a46d42b903418eJohann pand scratch1, [GLOBAL(te0)] 1051b362b15af34006e6a11974088a46d42b903418eJohann pand scratch2, [GLOBAL(t1f)] 1061b362b15af34006e6a11974088a46d42b903418eJohann por scratch2, scratch1 1071b362b15af34006e6a11974088a46d42b903418eJohann 1081b362b15af34006e6a11974088a46d42b903418eJohann paddsb %2, scratch2 ; ps0 + Filter2 1091b362b15af34006e6a11974088a46d42b903418eJohann pxor %2, [GLOBAL(t80)] 1101b362b15af34006e6a11974088a46d42b903418eJohann 1111b362b15af34006e6a11974088a46d42b903418eJohann ; outer tap adjustments 1121b362b15af34006e6a11974088a46d42b903418eJohann paddsb %5, [GLOBAL(t1)] 1131b362b15af34006e6a11974088a46d42b903418eJohann movdqa scratch1, zero 1141b362b15af34006e6a11974088a46d42b903418eJohann pcmpgtb scratch1, %5 1151b362b15af34006e6a11974088a46d42b903418eJohann psrlw %5, 1 1161b362b15af34006e6a11974088a46d42b903418eJohann pand scratch1, [GLOBAL(t80)] 1171b362b15af34006e6a11974088a46d42b903418eJohann pand %5, [GLOBAL(t7f)] 1181b362b15af34006e6a11974088a46d42b903418eJohann por %5, scratch1 1191b362b15af34006e6a11974088a46d42b903418eJohann pand %5, %6 ; vp8_filter &= ~hev 1201b362b15af34006e6a11974088a46d42b903418eJohann 1211b362b15af34006e6a11974088a46d42b903418eJohann psubsb %4, %5 ; qs1 - vp8_filter 1221b362b15af34006e6a11974088a46d42b903418eJohann pxor %4, [GLOBAL(t80)] 1231b362b15af34006e6a11974088a46d42b903418eJohann 1241b362b15af34006e6a11974088a46d42b903418eJohann paddsb %1, %5 ; ps1 + vp8_filter 1251b362b15af34006e6a11974088a46d42b903418eJohann pxor %1, [GLOBAL(t80)] 1261b362b15af34006e6a11974088a46d42b903418eJohann%endmacro 1271b362b15af34006e6a11974088a46d42b903418eJohann 1281b362b15af34006e6a11974088a46d42b903418eJohann;void vp8_loop_filter_bh_y_sse2 1291b362b15af34006e6a11974088a46d42b903418eJohann;( 1301b362b15af34006e6a11974088a46d42b903418eJohann; unsigned char *src_ptr, 1311b362b15af34006e6a11974088a46d42b903418eJohann; int src_pixel_step, 1321b362b15af34006e6a11974088a46d42b903418eJohann; const char *blimit, 1331b362b15af34006e6a11974088a46d42b903418eJohann; const char *limit, 1341b362b15af34006e6a11974088a46d42b903418eJohann; const char *thresh 1351b362b15af34006e6a11974088a46d42b903418eJohann;) 1361b362b15af34006e6a11974088a46d42b903418eJohannglobal sym(vp8_loop_filter_bh_y_sse2) PRIVATE 1371b362b15af34006e6a11974088a46d42b903418eJohannsym(vp8_loop_filter_bh_y_sse2): 1381b362b15af34006e6a11974088a46d42b903418eJohann 139ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang%if LIBVPX_YASM_WIN64 1401b362b15af34006e6a11974088a46d42b903418eJohann %define src rcx ; src_ptr 1411b362b15af34006e6a11974088a46d42b903418eJohann %define stride rdx ; src_pixel_step 1421b362b15af34006e6a11974088a46d42b903418eJohann %define blimit r8 1431b362b15af34006e6a11974088a46d42b903418eJohann %define limit r9 1441b362b15af34006e6a11974088a46d42b903418eJohann %define thresh r10 1451b362b15af34006e6a11974088a46d42b903418eJohann 1461b362b15af34006e6a11974088a46d42b903418eJohann %define spp rax 1471b362b15af34006e6a11974088a46d42b903418eJohann %define stride3 r11 1481b362b15af34006e6a11974088a46d42b903418eJohann %define stride5 r12 1491b362b15af34006e6a11974088a46d42b903418eJohann %define stride7 r13 1501b362b15af34006e6a11974088a46d42b903418eJohann 1511b362b15af34006e6a11974088a46d42b903418eJohann push rbp 1521b362b15af34006e6a11974088a46d42b903418eJohann mov rbp, rsp 153ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang SAVE_XMM 11 1541b362b15af34006e6a11974088a46d42b903418eJohann push r12 1551b362b15af34006e6a11974088a46d42b903418eJohann push r13 1561b362b15af34006e6a11974088a46d42b903418eJohann mov thresh, arg(4) 1571b362b15af34006e6a11974088a46d42b903418eJohann%else 1581b362b15af34006e6a11974088a46d42b903418eJohann %define src rdi ; src_ptr 1591b362b15af34006e6a11974088a46d42b903418eJohann %define stride rsi ; src_pixel_step 1601b362b15af34006e6a11974088a46d42b903418eJohann %define blimit rdx 1611b362b15af34006e6a11974088a46d42b903418eJohann %define limit rcx 1621b362b15af34006e6a11974088a46d42b903418eJohann %define thresh r8 1631b362b15af34006e6a11974088a46d42b903418eJohann 1641b362b15af34006e6a11974088a46d42b903418eJohann %define spp rax 1651b362b15af34006e6a11974088a46d42b903418eJohann %define stride3 r9 1661b362b15af34006e6a11974088a46d42b903418eJohann %define stride5 r10 1671b362b15af34006e6a11974088a46d42b903418eJohann %define stride7 r11 1681b362b15af34006e6a11974088a46d42b903418eJohann%endif 1691b362b15af34006e6a11974088a46d42b903418eJohann 1701b362b15af34006e6a11974088a46d42b903418eJohann %define scratch1 xmm5 1711b362b15af34006e6a11974088a46d42b903418eJohann %define scratch2 xmm6 1721b362b15af34006e6a11974088a46d42b903418eJohann %define zero xmm7 1731b362b15af34006e6a11974088a46d42b903418eJohann 1741b362b15af34006e6a11974088a46d42b903418eJohann %define i0 [src] 1751b362b15af34006e6a11974088a46d42b903418eJohann %define i1 [spp] 1761b362b15af34006e6a11974088a46d42b903418eJohann %define i2 [src + 2 * stride] 1771b362b15af34006e6a11974088a46d42b903418eJohann %define i3 [spp + 2 * stride] 1781b362b15af34006e6a11974088a46d42b903418eJohann %define i4 [src + 4 * stride] 1791b362b15af34006e6a11974088a46d42b903418eJohann %define i5 [spp + 4 * stride] 1801b362b15af34006e6a11974088a46d42b903418eJohann %define i6 [src + 2 * stride3] 1811b362b15af34006e6a11974088a46d42b903418eJohann %define i7 [spp + 2 * stride3] 1821b362b15af34006e6a11974088a46d42b903418eJohann %define i8 [src + 8 * stride] 1831b362b15af34006e6a11974088a46d42b903418eJohann %define i9 [spp + 8 * stride] 1841b362b15af34006e6a11974088a46d42b903418eJohann %define i10 [src + 2 * stride5] 1851b362b15af34006e6a11974088a46d42b903418eJohann %define i11 [spp + 2 * stride5] 1861b362b15af34006e6a11974088a46d42b903418eJohann %define i12 [src + 4 * stride3] 1871b362b15af34006e6a11974088a46d42b903418eJohann %define i13 [spp + 4 * stride3] 1881b362b15af34006e6a11974088a46d42b903418eJohann %define i14 [src + 2 * stride7] 1891b362b15af34006e6a11974088a46d42b903418eJohann %define i15 [spp + 2 * stride7] 1901b362b15af34006e6a11974088a46d42b903418eJohann 1911b362b15af34006e6a11974088a46d42b903418eJohann ; prep work 1921b362b15af34006e6a11974088a46d42b903418eJohann lea spp, [src + stride] 1931b362b15af34006e6a11974088a46d42b903418eJohann lea stride3, [stride + 2 * stride] 1941b362b15af34006e6a11974088a46d42b903418eJohann lea stride5, [stride3 + 2 * stride] 1951b362b15af34006e6a11974088a46d42b903418eJohann lea stride7, [stride3 + 4 * stride] 1961b362b15af34006e6a11974088a46d42b903418eJohann pxor zero, zero 1971b362b15af34006e6a11974088a46d42b903418eJohann 1981b362b15af34006e6a11974088a46d42b903418eJohann ; load the first set into registers 1991b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i0 2001b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i1 2011b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i2 2021b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i3 2031b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i4 2041b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i5 2051b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, i6 ; q2, will contain abs(p1-p0) 2061b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm10, i7 2071b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm0, xmm1, xmm2, xmm3, xmm4, xmm8, xmm9, xmm10 2081b362b15af34006e6a11974088a46d42b903418eJohann 2091b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i2 2101b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i3 2111b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i4 2121b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i5 2131b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm1, xmm2, xmm3, xmm8, xmm0, xmm4 2141b362b15af34006e6a11974088a46d42b903418eJohann movdqa i2, xmm1 2151b362b15af34006e6a11974088a46d42b903418eJohann movdqa i3, xmm2 2161b362b15af34006e6a11974088a46d42b903418eJohann 2171b362b15af34006e6a11974088a46d42b903418eJohann; second set 2181b362b15af34006e6a11974088a46d42b903418eJohann movdqa i4, xmm3 2191b362b15af34006e6a11974088a46d42b903418eJohann movdqa i5, xmm8 2201b362b15af34006e6a11974088a46d42b903418eJohann 2211b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i6 2221b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i7 2231b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i8 2241b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i9 2251b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm10, i10 ; q2, will contain abs(p1-p0) 2261b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, i11 2271b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm3, xmm8, xmm0, xmm1, xmm2, xmm4, xmm10, xmm11, xmm9 2281b362b15af34006e6a11974088a46d42b903418eJohann 2291b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i6 2301b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i7 2311b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i8 2321b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i9 2331b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm0, xmm1, xmm4, xmm8, xmm3, xmm2 2341b362b15af34006e6a11974088a46d42b903418eJohann movdqa i6, xmm0 2351b362b15af34006e6a11974088a46d42b903418eJohann movdqa i7, xmm1 2361b362b15af34006e6a11974088a46d42b903418eJohann 2371b362b15af34006e6a11974088a46d42b903418eJohann; last set 2381b362b15af34006e6a11974088a46d42b903418eJohann movdqa i8, xmm4 2391b362b15af34006e6a11974088a46d42b903418eJohann movdqa i9, xmm8 2401b362b15af34006e6a11974088a46d42b903418eJohann 2411b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i10 2421b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i11 2431b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i12 2441b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i13 2451b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, i14 ; q2, will contain abs(p1-p0) 2461b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, i15 2471b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm4, xmm8, xmm0, xmm1, xmm2, xmm3, xmm9, xmm11, xmm10 2481b362b15af34006e6a11974088a46d42b903418eJohann 2491b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i10 2501b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i11 2511b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i12 2521b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i13 2531b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm0, xmm1, xmm3, xmm8, xmm4, xmm2 2541b362b15af34006e6a11974088a46d42b903418eJohann movdqa i10, xmm0 2551b362b15af34006e6a11974088a46d42b903418eJohann movdqa i11, xmm1 2561b362b15af34006e6a11974088a46d42b903418eJohann movdqa i12, xmm3 2571b362b15af34006e6a11974088a46d42b903418eJohann movdqa i13, xmm8 2581b362b15af34006e6a11974088a46d42b903418eJohann 259ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang%if LIBVPX_YASM_WIN64 2601b362b15af34006e6a11974088a46d42b903418eJohann pop r13 2611b362b15af34006e6a11974088a46d42b903418eJohann pop r12 262ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang RESTORE_XMM 2631b362b15af34006e6a11974088a46d42b903418eJohann pop rbp 2641b362b15af34006e6a11974088a46d42b903418eJohann%endif 2651b362b15af34006e6a11974088a46d42b903418eJohann 2661b362b15af34006e6a11974088a46d42b903418eJohann ret 2671b362b15af34006e6a11974088a46d42b903418eJohann 2681b362b15af34006e6a11974088a46d42b903418eJohann 2691b362b15af34006e6a11974088a46d42b903418eJohann;void vp8_loop_filter_bv_y_sse2 2701b362b15af34006e6a11974088a46d42b903418eJohann;( 2711b362b15af34006e6a11974088a46d42b903418eJohann; unsigned char *src_ptr, 2721b362b15af34006e6a11974088a46d42b903418eJohann; int src_pixel_step, 2731b362b15af34006e6a11974088a46d42b903418eJohann; const char *blimit, 2741b362b15af34006e6a11974088a46d42b903418eJohann; const char *limit, 2751b362b15af34006e6a11974088a46d42b903418eJohann; const char *thresh 2761b362b15af34006e6a11974088a46d42b903418eJohann;) 2771b362b15af34006e6a11974088a46d42b903418eJohann 2781b362b15af34006e6a11974088a46d42b903418eJohannglobal sym(vp8_loop_filter_bv_y_sse2) PRIVATE 2791b362b15af34006e6a11974088a46d42b903418eJohannsym(vp8_loop_filter_bv_y_sse2): 2801b362b15af34006e6a11974088a46d42b903418eJohann 281ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang%if LIBVPX_YASM_WIN64 2821b362b15af34006e6a11974088a46d42b903418eJohann %define src rcx ; src_ptr 2831b362b15af34006e6a11974088a46d42b903418eJohann %define stride rdx ; src_pixel_step 2841b362b15af34006e6a11974088a46d42b903418eJohann %define blimit r8 2851b362b15af34006e6a11974088a46d42b903418eJohann %define limit r9 2861b362b15af34006e6a11974088a46d42b903418eJohann %define thresh r10 2871b362b15af34006e6a11974088a46d42b903418eJohann 2881b362b15af34006e6a11974088a46d42b903418eJohann %define spp rax 2891b362b15af34006e6a11974088a46d42b903418eJohann %define stride3 r11 2901b362b15af34006e6a11974088a46d42b903418eJohann %define stride5 r12 2911b362b15af34006e6a11974088a46d42b903418eJohann %define stride7 r13 2921b362b15af34006e6a11974088a46d42b903418eJohann 2931b362b15af34006e6a11974088a46d42b903418eJohann push rbp 2941b362b15af34006e6a11974088a46d42b903418eJohann mov rbp, rsp 2951b362b15af34006e6a11974088a46d42b903418eJohann SAVE_XMM 15 2961b362b15af34006e6a11974088a46d42b903418eJohann push r12 2971b362b15af34006e6a11974088a46d42b903418eJohann push r13 2981b362b15af34006e6a11974088a46d42b903418eJohann mov thresh, arg(4) 2991b362b15af34006e6a11974088a46d42b903418eJohann%else 3001b362b15af34006e6a11974088a46d42b903418eJohann %define src rdi 3011b362b15af34006e6a11974088a46d42b903418eJohann %define stride rsi 3021b362b15af34006e6a11974088a46d42b903418eJohann %define blimit rdx 3031b362b15af34006e6a11974088a46d42b903418eJohann %define limit rcx 3041b362b15af34006e6a11974088a46d42b903418eJohann %define thresh r8 3051b362b15af34006e6a11974088a46d42b903418eJohann 3061b362b15af34006e6a11974088a46d42b903418eJohann %define spp rax 3071b362b15af34006e6a11974088a46d42b903418eJohann %define stride3 r9 3081b362b15af34006e6a11974088a46d42b903418eJohann %define stride5 r10 3091b362b15af34006e6a11974088a46d42b903418eJohann %define stride7 r11 3101b362b15af34006e6a11974088a46d42b903418eJohann%endif 3111b362b15af34006e6a11974088a46d42b903418eJohann 3121b362b15af34006e6a11974088a46d42b903418eJohann %define scratch1 xmm5 3131b362b15af34006e6a11974088a46d42b903418eJohann %define scratch2 xmm6 3141b362b15af34006e6a11974088a46d42b903418eJohann %define zero xmm7 3151b362b15af34006e6a11974088a46d42b903418eJohann 3161b362b15af34006e6a11974088a46d42b903418eJohann %define s0 [src] 3171b362b15af34006e6a11974088a46d42b903418eJohann %define s1 [spp] 3181b362b15af34006e6a11974088a46d42b903418eJohann %define s2 [src + 2 * stride] 3191b362b15af34006e6a11974088a46d42b903418eJohann %define s3 [spp + 2 * stride] 3201b362b15af34006e6a11974088a46d42b903418eJohann %define s4 [src + 4 * stride] 3211b362b15af34006e6a11974088a46d42b903418eJohann %define s5 [spp + 4 * stride] 3221b362b15af34006e6a11974088a46d42b903418eJohann %define s6 [src + 2 * stride3] 3231b362b15af34006e6a11974088a46d42b903418eJohann %define s7 [spp + 2 * stride3] 3241b362b15af34006e6a11974088a46d42b903418eJohann %define s8 [src + 8 * stride] 3251b362b15af34006e6a11974088a46d42b903418eJohann %define s9 [spp + 8 * stride] 3261b362b15af34006e6a11974088a46d42b903418eJohann %define s10 [src + 2 * stride5] 3271b362b15af34006e6a11974088a46d42b903418eJohann %define s11 [spp + 2 * stride5] 3281b362b15af34006e6a11974088a46d42b903418eJohann %define s12 [src + 4 * stride3] 3291b362b15af34006e6a11974088a46d42b903418eJohann %define s13 [spp + 4 * stride3] 3301b362b15af34006e6a11974088a46d42b903418eJohann %define s14 [src + 2 * stride7] 3311b362b15af34006e6a11974088a46d42b903418eJohann %define s15 [spp + 2 * stride7] 3321b362b15af34006e6a11974088a46d42b903418eJohann 3331b362b15af34006e6a11974088a46d42b903418eJohann %define i0 [rsp] 3341b362b15af34006e6a11974088a46d42b903418eJohann %define i1 [rsp + 16] 3351b362b15af34006e6a11974088a46d42b903418eJohann %define i2 [rsp + 32] 3361b362b15af34006e6a11974088a46d42b903418eJohann %define i3 [rsp + 48] 3371b362b15af34006e6a11974088a46d42b903418eJohann %define i4 [rsp + 64] 3381b362b15af34006e6a11974088a46d42b903418eJohann %define i5 [rsp + 80] 3391b362b15af34006e6a11974088a46d42b903418eJohann %define i6 [rsp + 96] 3401b362b15af34006e6a11974088a46d42b903418eJohann %define i7 [rsp + 112] 3411b362b15af34006e6a11974088a46d42b903418eJohann %define i8 [rsp + 128] 3421b362b15af34006e6a11974088a46d42b903418eJohann %define i9 [rsp + 144] 3431b362b15af34006e6a11974088a46d42b903418eJohann %define i10 [rsp + 160] 3441b362b15af34006e6a11974088a46d42b903418eJohann %define i11 [rsp + 176] 3451b362b15af34006e6a11974088a46d42b903418eJohann %define i12 [rsp + 192] 3461b362b15af34006e6a11974088a46d42b903418eJohann %define i13 [rsp + 208] 3471b362b15af34006e6a11974088a46d42b903418eJohann %define i14 [rsp + 224] 3481b362b15af34006e6a11974088a46d42b903418eJohann %define i15 [rsp + 240] 3491b362b15af34006e6a11974088a46d42b903418eJohann 3501b362b15af34006e6a11974088a46d42b903418eJohann ALIGN_STACK 16, rax 3511b362b15af34006e6a11974088a46d42b903418eJohann 3521b362b15af34006e6a11974088a46d42b903418eJohann ; reserve stack space 3531b362b15af34006e6a11974088a46d42b903418eJohann %define temp_storage 0 ; size is 256 (16*16) 3541b362b15af34006e6a11974088a46d42b903418eJohann %define stack_size 256 3551b362b15af34006e6a11974088a46d42b903418eJohann sub rsp, stack_size 3561b362b15af34006e6a11974088a46d42b903418eJohann 3571b362b15af34006e6a11974088a46d42b903418eJohann ; prep work 3581b362b15af34006e6a11974088a46d42b903418eJohann lea spp, [src + stride] 3591b362b15af34006e6a11974088a46d42b903418eJohann lea stride3, [stride + 2 * stride] 3601b362b15af34006e6a11974088a46d42b903418eJohann lea stride5, [stride3 + 2 * stride] 3611b362b15af34006e6a11974088a46d42b903418eJohann lea stride7, [stride3 + 4 * stride] 3621b362b15af34006e6a11974088a46d42b903418eJohann 3631b362b15af34006e6a11974088a46d42b903418eJohann ; 8-f 3641b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, s8 3651b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, xmm0 3661b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm0, s9 ; 80 90 3671b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm1, s9 ; 88 98 3681b362b15af34006e6a11974088a46d42b903418eJohann 3691b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, s10 3701b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm2 3711b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm2, s11 ; a0 b0 3721b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm3, s11 ; a8 b8 3731b362b15af34006e6a11974088a46d42b903418eJohann 3741b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, xmm0 3751b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm0, xmm2 ; 80 90 a0 b0 3761b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm4, xmm2 ; 84 94 a4 b4 3771b362b15af34006e6a11974088a46d42b903418eJohann 3781b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, xmm1 3791b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm1, xmm3 ; 88 98 a8 b8 3801b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm2, xmm3 ; 8c 9c ac bc 3811b362b15af34006e6a11974088a46d42b903418eJohann 3821b362b15af34006e6a11974088a46d42b903418eJohann ; using xmm[0124] 3831b362b15af34006e6a11974088a46d42b903418eJohann ; work on next 4 rows 3841b362b15af34006e6a11974088a46d42b903418eJohann 3851b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, s12 3861b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm3 3871b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm3, s13 ; c0 d0 3881b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm5, s13 ; c8 d8 3891b362b15af34006e6a11974088a46d42b903418eJohann 3901b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, s14 3911b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm6 3921b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm6, s15 ; e0 f0 3931b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm7, s15 ; e8 f8 3941b362b15af34006e6a11974088a46d42b903418eJohann 3951b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm3 3961b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm3, xmm6 ; c0 d0 e0 f0 3971b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm8, xmm6 ; c4 d4 e4 f4 3981b362b15af34006e6a11974088a46d42b903418eJohann 3991b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm5 4001b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm5, xmm7 ; c8 d8 e8 f8 4011b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm6, xmm7 ; cc dc ec fc 4021b362b15af34006e6a11974088a46d42b903418eJohann 4031b362b15af34006e6a11974088a46d42b903418eJohann ; pull the third and fourth sets together 4041b362b15af34006e6a11974088a46d42b903418eJohann 4051b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm0 4061b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm0, xmm3 ; 80 90 a0 b0 c0 d0 e0 f0 4071b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm7, xmm3 ; 82 92 a2 b2 c2 d2 e2 f2 4081b362b15af34006e6a11974088a46d42b903418eJohann 4091b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm4 4101b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm4, xmm8 ; 84 94 a4 b4 c4 d4 e4 f4 4111b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm3, xmm8 ; 86 96 a6 b6 c6 d6 e6 f6 4121b362b15af34006e6a11974088a46d42b903418eJohann 4131b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm1 4141b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm1, xmm5 ; 88 88 a8 b8 c8 d8 e8 f8 4151b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm8, xmm5 ; 8a 9a aa ba ca da ea fa 4161b362b15af34006e6a11974088a46d42b903418eJohann 4171b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm2 4181b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm2, xmm6 ; 8c 9c ac bc cc dc ec fc 4191b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm5, xmm6 ; 8e 9e ae be ce de ee fe 4201b362b15af34006e6a11974088a46d42b903418eJohann 4211b362b15af34006e6a11974088a46d42b903418eJohann ; save the calculations. we only have 15 registers ... 4221b362b15af34006e6a11974088a46d42b903418eJohann movdqa i0, xmm0 4231b362b15af34006e6a11974088a46d42b903418eJohann movdqa i1, xmm7 4241b362b15af34006e6a11974088a46d42b903418eJohann movdqa i2, xmm4 4251b362b15af34006e6a11974088a46d42b903418eJohann movdqa i3, xmm3 4261b362b15af34006e6a11974088a46d42b903418eJohann movdqa i4, xmm1 4271b362b15af34006e6a11974088a46d42b903418eJohann movdqa i5, xmm8 4281b362b15af34006e6a11974088a46d42b903418eJohann movdqa i6, xmm2 4291b362b15af34006e6a11974088a46d42b903418eJohann movdqa i7, xmm5 4301b362b15af34006e6a11974088a46d42b903418eJohann 4311b362b15af34006e6a11974088a46d42b903418eJohann ; 0-7 4321b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, s0 4331b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, xmm0 4341b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm0, s1 ; 00 10 4351b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm1, s1 ; 08 18 4361b362b15af34006e6a11974088a46d42b903418eJohann 4371b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, s2 4381b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm2 4391b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm2, s3 ; 20 30 4401b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm3, s3 ; 28 38 4411b362b15af34006e6a11974088a46d42b903418eJohann 4421b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, xmm0 4431b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm0, xmm2 ; 00 10 20 30 4441b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm4, xmm2 ; 04 14 24 34 4451b362b15af34006e6a11974088a46d42b903418eJohann 4461b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, xmm1 4471b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm1, xmm3 ; 08 18 28 38 4481b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm2, xmm3 ; 0c 1c 2c 3c 4491b362b15af34006e6a11974088a46d42b903418eJohann 4501b362b15af34006e6a11974088a46d42b903418eJohann ; using xmm[0124] 4511b362b15af34006e6a11974088a46d42b903418eJohann ; work on next 4 rows 4521b362b15af34006e6a11974088a46d42b903418eJohann 4531b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, s4 4541b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm3 4551b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm3, s5 ; 40 50 4561b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm5, s5 ; 48 58 4571b362b15af34006e6a11974088a46d42b903418eJohann 4581b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, s6 4591b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm6 4601b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm6, s7 ; 60 70 4611b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm7, s7 ; 68 78 4621b362b15af34006e6a11974088a46d42b903418eJohann 4631b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm3 4641b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm3, xmm6 ; 40 50 60 70 4651b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm8, xmm6 ; 44 54 64 74 4661b362b15af34006e6a11974088a46d42b903418eJohann 4671b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm5 4681b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm5, xmm7 ; 48 58 68 78 4691b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm6, xmm7 ; 4c 5c 6c 7c 4701b362b15af34006e6a11974088a46d42b903418eJohann 4711b362b15af34006e6a11974088a46d42b903418eJohann ; pull the first two sets together 4721b362b15af34006e6a11974088a46d42b903418eJohann 4731b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm0 4741b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm0, xmm3 ; 00 10 20 30 40 50 60 70 4751b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm7, xmm3 ; 02 12 22 32 42 52 62 72 4761b362b15af34006e6a11974088a46d42b903418eJohann 4771b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm4 4781b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm4, xmm8 ; 04 14 24 34 44 54 64 74 4791b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm3, xmm8 ; 06 16 26 36 46 56 66 76 4801b362b15af34006e6a11974088a46d42b903418eJohann 4811b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm1 4821b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm1, xmm5 ; 08 18 28 38 48 58 68 78 4831b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm8, xmm5 ; 0a 1a 2a 3a 4a 5a 6a 7a 4841b362b15af34006e6a11974088a46d42b903418eJohann 4851b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm2 4861b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm2, xmm6 ; 0c 1c 2c 3c 4c 5c 6c 7c 4871b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm5, xmm6 ; 0e 1e 2e 3e 4e 5e 6e 7e 4881b362b15af34006e6a11974088a46d42b903418eJohann ; final combination 4891b362b15af34006e6a11974088a46d42b903418eJohann 4901b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm0 4911b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm0, i0 4921b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm6, i0 4931b362b15af34006e6a11974088a46d42b903418eJohann 4941b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, xmm7 4951b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm7, i1 4961b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm9, i1 4971b362b15af34006e6a11974088a46d42b903418eJohann 4981b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm10, xmm4 4991b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm4, i2 5001b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm10, i2 5011b362b15af34006e6a11974088a46d42b903418eJohann 5021b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, xmm3 5031b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm3, i3 5041b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm11, i3 5051b362b15af34006e6a11974088a46d42b903418eJohann 5061b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm12, xmm1 5071b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm1, i4 5081b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm12, i4 5091b362b15af34006e6a11974088a46d42b903418eJohann 5101b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm13, xmm8 5111b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm8, i5 5121b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm13, i5 5131b362b15af34006e6a11974088a46d42b903418eJohann 5141b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm14, xmm2 5151b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm2, i6 5161b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm14, i6 5171b362b15af34006e6a11974088a46d42b903418eJohann 5181b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm15, xmm5 5191b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm5, i7 5201b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm15, i7 5211b362b15af34006e6a11974088a46d42b903418eJohann 5221b362b15af34006e6a11974088a46d42b903418eJohann movdqa i0, xmm0 5231b362b15af34006e6a11974088a46d42b903418eJohann movdqa i1, xmm6 5241b362b15af34006e6a11974088a46d42b903418eJohann movdqa i2, xmm7 5251b362b15af34006e6a11974088a46d42b903418eJohann movdqa i3, xmm9 5261b362b15af34006e6a11974088a46d42b903418eJohann movdqa i4, xmm4 5271b362b15af34006e6a11974088a46d42b903418eJohann movdqa i5, xmm10 5281b362b15af34006e6a11974088a46d42b903418eJohann movdqa i6, xmm3 5291b362b15af34006e6a11974088a46d42b903418eJohann movdqa i7, xmm11 5301b362b15af34006e6a11974088a46d42b903418eJohann movdqa i8, xmm1 5311b362b15af34006e6a11974088a46d42b903418eJohann movdqa i9, xmm12 5321b362b15af34006e6a11974088a46d42b903418eJohann movdqa i10, xmm8 5331b362b15af34006e6a11974088a46d42b903418eJohann movdqa i11, xmm13 5341b362b15af34006e6a11974088a46d42b903418eJohann movdqa i12, xmm2 5351b362b15af34006e6a11974088a46d42b903418eJohann movdqa i13, xmm14 5361b362b15af34006e6a11974088a46d42b903418eJohann movdqa i14, xmm5 5371b362b15af34006e6a11974088a46d42b903418eJohann movdqa i15, xmm15 5381b362b15af34006e6a11974088a46d42b903418eJohann 5391b362b15af34006e6a11974088a46d42b903418eJohann; TRANSPOSED DATA AVAILABLE ON THE STACK 5401b362b15af34006e6a11974088a46d42b903418eJohann 5411b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm12, xmm6 5421b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm13, xmm7 5431b362b15af34006e6a11974088a46d42b903418eJohann 5441b362b15af34006e6a11974088a46d42b903418eJohann pxor zero, zero 5451b362b15af34006e6a11974088a46d42b903418eJohann 5461b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm0, xmm12, xmm13, xmm9, xmm4, xmm10, xmm3, xmm11 5471b362b15af34006e6a11974088a46d42b903418eJohann 5481b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i2 5491b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i3 5501b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i4 5511b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, i5 5521b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm1, xmm2, xmm8, xmm9, xmm0, xmm4 5531b362b15af34006e6a11974088a46d42b903418eJohann movdqa i2, xmm1 5541b362b15af34006e6a11974088a46d42b903418eJohann movdqa i3, xmm2 5551b362b15af34006e6a11974088a46d42b903418eJohann 5561b362b15af34006e6a11974088a46d42b903418eJohann; second set 5571b362b15af34006e6a11974088a46d42b903418eJohann movdqa i4, xmm8 5581b362b15af34006e6a11974088a46d42b903418eJohann movdqa i5, xmm9 5591b362b15af34006e6a11974088a46d42b903418eJohann 5601b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i6 5611b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i7 5621b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i8 5631b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i9 5641b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm10, i10 ; q2, will contain abs(p1-p0) 5651b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, i11 5661b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm8, xmm9, xmm0, xmm1, xmm2, xmm4, xmm10, xmm11, xmm3 5671b362b15af34006e6a11974088a46d42b903418eJohann 5681b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i6 5691b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i7 5701b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i8 5711b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i9 5721b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm0, xmm1, xmm3, xmm4, xmm8, xmm2 5731b362b15af34006e6a11974088a46d42b903418eJohann movdqa i6, xmm0 5741b362b15af34006e6a11974088a46d42b903418eJohann movdqa i7, xmm1 5751b362b15af34006e6a11974088a46d42b903418eJohann 5761b362b15af34006e6a11974088a46d42b903418eJohann; last set 5771b362b15af34006e6a11974088a46d42b903418eJohann movdqa i8, xmm3 5781b362b15af34006e6a11974088a46d42b903418eJohann movdqa i9, xmm4 5791b362b15af34006e6a11974088a46d42b903418eJohann 5801b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i10 5811b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i11 5821b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i12 5831b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i13 5841b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, i14 ; q2, will contain abs(p1-p0) 5851b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, i15 5861b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER_HEV_MASK xmm3, xmm4, xmm0, xmm1, xmm2, xmm8, xmm9, xmm11, xmm10 5871b362b15af34006e6a11974088a46d42b903418eJohann 5881b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i10 5891b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, i11 5901b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, i12 5911b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, i13 5921b362b15af34006e6a11974088a46d42b903418eJohannLF_FILTER xmm0, xmm1, xmm4, xmm8, xmm3, xmm2 5931b362b15af34006e6a11974088a46d42b903418eJohann movdqa i10, xmm0 5941b362b15af34006e6a11974088a46d42b903418eJohann movdqa i11, xmm1 5951b362b15af34006e6a11974088a46d42b903418eJohann movdqa i12, xmm4 5961b362b15af34006e6a11974088a46d42b903418eJohann movdqa i13, xmm8 5971b362b15af34006e6a11974088a46d42b903418eJohann 5981b362b15af34006e6a11974088a46d42b903418eJohann 5991b362b15af34006e6a11974088a46d42b903418eJohann; RESHUFFLE AND WRITE OUT 6001b362b15af34006e6a11974088a46d42b903418eJohann ; 8-f 6011b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i8 6021b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, xmm0 6031b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm0, i9 ; 80 90 6041b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm1, i9 ; 88 98 6051b362b15af34006e6a11974088a46d42b903418eJohann 6061b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i10 6071b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm2 6081b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm2, i11 ; a0 b0 6091b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm3, i11 ; a8 b8 6101b362b15af34006e6a11974088a46d42b903418eJohann 6111b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, xmm0 6121b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm0, xmm2 ; 80 90 a0 b0 6131b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm4, xmm2 ; 84 94 a4 b4 6141b362b15af34006e6a11974088a46d42b903418eJohann 6151b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, xmm1 6161b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm1, xmm3 ; 88 98 a8 b8 6171b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm2, xmm3 ; 8c 9c ac bc 6181b362b15af34006e6a11974088a46d42b903418eJohann 6191b362b15af34006e6a11974088a46d42b903418eJohann ; using xmm[0124] 6201b362b15af34006e6a11974088a46d42b903418eJohann ; work on next 4 rows 6211b362b15af34006e6a11974088a46d42b903418eJohann 6221b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i12 6231b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm3 6241b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm3, i13 ; c0 d0 6251b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm5, i13 ; c8 d8 6261b362b15af34006e6a11974088a46d42b903418eJohann 6271b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, i14 6281b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm6 6291b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm6, i15 ; e0 f0 6301b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm7, i15 ; e8 f8 6311b362b15af34006e6a11974088a46d42b903418eJohann 6321b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm3 6331b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm3, xmm6 ; c0 d0 e0 f0 6341b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm8, xmm6 ; c4 d4 e4 f4 6351b362b15af34006e6a11974088a46d42b903418eJohann 6361b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm5 6371b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm5, xmm7 ; c8 d8 e8 f8 6381b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm6, xmm7 ; cc dc ec fc 6391b362b15af34006e6a11974088a46d42b903418eJohann 6401b362b15af34006e6a11974088a46d42b903418eJohann ; pull the third and fourth sets together 6411b362b15af34006e6a11974088a46d42b903418eJohann 6421b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm0 6431b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm0, xmm3 ; 80 90 a0 b0 c0 d0 e0 f0 6441b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm7, xmm3 ; 82 92 a2 b2 c2 d2 e2 f2 6451b362b15af34006e6a11974088a46d42b903418eJohann 6461b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm4 6471b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm4, xmm8 ; 84 94 a4 b4 c4 d4 e4 f4 6481b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm3, xmm8 ; 86 96 a6 b6 c6 d6 e6 f6 6491b362b15af34006e6a11974088a46d42b903418eJohann 6501b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm1 6511b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm1, xmm5 ; 88 88 a8 b8 c8 d8 e8 f8 6521b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm8, xmm5 ; 8a 9a aa ba ca da ea fa 6531b362b15af34006e6a11974088a46d42b903418eJohann 6541b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm2 6551b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm2, xmm6 ; 8c 9c ac bc cc dc ec fc 6561b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm5, xmm6 ; 8e 9e ae be ce de ee fe 6571b362b15af34006e6a11974088a46d42b903418eJohann 6581b362b15af34006e6a11974088a46d42b903418eJohann ; save the calculations. we only have 15 registers ... 6591b362b15af34006e6a11974088a46d42b903418eJohann movdqa i8, xmm0 6601b362b15af34006e6a11974088a46d42b903418eJohann movdqa i9, xmm7 6611b362b15af34006e6a11974088a46d42b903418eJohann movdqa i10, xmm4 6621b362b15af34006e6a11974088a46d42b903418eJohann movdqa i11, xmm3 6631b362b15af34006e6a11974088a46d42b903418eJohann movdqa i12, xmm1 6641b362b15af34006e6a11974088a46d42b903418eJohann movdqa i13, xmm8 6651b362b15af34006e6a11974088a46d42b903418eJohann movdqa i14, xmm2 6661b362b15af34006e6a11974088a46d42b903418eJohann movdqa i15, xmm5 6671b362b15af34006e6a11974088a46d42b903418eJohann 6681b362b15af34006e6a11974088a46d42b903418eJohann ; 0-7 6691b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm0, i0 6701b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm1, xmm0 6711b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm0, i1 ; 00 10 6721b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm1, i1 ; 08 18 6731b362b15af34006e6a11974088a46d42b903418eJohann 6741b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, i2 6751b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm2 6761b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm2, i3 ; 20 30 6771b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm3, i3 ; 28 38 6781b362b15af34006e6a11974088a46d42b903418eJohann 6791b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm4, xmm0 6801b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm0, xmm2 ; 00 10 20 30 6811b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm4, xmm2 ; 04 14 24 34 6821b362b15af34006e6a11974088a46d42b903418eJohann 6831b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm2, xmm1 6841b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm1, xmm3 ; 08 18 28 38 6851b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm2, xmm3 ; 0c 1c 2c 3c 6861b362b15af34006e6a11974088a46d42b903418eJohann 6871b362b15af34006e6a11974088a46d42b903418eJohann ; using xmm[0124] 6881b362b15af34006e6a11974088a46d42b903418eJohann ; work on next 4 rows 6891b362b15af34006e6a11974088a46d42b903418eJohann 6901b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, i4 6911b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm3 6921b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm3, i5 ; 40 50 6931b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm5, i5 ; 48 58 6941b362b15af34006e6a11974088a46d42b903418eJohann 6951b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, i6 6961b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm6 6971b362b15af34006e6a11974088a46d42b903418eJohann punpcklbw xmm6, i7 ; 60 70 6981b362b15af34006e6a11974088a46d42b903418eJohann punpckhbw xmm7, i7 ; 68 78 6991b362b15af34006e6a11974088a46d42b903418eJohann 7001b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm3 7011b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm3, xmm6 ; 40 50 60 70 7021b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm8, xmm6 ; 44 54 64 74 7031b362b15af34006e6a11974088a46d42b903418eJohann 7041b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm5 7051b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd xmm5, xmm7 ; 48 58 68 78 7061b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd xmm6, xmm7 ; 4c 5c 6c 7c 7071b362b15af34006e6a11974088a46d42b903418eJohann 7081b362b15af34006e6a11974088a46d42b903418eJohann ; pull the first two sets together 7091b362b15af34006e6a11974088a46d42b903418eJohann 7101b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm7, xmm0 7111b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm0, xmm3 ; 00 10 20 30 40 50 60 70 7121b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm7, xmm3 ; 02 12 22 32 42 52 62 72 7131b362b15af34006e6a11974088a46d42b903418eJohann 7141b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm3, xmm4 7151b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm4, xmm8 ; 04 14 24 34 44 54 64 74 7161b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm3, xmm8 ; 06 16 26 36 46 56 66 76 7171b362b15af34006e6a11974088a46d42b903418eJohann 7181b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm8, xmm1 7191b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm1, xmm5 ; 08 18 28 38 48 58 68 78 7201b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm8, xmm5 ; 0a 1a 2a 3a 4a 5a 6a 7a 7211b362b15af34006e6a11974088a46d42b903418eJohann 7221b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm5, xmm2 7231b362b15af34006e6a11974088a46d42b903418eJohann punpckldq xmm2, xmm6 ; 0c 1c 2c 3c 4c 5c 6c 7c 7241b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq xmm5, xmm6 ; 0e 1e 2e 3e 4e 5e 6e 7e 7251b362b15af34006e6a11974088a46d42b903418eJohann ; final combination 7261b362b15af34006e6a11974088a46d42b903418eJohann 7271b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm6, xmm0 7281b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm0, i8 7291b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm6, i8 7301b362b15af34006e6a11974088a46d42b903418eJohann 7311b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm9, xmm7 7321b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm7, i9 7331b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm9, i9 7341b362b15af34006e6a11974088a46d42b903418eJohann 7351b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm10, xmm4 7361b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm4, i10 7371b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm10, i10 7381b362b15af34006e6a11974088a46d42b903418eJohann 7391b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm11, xmm3 7401b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm3, i11 7411b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm11, i11 7421b362b15af34006e6a11974088a46d42b903418eJohann 7431b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm12, xmm1 7441b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm1, i12 7451b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm12, i12 7461b362b15af34006e6a11974088a46d42b903418eJohann 7471b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm13, xmm8 7481b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm8, i13 7491b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm13, i13 7501b362b15af34006e6a11974088a46d42b903418eJohann 7511b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm14, xmm2 7521b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm2, i14 7531b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm14, i14 7541b362b15af34006e6a11974088a46d42b903418eJohann 7551b362b15af34006e6a11974088a46d42b903418eJohann movdqa xmm15, xmm5 7561b362b15af34006e6a11974088a46d42b903418eJohann punpcklqdq xmm5, i15 7571b362b15af34006e6a11974088a46d42b903418eJohann punpckhqdq xmm15, i15 7581b362b15af34006e6a11974088a46d42b903418eJohann 7591b362b15af34006e6a11974088a46d42b903418eJohann movdqa s0, xmm0 7601b362b15af34006e6a11974088a46d42b903418eJohann movdqa s1, xmm6 7611b362b15af34006e6a11974088a46d42b903418eJohann movdqa s2, xmm7 7621b362b15af34006e6a11974088a46d42b903418eJohann movdqa s3, xmm9 7631b362b15af34006e6a11974088a46d42b903418eJohann movdqa s4, xmm4 7641b362b15af34006e6a11974088a46d42b903418eJohann movdqa s5, xmm10 7651b362b15af34006e6a11974088a46d42b903418eJohann movdqa s6, xmm3 7661b362b15af34006e6a11974088a46d42b903418eJohann movdqa s7, xmm11 7671b362b15af34006e6a11974088a46d42b903418eJohann movdqa s8, xmm1 7681b362b15af34006e6a11974088a46d42b903418eJohann movdqa s9, xmm12 7691b362b15af34006e6a11974088a46d42b903418eJohann movdqa s10, xmm8 7701b362b15af34006e6a11974088a46d42b903418eJohann movdqa s11, xmm13 7711b362b15af34006e6a11974088a46d42b903418eJohann movdqa s12, xmm2 7721b362b15af34006e6a11974088a46d42b903418eJohann movdqa s13, xmm14 7731b362b15af34006e6a11974088a46d42b903418eJohann movdqa s14, xmm5 7741b362b15af34006e6a11974088a46d42b903418eJohann movdqa s15, xmm15 7751b362b15af34006e6a11974088a46d42b903418eJohann 7761b362b15af34006e6a11974088a46d42b903418eJohann ; free stack space 7771b362b15af34006e6a11974088a46d42b903418eJohann add rsp, stack_size 7781b362b15af34006e6a11974088a46d42b903418eJohann 7791b362b15af34006e6a11974088a46d42b903418eJohann ; un-ALIGN_STACK 7801b362b15af34006e6a11974088a46d42b903418eJohann pop rsp 7811b362b15af34006e6a11974088a46d42b903418eJohann 782ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang%if LIBVPX_YASM_WIN64 7831b362b15af34006e6a11974088a46d42b903418eJohann pop r13 7841b362b15af34006e6a11974088a46d42b903418eJohann pop r12 7851b362b15af34006e6a11974088a46d42b903418eJohann RESTORE_XMM 7861b362b15af34006e6a11974088a46d42b903418eJohann pop rbp 7871b362b15af34006e6a11974088a46d42b903418eJohann%endif 7881b362b15af34006e6a11974088a46d42b903418eJohann 7891b362b15af34006e6a11974088a46d42b903418eJohann ret 7901b362b15af34006e6a11974088a46d42b903418eJohann 7911b362b15af34006e6a11974088a46d42b903418eJohannSECTION_RODATA 7921b362b15af34006e6a11974088a46d42b903418eJohannalign 16 7931b362b15af34006e6a11974088a46d42b903418eJohannte0: 7941b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0xe0 7951b362b15af34006e6a11974088a46d42b903418eJohannalign 16 7961b362b15af34006e6a11974088a46d42b903418eJohannt7f: 7971b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x7f 7981b362b15af34006e6a11974088a46d42b903418eJohannalign 16 7991b362b15af34006e6a11974088a46d42b903418eJohanntfe: 8001b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0xfe 8011b362b15af34006e6a11974088a46d42b903418eJohannalign 16 8021b362b15af34006e6a11974088a46d42b903418eJohannt1f: 8031b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x1f 8041b362b15af34006e6a11974088a46d42b903418eJohannalign 16 8051b362b15af34006e6a11974088a46d42b903418eJohannt80: 8061b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x80 8071b362b15af34006e6a11974088a46d42b903418eJohannalign 16 8081b362b15af34006e6a11974088a46d42b903418eJohannt1: 8091b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x01 8101b362b15af34006e6a11974088a46d42b903418eJohannalign 16 8111b362b15af34006e6a11974088a46d42b903418eJohannt3: 8121b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x03 8131b362b15af34006e6a11974088a46d42b903418eJohannalign 16 8141b362b15af34006e6a11974088a46d42b903418eJohannt4: 8151b362b15af34006e6a11974088a46d42b903418eJohann times 16 db 0x04 816