xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/unaligned-load-store.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs< %s | FileCheck -check-prefix=SI -check-prefix=ALIGNED %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=bonaire -mattr=+unaligned-buffer-access -verify-machineinstrs< %s | FileCheck -check-prefix=SI -check-prefix=UNALIGNED %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs< %s | FileCheck -check-prefix=SI -check-prefix=ALIGNED %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}local_unaligned_load_store_i16:
6*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
7*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
8*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
9*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
10*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
11*9880d681SAndroid Build Coastguard Workerdefine void @local_unaligned_load_store_i16(i16 addrspace(3)* %p, i16 addrspace(3)* %r) #0 {
12*9880d681SAndroid Build Coastguard Worker  %v = load i16, i16 addrspace(3)* %p, align 1
13*9880d681SAndroid Build Coastguard Worker  store i16 %v, i16 addrspace(3)* %r, align 1
14*9880d681SAndroid Build Coastguard Worker  ret void
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}global_unaligned_load_store_i16:
18*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
19*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
20*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
21*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_ushort
24*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_short
25*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
26*9880d681SAndroid Build Coastguard Workerdefine void @global_unaligned_load_store_i16(i16 addrspace(1)* %p, i16 addrspace(1)* %r) #0 {
27*9880d681SAndroid Build Coastguard Worker  %v = load i16, i16 addrspace(1)* %p, align 1
28*9880d681SAndroid Build Coastguard Worker  store i16 %v, i16 addrspace(1)* %r, align 1
29*9880d681SAndroid Build Coastguard Worker  ret void
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_unaligned_load_store_i32:
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
35*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
36*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
37*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
38*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or
39*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
40*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
41*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
42*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
43*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
44*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
45*9880d681SAndroid Build Coastguard Workerdefine void @local_unaligned_load_store_i32(i32 addrspace(3)* %p, i32 addrspace(3)* %r) #0 {
46*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(3)* %p, align 1
47*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(3)* %r, align 1
48*9880d681SAndroid Build Coastguard Worker  ret void
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}global_unaligned_load_store_i32:
52*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
53*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
54*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
55*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
56*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
57*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
58*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
59*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dword
62*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dword
63*9880d681SAndroid Build Coastguard Workerdefine void @global_unaligned_load_store_i32(i32 addrspace(1)* %p, i32 addrspace(1)* %r) #0 {
64*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(1)* %p, align 1
65*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(1)* %r, align 1
66*9880d681SAndroid Build Coastguard Worker  ret void
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}global_align2_load_store_i32:
70*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
71*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
72*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
73*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dword
76*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dword
77*9880d681SAndroid Build Coastguard Workerdefine void @global_align2_load_store_i32(i32 addrspace(1)* %p, i32 addrspace(1)* %r) #0 {
78*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(1)* %p, align 2
79*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(1)* %r, align 2
80*9880d681SAndroid Build Coastguard Worker  ret void
81*9880d681SAndroid Build Coastguard Worker}
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_align2_load_store_i32:
84*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u16
85*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u16
86*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b16
87*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b16
88*9880d681SAndroid Build Coastguard Workerdefine void @local_align2_load_store_i32(i32 addrspace(3)* %p, i32 addrspace(3)* %r) #0 {
89*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(3)* %p, align 2
90*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(3)* %r, align 2
91*9880d681SAndroid Build Coastguard Worker  ret void
92*9880d681SAndroid Build Coastguard Worker}
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_unaligned_load_store_i64:
95*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
96*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
97*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
98*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
99*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
100*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
101*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
102*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
105*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
106*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
107*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
108*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
111*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
112*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
115*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
116*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
119*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
120*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
123*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
124*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
127*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
128*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
131*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
132*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
133*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
134*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
135*9880d681SAndroid Build Coastguard Workerdefine void @local_unaligned_load_store_i64(i64 addrspace(3)* %p, i64 addrspace(3)* %r) #0 {
136*9880d681SAndroid Build Coastguard Worker  %v = load i64, i64 addrspace(3)* %p, align 1
137*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64 addrspace(3)* %r, align 1
138*9880d681SAndroid Build Coastguard Worker  ret void
139*9880d681SAndroid Build Coastguard Worker}
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}local_unaligned_load_store_v2i32:
142*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
143*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
144*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
145*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
146*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
147*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
148*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
149*9880d681SAndroid Build Coastguard Worker; SI: ds_read_u8
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
152*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
153*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
154*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
155*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
158*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
159*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
162*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
163*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
166*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
167*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
168*9880d681SAndroid Build Coastguard Worker
169*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
170*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
171*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
174*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
175*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
178*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_or_b32
179*9880d681SAndroid Build Coastguard Worker; SI-NOT: v_lshl
180*9880d681SAndroid Build Coastguard Worker; SI: ds_write_b8
181*9880d681SAndroid Build Coastguard Worker; SI: s_endpgm
182*9880d681SAndroid Build Coastguard Workerdefine void @local_unaligned_load_store_v2i32(<2 x i32> addrspace(3)* %p, <2 x i32> addrspace(3)* %r) #0 {
183*9880d681SAndroid Build Coastguard Worker  %v = load <2 x i32>, <2 x i32> addrspace(3)* %p, align 1
184*9880d681SAndroid Build Coastguard Worker  store <2 x i32> %v, <2 x i32> addrspace(3)* %r, align 1
185*9880d681SAndroid Build Coastguard Worker  ret void
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}global_align2_load_store_i64:
189*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
190*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_or_
193*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_lshl
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_or_
198*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_lshl
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_or_
203*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_lshl
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
206*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
207*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
208*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_short
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dwordx2
211*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dwordx2
212*9880d681SAndroid Build Coastguard Workerdefine void @global_align2_load_store_i64(i64 addrspace(1)* %p, i64 addrspace(1)* %r) #0 {
213*9880d681SAndroid Build Coastguard Worker  %v = load i64, i64 addrspace(1)* %p, align 2
214*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64 addrspace(1)* %r, align 2
215*9880d681SAndroid Build Coastguard Worker  ret void
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}unaligned_load_store_i64_global:
219*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
220*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
221*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
222*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
223*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
224*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
225*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
226*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_or_
229*9880d681SAndroid Build Coastguard Worker; ALIGNED-NOT: v_lshl
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
232*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
233*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
234*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
235*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
236*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
237*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
238*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
239*9880d681SAndroid Build Coastguard Worker
240*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dwordx2
241*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dwordx2
242*9880d681SAndroid Build Coastguard Workerdefine void @unaligned_load_store_i64_global(i64 addrspace(1)* %p, i64 addrspace(1)* %r) #0 {
243*9880d681SAndroid Build Coastguard Worker  %v = load i64, i64 addrspace(1)* %p, align 1
244*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64 addrspace(1)* %r, align 1
245*9880d681SAndroid Build Coastguard Worker  ret void
246*9880d681SAndroid Build Coastguard Worker}
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_unaligned_load_store_v4i32:
249*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
250*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
251*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
252*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
255*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
256*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
257*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
260*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
261*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
262*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
265*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
266*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
267*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
270*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
271*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
272*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
273*9880d681SAndroid Build Coastguard Worker
274*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
275*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
276*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
277*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
280*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
281*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
282*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
283*9880d681SAndroid Build Coastguard Worker
284*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
285*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
286*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
287*9880d681SAndroid Build Coastguard Worker; GCN: ds_write_b8
288*9880d681SAndroid Build Coastguard Worker; GCN: s_endpgm
289*9880d681SAndroid Build Coastguard Workerdefine void @local_unaligned_load_store_v4i32(<4 x i32> addrspace(3)* %p, <4 x i32> addrspace(3)* %r) #0 {
290*9880d681SAndroid Build Coastguard Worker  %v = load <4 x i32>, <4 x i32> addrspace(3)* %p, align 1
291*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %v, <4 x i32> addrspace(3)* %r, align 1
292*9880d681SAndroid Build Coastguard Worker  ret void
293*9880d681SAndroid Build Coastguard Worker}
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}global_unaligned_load_store_v4i32
296*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
297*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
298*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
299*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
300*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
301*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
302*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
303*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
304*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
305*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
306*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
307*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
308*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
309*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
310*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
311*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
314*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
315*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
316*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
317*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
318*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
319*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
320*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
321*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
322*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
323*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
324*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
325*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
326*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
327*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
328*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_store_byte
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dwordx4
331*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dwordx4
332*9880d681SAndroid Build Coastguard Workerdefine void @global_unaligned_load_store_v4i32(<4 x i32> addrspace(1)* %p, <4 x i32> addrspace(1)* %r) #0 {
333*9880d681SAndroid Build Coastguard Worker  %v = load <4 x i32>, <4 x i32> addrspace(1)* %p, align 1
334*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %v, <4 x i32> addrspace(1)* %r, align 1
335*9880d681SAndroid Build Coastguard Worker  ret void
336*9880d681SAndroid Build Coastguard Worker}
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_i64_align_4:
339*9880d681SAndroid Build Coastguard Worker; GCN: ds_read2_b32
340*9880d681SAndroid Build Coastguard Workerdefine void @local_load_i64_align_4(i64 addrspace(1)* nocapture %out, i64 addrspace(3)* %in) #0 {
341*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(3)* %in, align 4
342*9880d681SAndroid Build Coastguard Worker  store i64 %val, i64 addrspace(1)* %out, align 8
343*9880d681SAndroid Build Coastguard Worker  ret void
344*9880d681SAndroid Build Coastguard Worker}
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_i64_align_4_with_offset
347*9880d681SAndroid Build Coastguard Worker; GCN: ds_read2_b32 v[{{[0-9]+}}:{{[0-9]+}}], v{{[0-9]}} offset0:8 offset1:9
348*9880d681SAndroid Build Coastguard Workerdefine void @local_load_i64_align_4_with_offset(i64 addrspace(1)* nocapture %out, i64 addrspace(3)* %in) #0 {
349*9880d681SAndroid Build Coastguard Worker  %ptr = getelementptr i64, i64 addrspace(3)* %in, i32 4
350*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(3)* %ptr, align 4
351*9880d681SAndroid Build Coastguard Worker  store i64 %val, i64 addrspace(1)* %out, align 8
352*9880d681SAndroid Build Coastguard Worker  ret void
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_i64_align_4_with_split_offset:
356*9880d681SAndroid Build Coastguard Worker; The tests for the case where the lo offset is 8-bits, but the hi offset is 9-bits
357*9880d681SAndroid Build Coastguard Worker; GCN: ds_read2_b32 v[{{[0-9]+}}:{{[0-9]+}}], v{{[0-9]}} offset1:1
358*9880d681SAndroid Build Coastguard Worker; GCN: s_endpgm
359*9880d681SAndroid Build Coastguard Workerdefine void @local_load_i64_align_4_with_split_offset(i64 addrspace(1)* nocapture %out, i64 addrspace(3)* %in) #0 {
360*9880d681SAndroid Build Coastguard Worker  %ptr = bitcast i64 addrspace(3)* %in to i32 addrspace(3)*
361*9880d681SAndroid Build Coastguard Worker  %ptr255 = getelementptr i32, i32 addrspace(3)* %ptr, i32 255
362*9880d681SAndroid Build Coastguard Worker  %ptri64 = bitcast i32 addrspace(3)* %ptr255 to i64 addrspace(3)*
363*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(3)* %ptri64, align 4
364*9880d681SAndroid Build Coastguard Worker  store i64 %val, i64 addrspace(1)* %out, align 8
365*9880d681SAndroid Build Coastguard Worker  ret void
366*9880d681SAndroid Build Coastguard Worker}
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_load_i64_align_1:
369*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
370*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
371*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
372*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
373*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
374*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
375*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
376*9880d681SAndroid Build Coastguard Worker; GCN: ds_read_u8
377*9880d681SAndroid Build Coastguard Worker; GCN: store_dwordx2
378*9880d681SAndroid Build Coastguard Workerdefine void @local_load_i64_align_1(i64 addrspace(1)* nocapture %out, i64 addrspace(3)* %in) #0 {
379*9880d681SAndroid Build Coastguard Worker  %val = load i64, i64 addrspace(3)* %in, align 1
380*9880d681SAndroid Build Coastguard Worker  store i64 %val, i64 addrspace(1)* %out, align 8
381*9880d681SAndroid Build Coastguard Worker  ret void
382*9880d681SAndroid Build Coastguard Worker}
383*9880d681SAndroid Build Coastguard Worker
384*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_store_i64_align_4:
385*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32
386*9880d681SAndroid Build Coastguard Workerdefine void @local_store_i64_align_4(i64 addrspace(3)* %out, i64 %val) #0 {
387*9880d681SAndroid Build Coastguard Worker  store i64 %val, i64 addrspace(3)* %out, align 4
388*9880d681SAndroid Build Coastguard Worker  ret void
389*9880d681SAndroid Build Coastguard Worker}
390*9880d681SAndroid Build Coastguard Worker
391*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_store_i64_align_4_with_offset
392*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset0:8 offset1:9
393*9880d681SAndroid Build Coastguard Worker; GCN: s_endpgm
394*9880d681SAndroid Build Coastguard Workerdefine void @local_store_i64_align_4_with_offset(i64 addrspace(3)* %out) #0 {
395*9880d681SAndroid Build Coastguard Worker  %ptr = getelementptr i64, i64 addrspace(3)* %out, i32 4
396*9880d681SAndroid Build Coastguard Worker  store i64 0, i64 addrspace(3)* %ptr, align 4
397*9880d681SAndroid Build Coastguard Worker  ret void
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}local_store_i64_align_4_with_split_offset:
401*9880d681SAndroid Build Coastguard Worker; The tests for the case where the lo offset is 8-bits, but the hi offset is 9-bits
402*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1
403*9880d681SAndroid Build Coastguard Worker; GCN: s_endpgm
404*9880d681SAndroid Build Coastguard Workerdefine void @local_store_i64_align_4_with_split_offset(i64 addrspace(3)* %out) #0 {
405*9880d681SAndroid Build Coastguard Worker  %ptr = bitcast i64 addrspace(3)* %out to i32 addrspace(3)*
406*9880d681SAndroid Build Coastguard Worker  %ptr255 = getelementptr i32, i32 addrspace(3)* %ptr, i32 255
407*9880d681SAndroid Build Coastguard Worker  %ptri64 = bitcast i32 addrspace(3)* %ptr255 to i64 addrspace(3)*
408*9880d681SAndroid Build Coastguard Worker  store i64 0, i64 addrspace(3)* %out, align 4
409*9880d681SAndroid Build Coastguard Worker  ret void
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_unaligned_load_i32:
413*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
414*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
415*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
416*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
417*9880d681SAndroid Build Coastguard Worker
418*9880d681SAndroid Build Coastguard Worker; UNALIGNED: s_load_dword
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dword
421*9880d681SAndroid Build Coastguard Workerdefine void @constant_unaligned_load_i32(i32 addrspace(2)* %p, i32 addrspace(1)* %r) #0 {
422*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(2)* %p, align 1
423*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(1)* %r, align 4
424*9880d681SAndroid Build Coastguard Worker  ret void
425*9880d681SAndroid Build Coastguard Worker}
426*9880d681SAndroid Build Coastguard Worker
427*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align2_load_i32:
428*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
429*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Worker; UNALIGNED: s_load_dword
432*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dword
433*9880d681SAndroid Build Coastguard Workerdefine void @constant_align2_load_i32(i32 addrspace(2)* %p, i32 addrspace(1)* %r) #0 {
434*9880d681SAndroid Build Coastguard Worker  %v = load i32, i32 addrspace(2)* %p, align 2
435*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32 addrspace(1)* %r, align 4
436*9880d681SAndroid Build Coastguard Worker  ret void
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align2_load_i64:
440*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
441*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
442*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
443*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ushort
444*9880d681SAndroid Build Coastguard Worker
445*9880d681SAndroid Build Coastguard Worker; UNALIGNED: s_load_dwordx2
446*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_store_dwordx2
447*9880d681SAndroid Build Coastguard Workerdefine void @constant_align2_load_i64(i64 addrspace(2)* %p, i64 addrspace(1)* %r) #0 {
448*9880d681SAndroid Build Coastguard Worker  %v = load i64, i64 addrspace(2)* %p, align 2
449*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64 addrspace(1)* %r, align 4
450*9880d681SAndroid Build Coastguard Worker  ret void
451*9880d681SAndroid Build Coastguard Worker}
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align4_load_i64:
454*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2
455*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx2
456*9880d681SAndroid Build Coastguard Workerdefine void @constant_align4_load_i64(i64 addrspace(2)* %p, i64 addrspace(1)* %r) #0 {
457*9880d681SAndroid Build Coastguard Worker  %v = load i64, i64 addrspace(2)* %p, align 4
458*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64 addrspace(1)* %r, align 4
459*9880d681SAndroid Build Coastguard Worker  ret void
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align4_load_v4i32:
463*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx4
464*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx4
465*9880d681SAndroid Build Coastguard Workerdefine void @constant_align4_load_v4i32(<4 x i32> addrspace(2)* %p, <4 x i32> addrspace(1)* %r) #0 {
466*9880d681SAndroid Build Coastguard Worker  %v = load <4 x i32>, <4 x i32> addrspace(2)* %p, align 4
467*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %v, <4 x i32> addrspace(1)* %r, align 4
468*9880d681SAndroid Build Coastguard Worker  ret void
469*9880d681SAndroid Build Coastguard Worker}
470*9880d681SAndroid Build Coastguard Worker
471*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_unaligned_load_v2i32:
472*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
473*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
474*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
475*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
478*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
479*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
480*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dwordx2
483*9880d681SAndroid Build Coastguard Worker
484*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx2
485*9880d681SAndroid Build Coastguard Workerdefine void @constant_unaligned_load_v2i32(<2 x i32> addrspace(2)* %p, <2 x i32> addrspace(1)* %r) #0 {
486*9880d681SAndroid Build Coastguard Worker  %v = load <2 x i32>, <2 x i32> addrspace(2)* %p, align 1
487*9880d681SAndroid Build Coastguard Worker  store <2 x i32> %v, <2 x i32> addrspace(1)* %r, align 4
488*9880d681SAndroid Build Coastguard Worker  ret void
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Worker
491*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_unaligned_load_v4i32:
492*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
493*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
494*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
495*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
496*9880d681SAndroid Build Coastguard Worker
497*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
498*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
499*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
500*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
501*9880d681SAndroid Build Coastguard Worker
502*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
503*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
504*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
505*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
506*9880d681SAndroid Build Coastguard Worker
507*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
508*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
509*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
510*9880d681SAndroid Build Coastguard Worker; ALIGNED: buffer_load_ubyte
511*9880d681SAndroid Build Coastguard Worker
512*9880d681SAndroid Build Coastguard Worker; UNALIGNED: buffer_load_dwordx4
513*9880d681SAndroid Build Coastguard Worker
514*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx4
515*9880d681SAndroid Build Coastguard Workerdefine void @constant_unaligned_load_v4i32(<4 x i32> addrspace(2)* %p, <4 x i32> addrspace(1)* %r) #0 {
516*9880d681SAndroid Build Coastguard Worker  %v = load <4 x i32>, <4 x i32> addrspace(2)* %p, align 1
517*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %v, <4 x i32> addrspace(1)* %r, align 4
518*9880d681SAndroid Build Coastguard Worker  ret void
519*9880d681SAndroid Build Coastguard Worker}
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align4_load_i8:
522*9880d681SAndroid Build Coastguard Worker; SI: buffer_load_ubyte
523*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_byte
524*9880d681SAndroid Build Coastguard Workerdefine void @constant_align4_load_i8(i8 addrspace(2)* %p, i8 addrspace(1)* %r) #0 {
525*9880d681SAndroid Build Coastguard Worker  %v = load i8, i8 addrspace(2)* %p, align 4
526*9880d681SAndroid Build Coastguard Worker  store i8 %v, i8 addrspace(1)* %r, align 4
527*9880d681SAndroid Build Coastguard Worker  ret void
528*9880d681SAndroid Build Coastguard Worker}
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align2_load_i8:
531*9880d681SAndroid Build Coastguard Worker; SI: buffer_load_ubyte
532*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_byte
533*9880d681SAndroid Build Coastguard Workerdefine void @constant_align2_load_i8(i8 addrspace(2)* %p, i8 addrspace(1)* %r) #0 {
534*9880d681SAndroid Build Coastguard Worker  %v = load i8, i8 addrspace(2)* %p, align 2
535*9880d681SAndroid Build Coastguard Worker  store i8 %v, i8 addrspace(1)* %r, align 2
536*9880d681SAndroid Build Coastguard Worker  ret void
537*9880d681SAndroid Build Coastguard Worker}
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}constant_align4_merge_load_2_i32:
540*9880d681SAndroid Build Coastguard Worker; SI: s_load_dwordx2 s{{\[}}[[LO:[0-9]+]]:[[HI:[0-9]+]]{{\]}}, s{{\[[0-9]+:[0-9]+\]}}, 0x0{{$}}
541*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mov_b32_e32 v[[VLO:[0-9]+]], s[[LO]]
542*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mov_b32_e32 v[[VHI:[0-9]+]], s[[HI]]
543*9880d681SAndroid Build Coastguard Worker; SI: buffer_store_dwordx2 v{{\[}}[[VLO]]:[[VHI]]{{\]}}
544*9880d681SAndroid Build Coastguard Workerdefine void @constant_align4_merge_load_2_i32(i32 addrspace(2)* %p, i32 addrspace(1)* %r) #0 {
545*9880d681SAndroid Build Coastguard Worker  %gep0 = getelementptr i32, i32 addrspace(2)* %p, i64 1
546*9880d681SAndroid Build Coastguard Worker  %v0 = load i32, i32 addrspace(2)* %p, align 4
547*9880d681SAndroid Build Coastguard Worker  %v1 = load i32, i32 addrspace(2)* %gep0, align 4
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker  %gep1 = getelementptr i32, i32 addrspace(1)* %r, i64 1
550*9880d681SAndroid Build Coastguard Worker  store i32 %v0, i32 addrspace(1)* %r, align 4
551*9880d681SAndroid Build Coastguard Worker  store i32 %v1, i32 addrspace(1)* %gep1, align 4
552*9880d681SAndroid Build Coastguard Worker  ret void
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Worker
555*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind }
556