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 copy_mem16x16_sse2( 17*fb1b10abSAndroid Build Coastguard Worker; unsigned char *src, 18*fb1b10abSAndroid Build Coastguard Worker; int src_stride, 19*fb1b10abSAndroid Build Coastguard Worker; unsigned char *dst, 20*fb1b10abSAndroid Build Coastguard Worker; int dst_stride 21*fb1b10abSAndroid Build Coastguard Worker; ) 22*fb1b10abSAndroid Build Coastguard Workerglobalsym(vp8_copy_mem16x16_sse2) 23*fb1b10abSAndroid Build Coastguard Workersym(vp8_copy_mem16x16_sse2): 24*fb1b10abSAndroid Build Coastguard Worker push rbp 25*fb1b10abSAndroid Build Coastguard Worker mov rbp, rsp 26*fb1b10abSAndroid Build Coastguard Worker SHADOW_ARGS_TO_STACK 4 27*fb1b10abSAndroid Build Coastguard Worker push rsi 28*fb1b10abSAndroid Build Coastguard Worker push rdi 29*fb1b10abSAndroid Build Coastguard Worker ; end prolog 30*fb1b10abSAndroid Build Coastguard Worker 31*fb1b10abSAndroid Build Coastguard Worker mov rsi, arg(0) ;src; 32*fb1b10abSAndroid Build Coastguard Worker movdqu xmm0, [rsi] 33*fb1b10abSAndroid Build Coastguard Worker 34*fb1b10abSAndroid Build Coastguard Worker movsxd rax, dword ptr arg(1) ;src_stride; 35*fb1b10abSAndroid Build Coastguard Worker mov rdi, arg(2) ;dst; 36*fb1b10abSAndroid Build Coastguard Worker 37*fb1b10abSAndroid Build Coastguard Worker movdqu xmm1, [rsi+rax] 38*fb1b10abSAndroid Build Coastguard Worker movdqu xmm2, [rsi+rax*2] 39*fb1b10abSAndroid Build Coastguard Worker 40*fb1b10abSAndroid Build Coastguard Worker movsxd rcx, dword ptr arg(3) ;dst_stride 41*fb1b10abSAndroid Build Coastguard Worker lea rsi, [rsi+rax*2] 42*fb1b10abSAndroid Build Coastguard Worker 43*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi], xmm0 44*fb1b10abSAndroid Build Coastguard Worker add rsi, rax 45*fb1b10abSAndroid Build Coastguard Worker 46*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm1 47*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx*2],xmm2 48*fb1b10abSAndroid Build Coastguard Worker 49*fb1b10abSAndroid Build Coastguard Worker lea rdi, [rdi+rcx*2] 50*fb1b10abSAndroid Build Coastguard Worker movdqu xmm3, [rsi] 51*fb1b10abSAndroid Build Coastguard Worker 52*fb1b10abSAndroid Build Coastguard Worker add rdi, rcx 53*fb1b10abSAndroid Build Coastguard Worker movdqu xmm4, [rsi+rax] 54*fb1b10abSAndroid Build Coastguard Worker 55*fb1b10abSAndroid Build Coastguard Worker movdqu xmm5, [rsi+rax*2] 56*fb1b10abSAndroid Build Coastguard Worker lea rsi, [rsi+rax*2] 57*fb1b10abSAndroid Build Coastguard Worker 58*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi], xmm3 59*fb1b10abSAndroid Build Coastguard Worker add rsi, rax 60*fb1b10abSAndroid Build Coastguard Worker 61*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm4 62*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx*2],xmm5 63*fb1b10abSAndroid Build Coastguard Worker 64*fb1b10abSAndroid Build Coastguard Worker lea rdi, [rdi+rcx*2] 65*fb1b10abSAndroid Build Coastguard Worker movdqu xmm0, [rsi] 66*fb1b10abSAndroid Build Coastguard Worker 67*fb1b10abSAndroid Build Coastguard Worker add rdi, rcx 68*fb1b10abSAndroid Build Coastguard Worker movdqu xmm1, [rsi+rax] 69*fb1b10abSAndroid Build Coastguard Worker 70*fb1b10abSAndroid Build Coastguard Worker movdqu xmm2, [rsi+rax*2] 71*fb1b10abSAndroid Build Coastguard Worker lea rsi, [rsi+rax*2] 72*fb1b10abSAndroid Build Coastguard Worker 73*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi], xmm0 74*fb1b10abSAndroid Build Coastguard Worker add rsi, rax 75*fb1b10abSAndroid Build Coastguard Worker 76*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm1 77*fb1b10abSAndroid Build Coastguard Worker 78*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx*2], xmm2 79*fb1b10abSAndroid Build Coastguard Worker movdqu xmm3, [rsi] 80*fb1b10abSAndroid Build Coastguard Worker 81*fb1b10abSAndroid Build Coastguard Worker movdqu xmm4, [rsi+rax] 82*fb1b10abSAndroid Build Coastguard Worker lea rdi, [rdi+rcx*2] 83*fb1b10abSAndroid Build Coastguard Worker 84*fb1b10abSAndroid Build Coastguard Worker add rdi, rcx 85*fb1b10abSAndroid Build Coastguard Worker movdqu xmm5, [rsi+rax*2] 86*fb1b10abSAndroid Build Coastguard Worker 87*fb1b10abSAndroid Build Coastguard Worker lea rsi, [rsi+rax*2] 88*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi], xmm3 89*fb1b10abSAndroid Build Coastguard Worker 90*fb1b10abSAndroid Build Coastguard Worker add rsi, rax 91*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm4 92*fb1b10abSAndroid Build Coastguard Worker 93*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx*2],xmm5 94*fb1b10abSAndroid Build Coastguard Worker movdqu xmm0, [rsi] 95*fb1b10abSAndroid Build Coastguard Worker 96*fb1b10abSAndroid Build Coastguard Worker lea rdi, [rdi+rcx*2] 97*fb1b10abSAndroid Build Coastguard Worker movdqu xmm1, [rsi+rax] 98*fb1b10abSAndroid Build Coastguard Worker 99*fb1b10abSAndroid Build Coastguard Worker add rdi, rcx 100*fb1b10abSAndroid Build Coastguard Worker movdqu xmm2, [rsi+rax*2] 101*fb1b10abSAndroid Build Coastguard Worker 102*fb1b10abSAndroid Build Coastguard Worker lea rsi, [rsi+rax*2] 103*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi], xmm0 104*fb1b10abSAndroid Build Coastguard Worker 105*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm1 106*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx*2],xmm2 107*fb1b10abSAndroid Build Coastguard Worker 108*fb1b10abSAndroid Build Coastguard Worker movdqu xmm3, [rsi+rax] 109*fb1b10abSAndroid Build Coastguard Worker lea rdi, [rdi+rcx*2] 110*fb1b10abSAndroid Build Coastguard Worker 111*fb1b10abSAndroid Build Coastguard Worker movdqa [rdi+rcx], xmm3 112*fb1b10abSAndroid Build Coastguard Worker 113*fb1b10abSAndroid Build Coastguard Worker ; begin epilog 114*fb1b10abSAndroid Build Coastguard Worker pop rdi 115*fb1b10abSAndroid Build Coastguard Worker pop rsi 116*fb1b10abSAndroid Build Coastguard Worker UNSHADOW_ARGS 117*fb1b10abSAndroid Build Coastguard Worker pop rbp 118*fb1b10abSAndroid Build Coastguard Worker ret 119