16fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; 26fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 36fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; 46fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; Use of this source code is governed by a BSD-style license 56fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; that can be found in the LICENSE file in the root of the source 66fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; tree. An additional intellectual property rights grant can be found 76fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; in the file PATENTS. All contributing project authors may 86fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; be found in the AUTHORS file in the root of the source tree. 96fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; 106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%include "vpx_ports/x86_abi_support.asm" 136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%macro PROCESS_16X2X8 1 156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%if %1 166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm0, XMMWORD PTR [rsi] 176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm1, MMWORD PTR [rdi] 186fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm2, MMWORD PTR [rdi+16] 206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm1, xmm3 216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm3, xmm2 226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm1 246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm1, xmm0, 0x0 256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org psrldq xmm0, 8 286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm4, xmm3 306fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm3, xmm0, 0x0 316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm4, xmm0, 0x5 326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm2 346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm3 356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm4 366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%else 376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm0, XMMWORD PTR [rsi] 386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi] 396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm2, MMWORD PTR [rdi+16] 416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 426fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm3, xmm2 436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm5 456fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 486fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org psrldq xmm0, 8 496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm4, xmm3 516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm3, xmm0, 0x0 526fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm4, xmm0, 0x5 536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 546fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm2 556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm3 566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm4 576fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 586fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 596fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endif 606fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm0, XMMWORD PTR [rsi + rax] 616fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi+ rdx] 626fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+ rdx+8] 636fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm2, MMWORD PTR [rdi+ rdx+16] 646fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 656fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm3, xmm2 666fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 676fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rsi, [rsi+rax*2] 686fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rdi, [rdi+rdx*2] 696fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 706fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm5 716fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 726fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 736fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 746fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org psrldq xmm0, 8 756fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm4, xmm3 766fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm3, xmm0, 0x0 776fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm4, xmm0, 0x5 786fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 796fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm2 806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm3 816fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm4 826fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 836fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endmacro 856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 866fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%macro PROCESS_8X2X8 1 876fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%if %1 886fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm0, MMWORD PTR [rsi] 896fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm1, MMWORD PTR [rdi] 906fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 916fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm1, xmm3 926fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 936fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm1 946fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm1, xmm0, 0x0 956fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 966fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm2 976fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%else 986fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm0, MMWORD PTR [rsi] 996fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi] 1006fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 1016fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 1026fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1036fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm5 1046fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 1056fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 1066fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm2 1076fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1086fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 1096fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endif 1106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm0, MMWORD PTR [rsi + rax] 1116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi+ rdx] 1126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+ rdx+8] 1136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 1146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rsi, [rsi+rax*2] 1166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rdi, [rdi+rdx*2] 1176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1186fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movdqa xmm2, xmm5 1196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 1206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm2, xmm0, 0x5 1216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm5, xmm2 1226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 1246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endmacro 1256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%macro PROCESS_4X2X8 1 1276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%if %1 1286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movd xmm0, [rsi] 1296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm1, MMWORD PTR [rdi] 1306fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 1316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm1, xmm3 1326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm1, xmm0, 0x0 1346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%else 1356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movd xmm0, [rsi] 1366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi] 1376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+8] 1386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 1396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 1416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1426fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 1436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endif 1446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movd xmm0, [rsi + rax] 1456fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm5, MMWORD PTR [rdi+ rdx] 1466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org movq xmm3, MMWORD PTR [rdi+ rdx+8] 1476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org punpcklqdq xmm5, xmm3 1486fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rsi, [rsi+rax*2] 1506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org lea rdi, [rdi+rdx*2] 1516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1526fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mpsadbw xmm5, xmm0, 0x0 1536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1546fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org paddw xmm1, xmm5 1556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org%endmacro 1566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1573f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org%macro WRITE_AS_INTS 0 1583f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(4) ;Results 1593f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org pxor xmm0, xmm0 1603f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movdqa xmm2, xmm1 1613f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org punpcklwd xmm1, xmm0 1623f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org punpckhwd xmm2, xmm0 1633f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org 1643f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movdqa [rdi], xmm1 1653f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movdqa [rdi + 16], xmm2 1663f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org%endmacro 1676fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1686fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;void vp9_sad16x16x8_sse4( 1696fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *src_ptr, 1706fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int src_stride, 1716fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *ref_ptr, 1726fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int ref_stride, 1736fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; unsigned short *sad_array); 174afc4a270e3f2ecbbb47aad63c6a6a77ca902d30efgalligan@chromium.orgglobal sym(vp9_sad16x16x8_sse4) PRIVATE 1756fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgsym(vp9_sad16x16x8_sse4): 1766fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rbp 1776fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mov rbp, rsp 1786fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org SHADOW_ARGS_TO_STACK 5 1796fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rsi 1806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rdi 1816fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; end prolog 1826fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1833f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 1843f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(2) ;ref_ptr 1856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1863f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rax, dword ptr arg(1) ;src_stride 1873f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rdx, dword ptr arg(3) ;ref_stride 1886fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1893f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 1 1903f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1913f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1923f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1933f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1943f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1953f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1963f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 1976fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 1983f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org WRITE_AS_INTS 1996fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2006fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; begin epilog 2016fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rdi 2026fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rsi 2036fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org UNSHADOW_ARGS 2046fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rbp 2056fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ret 2066fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2076fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2086fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;void vp9_sad16x8x8_sse4( 2096fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *src_ptr, 2106fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int src_stride, 2116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *ref_ptr, 2126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int ref_stride, 2136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; unsigned short *sad_array 2146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;); 215afc4a270e3f2ecbbb47aad63c6a6a77ca902d30efgalligan@chromium.orgglobal sym(vp9_sad16x8x8_sse4) PRIVATE 2166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgsym(vp9_sad16x8x8_sse4): 2176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rbp 2186fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mov rbp, rsp 2196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org SHADOW_ARGS_TO_STACK 5 2206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rsi 2216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rdi 2226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; end prolog 2236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2243f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 2253f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(2) ;ref_ptr 2266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2273f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rax, dword ptr arg(1) ;src_stride 2283f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rdx, dword ptr arg(3) ;ref_stride 2296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2303f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 1 2313f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 2323f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 2333f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_16X2X8 0 2346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2353f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org WRITE_AS_INTS 2366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; begin epilog 2386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rdi 2396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rsi 2406fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org UNSHADOW_ARGS 2416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rbp 2426fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ret 2436fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2456fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;void vp9_sad8x8x8_sse4( 2466fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *src_ptr, 2476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int src_stride, 2486fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *ref_ptr, 2496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int ref_stride, 2506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; unsigned short *sad_array 2516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;); 252afc4a270e3f2ecbbb47aad63c6a6a77ca902d30efgalligan@chromium.orgglobal sym(vp9_sad8x8x8_sse4) PRIVATE 2536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgsym(vp9_sad8x8x8_sse4): 2546fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rbp 2556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mov rbp, rsp 2566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org SHADOW_ARGS_TO_STACK 5 2576fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rsi 2586fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rdi 2596fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; end prolog 2606fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2613f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 2623f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(2) ;ref_ptr 2636fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2643f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rax, dword ptr arg(1) ;src_stride 2653f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rdx, dword ptr arg(3) ;ref_stride 2666fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2673f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 1 2683f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 2693f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 2703f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 2716fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2723f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org WRITE_AS_INTS 2736fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2746fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; begin epilog 2756fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rdi 2766fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rsi 2776fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org UNSHADOW_ARGS 2786fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rbp 2796fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ret 2806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2816fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2826fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;void vp9_sad8x16x8_sse4( 2836fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *src_ptr, 2846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int src_stride, 2856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *ref_ptr, 2866fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int ref_stride, 2876fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; unsigned short *sad_array 2886fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;); 289afc4a270e3f2ecbbb47aad63c6a6a77ca902d30efgalligan@chromium.orgglobal sym(vp9_sad8x16x8_sse4) PRIVATE 2906fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgsym(vp9_sad8x16x8_sse4): 2916fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rbp 2926fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mov rbp, rsp 2936fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org SHADOW_ARGS_TO_STACK 5 2946fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rsi 2956fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rdi 2966fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; end prolog 2976fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 2983f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 2993f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(2) ;ref_ptr 3003f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org 3013f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rax, dword ptr arg(1) ;src_stride 3023f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rdx, dword ptr arg(3) ;ref_stride 3036fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3043f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 1 3053f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3063f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3073f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3083f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3093f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3103f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3113f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_8X2X8 0 3126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3133f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org WRITE_AS_INTS 3146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; begin epilog 3166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rdi 3176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rsi 3186fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org UNSHADOW_ARGS 3196fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rbp 3206fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ret 3216fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3226fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3236fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;void vp9_sad4x4x8_c( 3246fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *src_ptr, 3256fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int src_stride, 3266fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; const unsigned char *ref_ptr, 3276fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; int ref_stride, 3286fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org; unsigned short *sad_array 3296fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org;); 330afc4a270e3f2ecbbb47aad63c6a6a77ca902d30efgalligan@chromium.orgglobal sym(vp9_sad4x4x8_sse4) PRIVATE 3316fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgsym(vp9_sad4x4x8_sse4): 3326fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rbp 3336fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org mov rbp, rsp 3346fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org SHADOW_ARGS_TO_STACK 5 3356fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rsi 3366fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org push rdi 3376fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; end prolog 3386fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3393f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rsi, arg(0) ;src_ptr 3403f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org mov rdi, arg(2) ;ref_ptr 3416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3423f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rax, dword ptr arg(1) ;src_stride 3433f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org movsxd rdx, dword ptr arg(3) ;ref_stride 3446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3453f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_4X2X8 1 3463f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org PROCESS_4X2X8 0 3476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3483f0af3b06425f635f3559f0bd4f53efea95fa5e2johannkoenig@chromium.org WRITE_AS_INTS 3496fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3506fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ; begin epilog 3516fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rdi 3526fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rsi 3536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org UNSHADOW_ARGS 3546fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pop rbp 3556fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ret 3566fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3576fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3586fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 3596fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 360