1*fb1b10abSAndroid Build Coastguard Worker; 2*fb1b10abSAndroid Build Coastguard Worker; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker; 4*fb1b10abSAndroid Build Coastguard Worker; Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker; that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker; tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker; in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker; be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker; 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker 12*fb1b10abSAndroid Build Coastguard Worker%include "vpx_ports/x86_abi_support.asm" 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard WorkerSECTION .text 15*fb1b10abSAndroid Build Coastguard Worker 16*fb1b10abSAndroid Build Coastguard Worker;void vp8_short_inv_walsh4x4_sse2(short *input, short *mb_dqcoeff) 17*fb1b10abSAndroid Build Coastguard Workerglobalsym(vp8_short_inv_walsh4x4_sse2) 18*fb1b10abSAndroid Build Coastguard Workersym(vp8_short_inv_walsh4x4_sse2): 19*fb1b10abSAndroid Build Coastguard Worker push rbp 20*fb1b10abSAndroid Build Coastguard Worker mov rbp, rsp 21*fb1b10abSAndroid Build Coastguard Worker SHADOW_ARGS_TO_STACK 2 22*fb1b10abSAndroid Build Coastguard Worker ; end prolog 23*fb1b10abSAndroid Build Coastguard Worker 24*fb1b10abSAndroid Build Coastguard Worker mov rcx, arg(0) 25*fb1b10abSAndroid Build Coastguard Worker mov rdx, arg(1) 26*fb1b10abSAndroid Build Coastguard Worker mov rax, 30003h 27*fb1b10abSAndroid Build Coastguard Worker 28*fb1b10abSAndroid Build Coastguard Worker movdqa xmm0, [rcx + 0] ;ip[4] ip[0] 29*fb1b10abSAndroid Build Coastguard Worker movdqa xmm1, [rcx + 16] ;ip[12] ip[8] 30*fb1b10abSAndroid Build Coastguard Worker 31*fb1b10abSAndroid Build Coastguard Worker 32*fb1b10abSAndroid Build Coastguard Worker pshufd xmm2, xmm1, 4eh ;ip[8] ip[12] 33*fb1b10abSAndroid Build Coastguard Worker movdqa xmm3, xmm0 ;ip[4] ip[0] 34*fb1b10abSAndroid Build Coastguard Worker 35*fb1b10abSAndroid Build Coastguard Worker paddw xmm0, xmm2 ;ip[4]+ip[8] ip[0]+ip[12] aka b1 a1 36*fb1b10abSAndroid Build Coastguard Worker psubw xmm3, xmm2 ;ip[4]-ip[8] ip[0]-ip[12] aka c1 d1 37*fb1b10abSAndroid Build Coastguard Worker 38*fb1b10abSAndroid Build Coastguard Worker movdqa xmm4, xmm0 39*fb1b10abSAndroid Build Coastguard Worker punpcklqdq xmm0, xmm3 ;d1 a1 40*fb1b10abSAndroid Build Coastguard Worker punpckhqdq xmm4, xmm3 ;c1 b1 41*fb1b10abSAndroid Build Coastguard Worker 42*fb1b10abSAndroid Build Coastguard Worker movdqa xmm1, xmm4 ;c1 b1 43*fb1b10abSAndroid Build Coastguard Worker paddw xmm4, xmm0 ;dl+cl a1+b1 aka op[4] op[0] 44*fb1b10abSAndroid Build Coastguard Worker psubw xmm0, xmm1 ;d1-c1 a1-b1 aka op[12] op[8] 45*fb1b10abSAndroid Build Coastguard Worker 46*fb1b10abSAndroid Build Coastguard Worker ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47*fb1b10abSAndroid Build Coastguard Worker ; 13 12 11 10 03 02 01 00 48*fb1b10abSAndroid Build Coastguard Worker ; 49*fb1b10abSAndroid Build Coastguard Worker ; 33 32 31 30 23 22 21 20 50*fb1b10abSAndroid Build Coastguard Worker ; 51*fb1b10abSAndroid Build Coastguard Worker movdqa xmm3, xmm4 ; 13 12 11 10 03 02 01 00 52*fb1b10abSAndroid Build Coastguard Worker punpcklwd xmm4, xmm0 ; 23 03 22 02 21 01 20 00 53*fb1b10abSAndroid Build Coastguard Worker punpckhwd xmm3, xmm0 ; 33 13 32 12 31 11 30 10 54*fb1b10abSAndroid Build Coastguard Worker movdqa xmm1, xmm4 ; 23 03 22 02 21 01 20 00 55*fb1b10abSAndroid Build Coastguard Worker punpcklwd xmm4, xmm3 ; 31 21 11 01 30 20 10 00 56*fb1b10abSAndroid Build Coastguard Worker punpckhwd xmm1, xmm3 ; 33 23 13 03 32 22 12 02 57*fb1b10abSAndroid Build Coastguard Worker ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58*fb1b10abSAndroid Build Coastguard Worker movd xmm0, eax 59*fb1b10abSAndroid Build Coastguard Worker pshufd xmm2, xmm1, 4eh ;ip[8] ip[12] 60*fb1b10abSAndroid Build Coastguard Worker movdqa xmm3, xmm4 ;ip[4] ip[0] 61*fb1b10abSAndroid Build Coastguard Worker 62*fb1b10abSAndroid Build Coastguard Worker pshufd xmm0, xmm0, 0 ;03 03 03 03 03 03 03 03 63*fb1b10abSAndroid Build Coastguard Worker 64*fb1b10abSAndroid Build Coastguard Worker paddw xmm4, xmm2 ;ip[4]+ip[8] ip[0]+ip[12] aka b1 a1 65*fb1b10abSAndroid Build Coastguard Worker psubw xmm3, xmm2 ;ip[4]-ip[8] ip[0]-ip[12] aka c1 d1 66*fb1b10abSAndroid Build Coastguard Worker 67*fb1b10abSAndroid Build Coastguard Worker movdqa xmm5, xmm4 68*fb1b10abSAndroid Build Coastguard Worker punpcklqdq xmm4, xmm3 ;d1 a1 69*fb1b10abSAndroid Build Coastguard Worker punpckhqdq xmm5, xmm3 ;c1 b1 70*fb1b10abSAndroid Build Coastguard Worker 71*fb1b10abSAndroid Build Coastguard Worker movdqa xmm1, xmm5 ;c1 b1 72*fb1b10abSAndroid Build Coastguard Worker paddw xmm5, xmm4 ;dl+cl a1+b1 aka op[4] op[0] 73*fb1b10abSAndroid Build Coastguard Worker psubw xmm4, xmm1 ;d1-c1 a1-b1 aka op[12] op[8] 74*fb1b10abSAndroid Build Coastguard Worker 75*fb1b10abSAndroid Build Coastguard Worker paddw xmm5, xmm0 76*fb1b10abSAndroid Build Coastguard Worker paddw xmm4, xmm0 77*fb1b10abSAndroid Build Coastguard Worker psraw xmm5, 3 78*fb1b10abSAndroid Build Coastguard Worker psraw xmm4, 3 79*fb1b10abSAndroid Build Coastguard Worker 80*fb1b10abSAndroid Build Coastguard Worker movd eax, xmm5 81*fb1b10abSAndroid Build Coastguard Worker movd ecx, xmm4 82*fb1b10abSAndroid Build Coastguard Worker psrldq xmm5, 4 83*fb1b10abSAndroid Build Coastguard Worker psrldq xmm4, 4 84*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*0], ax 85*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*2], cx 86*fb1b10abSAndroid Build Coastguard Worker shr eax, 16 87*fb1b10abSAndroid Build Coastguard Worker shr ecx, 16 88*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*4], ax 89*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*6], cx 90*fb1b10abSAndroid Build Coastguard Worker movd eax, xmm5 91*fb1b10abSAndroid Build Coastguard Worker movd ecx, xmm4 92*fb1b10abSAndroid Build Coastguard Worker psrldq xmm5, 4 93*fb1b10abSAndroid Build Coastguard Worker psrldq xmm4, 4 94*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*8], ax 95*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*10], cx 96*fb1b10abSAndroid Build Coastguard Worker shr eax, 16 97*fb1b10abSAndroid Build Coastguard Worker shr ecx, 16 98*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*12], ax 99*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*14], cx 100*fb1b10abSAndroid Build Coastguard Worker 101*fb1b10abSAndroid Build Coastguard Worker movd eax, xmm5 102*fb1b10abSAndroid Build Coastguard Worker movd ecx, xmm4 103*fb1b10abSAndroid Build Coastguard Worker psrldq xmm5, 4 104*fb1b10abSAndroid Build Coastguard Worker psrldq xmm4, 4 105*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*1], ax 106*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*3], cx 107*fb1b10abSAndroid Build Coastguard Worker shr eax, 16 108*fb1b10abSAndroid Build Coastguard Worker shr ecx, 16 109*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*5], ax 110*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*7], cx 111*fb1b10abSAndroid Build Coastguard Worker movd eax, xmm5 112*fb1b10abSAndroid Build Coastguard Worker movd ecx, xmm4 113*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*9], ax 114*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*11], cx 115*fb1b10abSAndroid Build Coastguard Worker shr eax, 16 116*fb1b10abSAndroid Build Coastguard Worker shr ecx, 16 117*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*13], ax 118*fb1b10abSAndroid Build Coastguard Worker mov word ptr[rdx+32*15], cx 119*fb1b10abSAndroid Build Coastguard Worker 120*fb1b10abSAndroid Build Coastguard Worker ; begin epilog 121*fb1b10abSAndroid Build Coastguard Worker UNSHADOW_ARGS 122*fb1b10abSAndroid Build Coastguard Worker pop rbp 123*fb1b10abSAndroid Build Coastguard Worker ret 124