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;void vp8_short_inv_walsh4x4_mmx(short *input, short *output) 151b362b15af34006e6a11974088a46d42b903418eJohannglobal sym(vp8_short_inv_walsh4x4_mmx) PRIVATE 161b362b15af34006e6a11974088a46d42b903418eJohannsym(vp8_short_inv_walsh4x4_mmx): 171b362b15af34006e6a11974088a46d42b903418eJohann push rbp 181b362b15af34006e6a11974088a46d42b903418eJohann mov rbp, rsp 191b362b15af34006e6a11974088a46d42b903418eJohann SHADOW_ARGS_TO_STACK 2 201b362b15af34006e6a11974088a46d42b903418eJohann ; end prolog 211b362b15af34006e6a11974088a46d42b903418eJohann 221b362b15af34006e6a11974088a46d42b903418eJohann mov rdx, arg(0) 231b362b15af34006e6a11974088a46d42b903418eJohann mov rax, 30003h 241b362b15af34006e6a11974088a46d42b903418eJohann 251b362b15af34006e6a11974088a46d42b903418eJohann movq mm0, [rdx + 0] ;ip[0] 261b362b15af34006e6a11974088a46d42b903418eJohann movq mm1, [rdx + 8] ;ip[4] 27ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang movq mm7, rax 281b362b15af34006e6a11974088a46d42b903418eJohann 291b362b15af34006e6a11974088a46d42b903418eJohann movq mm2, [rdx + 16] ;ip[8] 301b362b15af34006e6a11974088a46d42b903418eJohann movq mm3, [rdx + 24] ;ip[12] 311b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd mm7, mm7 ;0003000300030003h 321b362b15af34006e6a11974088a46d42b903418eJohann mov rdx, arg(1) 331b362b15af34006e6a11974088a46d42b903418eJohann 341b362b15af34006e6a11974088a46d42b903418eJohann movq mm4, mm0 351b362b15af34006e6a11974088a46d42b903418eJohann movq mm5, mm1 361b362b15af34006e6a11974088a46d42b903418eJohann 371b362b15af34006e6a11974088a46d42b903418eJohann paddw mm4, mm3 ;ip[0] + ip[12] aka al 381b362b15af34006e6a11974088a46d42b903418eJohann paddw mm5, mm2 ;ip[4] + ip[8] aka bl 391b362b15af34006e6a11974088a46d42b903418eJohann 401b362b15af34006e6a11974088a46d42b903418eJohann movq mm6, mm4 ;temp al 411b362b15af34006e6a11974088a46d42b903418eJohann paddw mm4, mm5 ;al + bl 421b362b15af34006e6a11974088a46d42b903418eJohann psubw mm6, mm5 ;al - bl 431b362b15af34006e6a11974088a46d42b903418eJohann 441b362b15af34006e6a11974088a46d42b903418eJohann psubw mm0, mm3 ;ip[0] - ip[12] aka d1 451b362b15af34006e6a11974088a46d42b903418eJohann psubw mm1, mm2 ;ip[4] - ip[8] aka c1 461b362b15af34006e6a11974088a46d42b903418eJohann 471b362b15af34006e6a11974088a46d42b903418eJohann movq mm5, mm0 ;temp dl 481b362b15af34006e6a11974088a46d42b903418eJohann paddw mm0, mm1 ;dl + cl 491b362b15af34006e6a11974088a46d42b903418eJohann psubw mm5, mm1 ;dl - cl 501b362b15af34006e6a11974088a46d42b903418eJohann 511b362b15af34006e6a11974088a46d42b903418eJohann ; 03 02 01 00 521b362b15af34006e6a11974088a46d42b903418eJohann ; 13 12 11 10 531b362b15af34006e6a11974088a46d42b903418eJohann ; 23 22 21 20 541b362b15af34006e6a11974088a46d42b903418eJohann ; 33 32 31 30 551b362b15af34006e6a11974088a46d42b903418eJohann 561b362b15af34006e6a11974088a46d42b903418eJohann movq mm3, mm4 ; 03 02 01 00 571b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd mm4, mm0 ; 11 01 10 00 581b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd mm3, mm0 ; 13 03 12 02 591b362b15af34006e6a11974088a46d42b903418eJohann 601b362b15af34006e6a11974088a46d42b903418eJohann movq mm1, mm6 ; 23 22 21 20 611b362b15af34006e6a11974088a46d42b903418eJohann punpcklwd mm6, mm5 ; 31 21 30 20 621b362b15af34006e6a11974088a46d42b903418eJohann punpckhwd mm1, mm5 ; 33 23 32 22 631b362b15af34006e6a11974088a46d42b903418eJohann 641b362b15af34006e6a11974088a46d42b903418eJohann movq mm0, mm4 ; 11 01 10 00 651b362b15af34006e6a11974088a46d42b903418eJohann movq mm2, mm3 ; 13 03 12 02 661b362b15af34006e6a11974088a46d42b903418eJohann 671b362b15af34006e6a11974088a46d42b903418eJohann punpckldq mm0, mm6 ; 30 20 10 00 aka ip[0] 681b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq mm4, mm6 ; 31 21 11 01 aka ip[4] 691b362b15af34006e6a11974088a46d42b903418eJohann 701b362b15af34006e6a11974088a46d42b903418eJohann punpckldq mm2, mm1 ; 32 22 12 02 aka ip[8] 711b362b15af34006e6a11974088a46d42b903418eJohann punpckhdq mm3, mm1 ; 33 23 13 03 aka ip[12] 721b362b15af34006e6a11974088a46d42b903418eJohann;~~~~~~~~~~~~~~~~~~~~~ 731b362b15af34006e6a11974088a46d42b903418eJohann movq mm1, mm0 741b362b15af34006e6a11974088a46d42b903418eJohann movq mm5, mm4 751b362b15af34006e6a11974088a46d42b903418eJohann paddw mm1, mm3 ;ip[0] + ip[12] aka al 761b362b15af34006e6a11974088a46d42b903418eJohann paddw mm5, mm2 ;ip[4] + ip[8] aka bl 771b362b15af34006e6a11974088a46d42b903418eJohann 781b362b15af34006e6a11974088a46d42b903418eJohann movq mm6, mm1 ;temp al 791b362b15af34006e6a11974088a46d42b903418eJohann paddw mm1, mm5 ;al + bl 801b362b15af34006e6a11974088a46d42b903418eJohann psubw mm6, mm5 ;al - bl 811b362b15af34006e6a11974088a46d42b903418eJohann paddw mm1, mm7 821b362b15af34006e6a11974088a46d42b903418eJohann paddw mm6, mm7 831b362b15af34006e6a11974088a46d42b903418eJohann psraw mm1, 3 841b362b15af34006e6a11974088a46d42b903418eJohann psraw mm6, 3 851b362b15af34006e6a11974088a46d42b903418eJohann 861b362b15af34006e6a11974088a46d42b903418eJohann psubw mm0, mm3 ;ip[0] - ip[12] aka d1 871b362b15af34006e6a11974088a46d42b903418eJohann psubw mm4, mm2 ;ip[4] - ip[8] aka c1 881b362b15af34006e6a11974088a46d42b903418eJohann 891b362b15af34006e6a11974088a46d42b903418eJohann movq mm5, mm0 ;temp dl 901b362b15af34006e6a11974088a46d42b903418eJohann paddw mm0, mm4 ;dl + cl 911b362b15af34006e6a11974088a46d42b903418eJohann psubw mm5, mm4 ;dl - cl 921b362b15af34006e6a11974088a46d42b903418eJohann paddw mm0, mm7 931b362b15af34006e6a11974088a46d42b903418eJohann paddw mm5, mm7 941b362b15af34006e6a11974088a46d42b903418eJohann psraw mm0, 3 951b362b15af34006e6a11974088a46d42b903418eJohann psraw mm5, 3 961b362b15af34006e6a11974088a46d42b903418eJohann;~~~~~~~~~~~~~~~~~~~~~ 971b362b15af34006e6a11974088a46d42b903418eJohann 981b362b15af34006e6a11974088a46d42b903418eJohann movd eax, mm1 991b362b15af34006e6a11974088a46d42b903418eJohann movd ecx, mm0 1001b362b15af34006e6a11974088a46d42b903418eJohann psrlq mm0, 32 1011b362b15af34006e6a11974088a46d42b903418eJohann psrlq mm1, 32 1021b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*0], ax 1031b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*1], cx 1041b362b15af34006e6a11974088a46d42b903418eJohann shr eax, 16 1051b362b15af34006e6a11974088a46d42b903418eJohann shr ecx, 16 1061b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*4], ax 1071b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*5], cx 1081b362b15af34006e6a11974088a46d42b903418eJohann movd eax, mm1 1091b362b15af34006e6a11974088a46d42b903418eJohann movd ecx, mm0 1101b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*8], ax 1111b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*9], cx 1121b362b15af34006e6a11974088a46d42b903418eJohann shr eax, 16 1131b362b15af34006e6a11974088a46d42b903418eJohann shr ecx, 16 1141b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*12], ax 1151b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*13], cx 1161b362b15af34006e6a11974088a46d42b903418eJohann 1171b362b15af34006e6a11974088a46d42b903418eJohann movd eax, mm6 1181b362b15af34006e6a11974088a46d42b903418eJohann movd ecx, mm5 1191b362b15af34006e6a11974088a46d42b903418eJohann psrlq mm5, 32 1201b362b15af34006e6a11974088a46d42b903418eJohann psrlq mm6, 32 1211b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*2], ax 1221b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*3], cx 1231b362b15af34006e6a11974088a46d42b903418eJohann shr eax, 16 1241b362b15af34006e6a11974088a46d42b903418eJohann shr ecx, 16 1251b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*6], ax 1261b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*7], cx 1271b362b15af34006e6a11974088a46d42b903418eJohann movd eax, mm6 1281b362b15af34006e6a11974088a46d42b903418eJohann movd ecx, mm5 1291b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*10], ax 1301b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*11], cx 1311b362b15af34006e6a11974088a46d42b903418eJohann shr eax, 16 1321b362b15af34006e6a11974088a46d42b903418eJohann shr ecx, 16 1331b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*14], ax 1341b362b15af34006e6a11974088a46d42b903418eJohann mov word ptr[rdx+32*15], cx 1351b362b15af34006e6a11974088a46d42b903418eJohann 1361b362b15af34006e6a11974088a46d42b903418eJohann ; begin epilog 1371b362b15af34006e6a11974088a46d42b903418eJohann UNSHADOW_ARGS 1381b362b15af34006e6a11974088a46d42b903418eJohann pop rbp 1391b362b15af34006e6a11974088a46d42b903418eJohann ret 1401b362b15af34006e6a11974088a46d42b903418eJohann 141