recon_sse2.asm revision f71323e297a928af368937089d3ed71239786f86
190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 2f71323e297a928af368937089d3ed71239786f86Andreas Huber; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 4f71323e297a928af368937089d3ed71239786f86Andreas Huber; Use of this source code is governed by a BSD-style license 5f71323e297a928af368937089d3ed71239786f86Andreas Huber; that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber; tree. An additional intellectual property rights grant can be found 7f71323e297a928af368937089d3ed71239786f86Andreas Huber; in the file PATENTS. All contributing project authors may 8f71323e297a928af368937089d3ed71239786f86Andreas Huber; be found in the AUTHORS file in the root of the source tree. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber%include "vpx_ports/x86_abi_support.asm" 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber;void vp8_recon2b_sse2(unsigned char *s, short *q, unsigned char *d, int stride) 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberglobal sym(vp8_recon2b_sse2) 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersym(vp8_recon2b_sse2): 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rbp 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rbp, rsp 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber SHADOW_ARGS_TO_STACK 4 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rsi 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rdi 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; end prolog 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rsi, arg(0) ;s 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rdi, arg(2) ;d 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rdx, arg(1) ;q 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movsxd rax, dword ptr arg(3) ;stride 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pxor xmm0, xmm0 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq xmm1, MMWORD PTR [rsi] 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm1, xmm0 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm1, XMMWORD PTR [rdx] 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm1, xmm0 ; pack and unpack to saturate 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq MMWORD PTR [rdi], xmm1 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq xmm2, MMWORD PTR [rsi+8] 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm2, xmm0 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm2, XMMWORD PTR [rdx+16] 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm2, xmm0 ; pack and unpack to saturate 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq MMWORD PTR [rdi+rax], xmm2 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq xmm3, MMWORD PTR [rsi+16] 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm3, xmm0 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm3, XMMWORD PTR [rdx+32] 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm3, xmm0 ; pack and unpack to saturate 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq MMWORD PTR [rdi+rax*2], xmm3 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rax 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq xmm4, MMWORD PTR [rsi+24] 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm4, xmm0 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm4, XMMWORD PTR [rdx+48] 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm4, xmm0 ; pack and unpack to saturate 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movq MMWORD PTR [rdi+rax*2], xmm4 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; begin epilog 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rdi 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rsi 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber UNSHADOW_ARGS 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rbp 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ret 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber;void vp8_recon4b_sse2(unsigned char *s, short *q, unsigned char *d, int stride) 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberglobal sym(vp8_recon4b_sse2) 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersym(vp8_recon4b_sse2): 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rbp 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rbp, rsp 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber SHADOW_ARGS_TO_STACK 4 70f71323e297a928af368937089d3ed71239786f86Andreas Huber SAVE_XMM 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rsi 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rdi 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; end prolog 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rsi, arg(0) ;s 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rdi, arg(2) ;d 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rdx, arg(1) ;q 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movsxd rax, dword ptr arg(3) ;stride 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pxor xmm0, xmm0 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm1, XMMWORD PTR [rsi] 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm5, xmm1 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm1, xmm0 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpckhbw xmm5, xmm0 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm1, XMMWORD PTR [rdx] 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm5, XMMWORD PTR [rdx+16] 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm1, xmm5 ; pack and unpack to saturate 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa XMMWORD PTR [rdi], xmm1 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm2, XMMWORD PTR [rsi+16] 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm6, xmm2 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm2, xmm0 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpckhbw xmm6, xmm0 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm2, XMMWORD PTR [rdx+32] 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm6, XMMWORD PTR [rdx+48] 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm2, xmm6 ; pack and unpack to saturate 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa XMMWORD PTR [rdi+rax], xmm2 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm3, XMMWORD PTR [rsi+32] 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm7, xmm3 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm3, xmm0 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpckhbw xmm7, xmm0 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm3, XMMWORD PTR [rdx+64] 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm7, XMMWORD PTR [rdx+80] 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm3, xmm7 ; pack and unpack to saturate 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa XMMWORD PTR [rdi+rax*2], xmm3 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rax 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm4, XMMWORD PTR [rsi+48] 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa xmm5, xmm4 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpcklbw xmm4, xmm0 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber punpckhbw xmm5, xmm0 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm4, XMMWORD PTR [rdx+96] 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber paddsw xmm5, XMMWORD PTR [rdx+112] 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber packuswb xmm4, xmm5 ; pack and unpack to saturate 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa XMMWORD PTR [rdi+rax*2], xmm4 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; begin epilog 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rdi 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rsi 123f71323e297a928af368937089d3ed71239786f86Andreas Huber RESTORE_XMM 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber UNSHADOW_ARGS 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rbp 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ret 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber;void copy_mem16x16_sse2( 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; unsigned char *src, 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; int src_stride, 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; unsigned char *dst, 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; int dst_stride 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber; ) 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberglobal sym(vp8_copy_mem16x16_sse2) 13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersym(vp8_copy_mem16x16_sse2): 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rbp 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rbp, rsp 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber SHADOW_ARGS_TO_STACK 4 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rsi 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber push rdi 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; end prolog 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rsi, arg(0) ;src; 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm0, [rsi] 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movsxd rax, dword ptr arg(1) ;src_stride; 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mov rdi, arg(2) ;dst; 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm1, [rsi+rax] 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm2, [rsi+rax*2] 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movsxd rcx, dword ptr arg(3) ;dst_stride 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rsi, [rsi+rax*2] 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi], xmm0 15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rsi, rax 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm1 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx*2],xmm2 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rdi, [rdi+rcx*2] 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm3, [rsi] 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rcx 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm4, [rsi+rax] 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm5, [rsi+rax*2] 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rsi, [rsi+rax*2] 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi], xmm3 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rsi, rax 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm4 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx*2],xmm5 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rdi, [rdi+rcx*2] 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm0, [rsi] 17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rcx 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm1, [rsi+rax] 18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm2, [rsi+rax*2] 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rsi, [rsi+rax*2] 18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi], xmm0 18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rsi, rax 18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm1 19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx*2], xmm2 19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm3, [rsi] 19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm4, [rsi+rax] 19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rdi, [rdi+rcx*2] 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rcx 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm5, [rsi+rax*2] 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rsi, [rsi+rax*2] 20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi], xmm3 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rsi, rax 20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm4 20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx*2],xmm5 20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm0, [rsi] 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rdi, [rdi+rcx*2] 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm1, [rsi+rax] 21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add rdi, rcx 21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm2, [rsi+rax*2] 21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rsi, [rsi+rax*2] 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi], xmm0 21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm1 21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx*2],xmm2 22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqu xmm3, [rsi+rax] 22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lea rdi, [rdi+rcx*2] 22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber movdqa [rdi+rcx], xmm3 22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ; begin epilog 22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rdi 22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rsi 22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber UNSHADOW_ARGS 23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pop rbp 23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ret 232