xref: /aosp_15_r20/external/libvpx/vp8/common/x86/recon_sse2.asm (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
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