1; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=amdgcn -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
2; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s
3; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-NOHSA -check-prefix=FUNC %s
4; RUN:  llc -amdgpu-scalarize-global-loads=false  -march=r600 -mcpu=redwood < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=EG -check-prefix=FUNC %s
5; RUN:  llc -amdgpu-scalarize-global-loads=false  -mtriple=amdgcn--amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefix=GCN -check-prefix=GCN-HSA -check-prefix=FUNC %s
6
7
8; FUNC-LABEL: {{^}}global_load_i32:
9; GCN-NOHSA: buffer_load_dword v{{[0-9]+}}
10; GCN-HSA: {{flat|global}}_load_dword
11
12; EG: VTX_READ_32 T{{[0-9]+}}.X, T{{[0-9]+}}.X, 0
13define amdgpu_kernel void @global_load_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %in) #0 {
14entry:
15  %ld = load i32, i32 addrspace(1)* %in
16  store i32 %ld, i32 addrspace(1)* %out
17  ret void
18}
19
20; FUNC-LABEL: {{^}}global_load_v2i32:
21; GCN-NOHSA: buffer_load_dwordx2
22; GCN-HSA: {{flat|global}}_load_dwordx2
23
24; EG: VTX_READ_64
25define amdgpu_kernel void @global_load_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 {
26entry:
27  %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in
28  store <2 x i32> %ld, <2 x i32> addrspace(1)* %out
29  ret void
30}
31
32; FUNC-LABEL: {{^}}global_load_v3i32:
33; GCN-NOHSA: buffer_load_dwordx4
34; GCN-HSA: {{flat|global}}_load_dwordx4
35
36; EG: VTX_READ_128
37define amdgpu_kernel void @global_load_v3i32(<3 x i32> addrspace(1)* %out, <3 x i32> addrspace(1)* %in) #0 {
38entry:
39  %ld = load <3 x i32>, <3 x i32> addrspace(1)* %in
40  store <3 x i32> %ld, <3 x i32> addrspace(1)* %out
41  ret void
42}
43
44; FUNC-LABEL: {{^}}global_load_v4i32:
45; GCN-NOHSA: buffer_load_dwordx4
46; GCN-HSA: {{flat|global}}_load_dwordx4
47
48; EG: VTX_READ_128
49define amdgpu_kernel void @global_load_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 {
50entry:
51  %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in
52  store <4 x i32> %ld, <4 x i32> addrspace(1)* %out
53  ret void
54}
55
56; FUNC-LABEL: {{^}}global_load_v8i32:
57; GCN-NOHSA: buffer_load_dwordx4
58; GCN-NOHSA: buffer_load_dwordx4
59; GCN-HSA: {{flat|global}}_load_dwordx4
60; GCN-HSA: {{flat|global}}_load_dwordx4
61
62; EG: VTX_READ_128
63; EG: VTX_READ_128
64define amdgpu_kernel void @global_load_v8i32(<8 x i32> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 {
65entry:
66  %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in
67  store <8 x i32> %ld, <8 x i32> addrspace(1)* %out
68  ret void
69}
70
71; FUNC-LABEL: {{^}}global_load_v16i32:
72; GCN-NOHSA: buffer_load_dwordx4
73; GCN-NOHSA: buffer_load_dwordx4
74; GCN-NOHSA: buffer_load_dwordx4
75; GCN-NOHSA: buffer_load_dwordx4
76
77; GCN-HSA: {{flat|global}}_load_dwordx4
78; GCN-HSA: {{flat|global}}_load_dwordx4
79; GCN-HSA: {{flat|global}}_load_dwordx4
80; GCN-HSA: {{flat|global}}_load_dwordx4
81
82; EG: VTX_READ_128
83; EG: VTX_READ_128
84; EG: VTX_READ_128
85; EG: VTX_READ_128
86define amdgpu_kernel void @global_load_v16i32(<16 x i32> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 {
87entry:
88  %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in
89  store <16 x i32> %ld, <16 x i32> addrspace(1)* %out
90  ret void
91}
92
93; FUNC-LABEL: {{^}}global_zextload_i32_to_i64:
94; GCN-NOHSA-DAG: buffer_load_dword v[[LO:[0-9]+]],
95; GCN-HSA-DAG: {{flat|global}}_load_dword v[[LO:[0-9]+]],
96; GCN-DAG: v_mov_b32_e32 v[[HI:[0-9]+]], 0{{$}}
97
98; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]]
99; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]]
100
101; EG: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+}}.XY
102define amdgpu_kernel void @global_zextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(1)* %in) #0 {
103  %ld = load i32, i32 addrspace(1)* %in
104  %ext = zext i32 %ld to i64
105  store i64 %ext, i64 addrspace(1)* %out
106  ret void
107}
108
109; FUNC-LABEL: {{^}}global_sextload_i32_to_i64:
110; GCN-NOHSA: buffer_load_dword v[[LO:[0-9]+]]
111; GCN-HSA: {{flat|global}}_load_dword v[[LO:[0-9]+]]
112; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]]
113; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]{{\]}}
114; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}}
115
116
117; EG: MEM_RAT
118; EG: VTX_READ_32
119; EG: ASHR {{[* ]*}}T{{[0-9]\.[XYZW]}}, T{{[0-9]\.[XYZW]}},  literal.
120; EG: 31
121define amdgpu_kernel void @global_sextload_i32_to_i64(i64 addrspace(1)* %out, i32 addrspace(1)* %in) #0 {
122  %ld = load i32, i32 addrspace(1)* %in
123  %ext = sext i32 %ld to i64
124  store i64 %ext, i64 addrspace(1)* %out
125  ret void
126}
127
128; FUNC-LABEL: {{^}}global_zextload_v1i32_to_v1i64:
129; GCN-NOHSA: buffer_load_dword
130; GCN-NOHSA: buffer_store_dwordx2
131
132; GCN-HSA: {{flat|global}}_load_dword
133; GCN-HSA: {{flat|global}}_store_dwordx2
134define amdgpu_kernel void @global_zextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(1)* %in) #0 {
135  %ld = load <1 x i32>, <1 x i32> addrspace(1)* %in
136  %ext = zext <1 x i32> %ld to <1 x i64>
137  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
138  ret void
139}
140
141; FUNC-LABEL: {{^}}global_sextload_v1i32_to_v1i64:
142; GCN-NOHSA: buffer_load_dword v[[LO:[0-9]+]]
143; GCN-HSA: {{flat|global}}_load_dword v[[LO:[0-9]+]]
144; GCN: v_ashrrev_i32_e32 v[[HI:[0-9]+]], 31, v[[LO]]
145; GCN-NOHSA: buffer_store_dwordx2 v{{\[}}[[LO]]:[[HI]]{{\]}}
146; GCN-HSA: {{flat|global}}_store_dwordx2 v{{\[[0-9]+:[0-9]+\]}}, v{{\[}}[[LO]]:[[HI]]{{\]}}
147define amdgpu_kernel void @global_sextload_v1i32_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i32> addrspace(1)* %in) #0 {
148  %ld = load <1 x i32>, <1 x i32> addrspace(1)* %in
149  %ext = sext <1 x i32> %ld to <1 x i64>
150  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
151  ret void
152}
153
154; FUNC-LABEL: {{^}}global_zextload_v2i32_to_v2i64:
155; GCN-NOHSA: buffer_load_dwordx2
156; GCN-NOHSA: buffer_store_dwordx4
157
158; GCN-HSA: {{flat|global}}_load_dwordx2
159; GCN-HSA: {{flat|global}}_store_dwordx4
160define amdgpu_kernel void @global_zextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 {
161  %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in
162  %ext = zext <2 x i32> %ld to <2 x i64>
163  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
164  ret void
165}
166
167; FUNC-LABEL: {{^}}global_sextload_v2i32_to_v2i64:
168; GCN-NOHSA: buffer_load_dwordx2
169; GCN-HSA: {{flat|global}}_load_dwordx2
170
171; GCN-DAG: v_ashrrev_i32
172; GCN-DAG: v_ashrrev_i32
173
174; GCN-NOHSA-DAG: buffer_store_dwordx4
175; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
176define amdgpu_kernel void @global_sextload_v2i32_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i32> addrspace(1)* %in) #0 {
177  %ld = load <2 x i32>, <2 x i32> addrspace(1)* %in
178  %ext = sext <2 x i32> %ld to <2 x i64>
179  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
180  ret void
181}
182
183; FUNC-LABEL: {{^}}global_zextload_v4i32_to_v4i64:
184; GCN-NOHSA: buffer_load_dwordx4
185; GCN-NOHSA: buffer_store_dwordx4
186; GCN-NOHSA: buffer_store_dwordx4
187
188; GCN-HSA: {{flat|global}}_load_dwordx4
189; GCN-HSA: {{flat|global}}_store_dwordx4
190; GCN-HSA: {{flat|global}}_store_dwordx4
191define amdgpu_kernel void @global_zextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 {
192  %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in
193  %ext = zext <4 x i32> %ld to <4 x i64>
194  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
195  ret void
196}
197
198; FUNC-LABEL: {{^}}global_sextload_v4i32_to_v4i64:
199; GCN-NOHSA: buffer_load_dwordx4
200; GCN-HSA: {{flat|global}}_load_dwordx4
201
202; GCN-DAG: v_ashrrev_i32
203; GCN-DAG: v_ashrrev_i32
204; GCN-DAG: v_ashrrev_i32
205; GCN-DAG: v_ashrrev_i32
206
207; GCN-NOHSA-DAG: buffer_store_dwordx4
208; GCN-NOHSA-DAG: buffer_store_dwordx4
209
210; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
211; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
212define amdgpu_kernel void @global_sextload_v4i32_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i32> addrspace(1)* %in) #0 {
213  %ld = load <4 x i32>, <4 x i32> addrspace(1)* %in
214  %ext = sext <4 x i32> %ld to <4 x i64>
215  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
216  ret void
217}
218
219; FUNC-LABEL: {{^}}global_zextload_v8i32_to_v8i64:
220; GCN-NOHSA: buffer_load_dwordx4
221; GCN-NOHSA: buffer_load_dwordx4
222
223; GCN-HSA: {{flat|global}}_load_dwordx4
224; GCN-HSA: {{flat|global}}_load_dwordx4
225
226; GCN-NOHSA-DAG: buffer_store_dwordx4
227; GCN-NOHSA-DAG: buffer_store_dwordx4
228; GCN-NOHSA-DAG: buffer_store_dwordx4
229; GCN-NOHSA-DAG: buffer_store_dwordx4
230
231; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
232; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
233; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
234; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
235define amdgpu_kernel void @global_zextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 {
236  %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in
237  %ext = zext <8 x i32> %ld to <8 x i64>
238  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
239  ret void
240}
241
242; FUNC-LABEL: {{^}}global_sextload_v8i32_to_v8i64:
243; GCN-NOHSA: buffer_load_dwordx4
244; GCN-NOHSA: buffer_load_dwordx4
245
246; GCN-HSA: {{flat|global}}_load_dwordx4
247; GCN-HSA: {{flat|global}}_load_dwordx4
248
249; GCN-DAG: v_ashrrev_i32
250; GCN-DAG: v_ashrrev_i32
251; GCN-DAG: v_ashrrev_i32
252; GCN-DAG: v_ashrrev_i32
253; GCN-DAG: v_ashrrev_i32
254; GCN-DAG: v_ashrrev_i32
255; GCN-DAG: v_ashrrev_i32
256; GCN-DAG: v_ashrrev_i32
257
258; GCN-NOHSA-DAG: buffer_store_dwordx4
259; GCN-NOHSA-DAG: buffer_store_dwordx4
260; GCN-NOHSA-DAG: buffer_store_dwordx4
261; GCN-NOHSA-DAG: buffer_store_dwordx4
262
263; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
264; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
265; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
266; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
267define amdgpu_kernel void @global_sextload_v8i32_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i32> addrspace(1)* %in) #0 {
268  %ld = load <8 x i32>, <8 x i32> addrspace(1)* %in
269  %ext = sext <8 x i32> %ld to <8 x i64>
270  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
271  ret void
272}
273
274; FUNC-LABEL: {{^}}global_sextload_v16i32_to_v16i64:
275; GCN-NOHSA: buffer_load_dwordx4
276; GCN-NOHSA: buffer_load_dwordx4
277; GCN-NOHSA: buffer_load_dwordx4
278; GCN-NOHSA: buffer_load_dwordx4
279
280; GCN-HSA: {{flat|global}}_load_dwordx4
281; GCN-HSA: {{flat|global}}_load_dwordx4
282; GCN-HSA: {{flat|global}}_load_dwordx4
283; GCN-HSA: {{flat|global}}_load_dwordx4
284
285
286; GCN-DAG: v_ashrrev_i32
287; GCN-DAG: v_ashrrev_i32
288; GCN-DAG: v_ashrrev_i32
289; GCN-DAG: v_ashrrev_i32
290; GCN-NOHSA-DAG: buffer_store_dwordx4
291; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
292
293; GCN-DAG: v_ashrrev_i32
294; GCN-DAG: v_ashrrev_i32
295; GCN-DAG: v_ashrrev_i32
296; GCN-DAG: v_ashrrev_i32
297; GCN-NOHSA-DAG: buffer_store_dwordx4
298; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
299
300; GCN-DAG: v_ashrrev_i32
301; GCN-DAG: v_ashrrev_i32
302; GCN-DAG: v_ashrrev_i32
303; GCN-DAG: v_ashrrev_i32
304; GCN-NOHSA-DAG: buffer_store_dwordx4
305; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
306
307; GCN-DAG: v_ashrrev_i32
308; GCN-DAG: v_ashrrev_i32
309; GCN-DAG: v_ashrrev_i32
310; GCN-DAG: v_ashrrev_i32
311; GCN-NOHSA-DAG: buffer_store_dwordx4
312; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
313define amdgpu_kernel void @global_sextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 {
314  %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in
315  %ext = sext <16 x i32> %ld to <16 x i64>
316  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
317  ret void
318}
319
320; FUNC-LABEL: {{^}}global_zextload_v16i32_to_v16i64
321; GCN-NOHSA: buffer_load_dwordx4
322; GCN-NOHSA: buffer_load_dwordx4
323; GCN-NOHSA: buffer_load_dwordx4
324; GCN-NOHSA: buffer_load_dwordx4
325
326; GCN-HSA: {{flat|global}}_load_dwordx4
327; GCN-HSA: {{flat|global}}_load_dwordx4
328; GCN-HSA: {{flat|global}}_load_dwordx4
329; GCN-HSA: {{flat|global}}_load_dwordx4
330
331; GCN-NOHSA: buffer_store_dwordx4
332; GCN-NOHSA: buffer_store_dwordx4
333; GCN-NOHSA: buffer_store_dwordx4
334; GCN-NOHSA: buffer_store_dwordx4
335; GCN-NOHSA: buffer_store_dwordx4
336; GCN-NOHSA: buffer_store_dwordx4
337; GCN-NOHSA: buffer_store_dwordx4
338; GCN-NOHSA: buffer_store_dwordx4
339
340; GCN-HSA: {{flat|global}}_store_dwordx4
341; GCN-HSA: {{flat|global}}_store_dwordx4
342; GCN-HSA: {{flat|global}}_store_dwordx4
343; GCN-HSA: {{flat|global}}_store_dwordx4
344; GCN-HSA: {{flat|global}}_store_dwordx4
345; GCN-HSA: {{flat|global}}_store_dwordx4
346; GCN-HSA: {{flat|global}}_store_dwordx4
347; GCN-HSA: {{flat|global}}_store_dwordx4
348define amdgpu_kernel void @global_zextload_v16i32_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i32> addrspace(1)* %in) #0 {
349  %ld = load <16 x i32>, <16 x i32> addrspace(1)* %in
350  %ext = zext <16 x i32> %ld to <16 x i64>
351  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
352  ret void
353}
354
355; FUNC-LABEL: {{^}}global_sextload_v32i32_to_v32i64:
356
357; GCN-NOHSA: buffer_load_dwordx4
358; GCN-NOHSA: buffer_load_dwordx4
359; GCN-NOHSA: buffer_load_dwordx4
360; GCN-NOHSA: buffer_load_dwordx4
361; GCN-NOHSA: buffer_load_dwordx4
362; GCN-NOHSA: buffer_load_dwordx4
363; GCN-NOHSA: buffer_load_dwordx4
364; GCN-NOHSA-DAG: buffer_load_dwordx4
365
366; GCN-HSA: {{flat|global}}_load_dwordx4
367; GCN-HSA: {{flat|global}}_load_dwordx4
368; GCN-HSA: {{flat|global}}_load_dwordx4
369; GCN-HSA: {{flat|global}}_load_dwordx4
370; GCN-HSA: {{flat|global}}_load_dwordx4
371; GCN-HSA: {{flat|global}}_load_dwordx4
372; GCN-HSA: {{flat|global}}_load_dwordx4
373; GCN-HSA: {{flat|global}}_load_dwordx4
374
375; GCN-DAG: v_ashrrev_i32
376; GCN-DAG: v_ashrrev_i32
377; GCN-DAG: v_ashrrev_i32
378; GCN-DAG: v_ashrrev_i32
379; GCN-DAG: v_ashrrev_i32
380; GCN-DAG: v_ashrrev_i32
381; GCN-DAG: v_ashrrev_i32
382; GCN-DAG: v_ashrrev_i32
383; GCN-DAG: v_ashrrev_i32
384; GCN-DAG: v_ashrrev_i32
385; GCN-DAG: v_ashrrev_i32
386; GCN-DAG: v_ashrrev_i32
387; GCN-DAG: v_ashrrev_i32
388; GCN-DAG: v_ashrrev_i32
389; GCN-DAG: v_ashrrev_i32
390; GCN-DAG: v_ashrrev_i32
391; GCN-DAG: v_ashrrev_i32
392; GCN-DAG: v_ashrrev_i32
393; GCN-DAG: v_ashrrev_i32
394; GCN-DAG: v_ashrrev_i32
395; GCN-DAG: v_ashrrev_i32
396; GCN-DAG: v_ashrrev_i32
397; GCN-DAG: v_ashrrev_i32
398; GCN-DAG: v_ashrrev_i32
399; GCN-DAG: v_ashrrev_i32
400; GCN-DAG: v_ashrrev_i32
401; GCN-DAG: v_ashrrev_i32
402; GCN-DAG: v_ashrrev_i32
403; GCN-DAG: v_ashrrev_i32
404; GCN-DAG: v_ashrrev_i32
405; GCN-DAG: v_ashrrev_i32
406; GCN-DAG: v_ashrrev_i32
407
408; GCN-NOHSA: buffer_store_dwordx4
409; GCN-NOHSA: buffer_store_dwordx4
410; GCN-NOHSA: buffer_store_dwordx4
411; GCN-NOHSA: buffer_store_dwordx4
412
413; GCN-NOHSA: buffer_store_dwordx4
414; GCN-NOHSA: buffer_store_dwordx4
415; GCN-NOHSA: buffer_store_dwordx4
416; GCN-NOHSA: buffer_store_dwordx4
417
418; GCN-NOHSA: buffer_store_dwordx4
419; GCN-NOHSA: buffer_store_dwordx4
420; GCN-NOHSA: buffer_store_dwordx4
421; GCN-NOHSA: buffer_store_dwordx4
422
423; GCN-NOHSA: buffer_store_dwordx4
424; GCN-NOHSA: buffer_store_dwordx4
425; GCN-NOHSA: buffer_store_dwordx4
426; GCN-NOHSA: buffer_store_dwordx4
427
428; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
429; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
430; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
431; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
432
433; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
434; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
435; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
436; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
437
438; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
439; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
440; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
441; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
442
443; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
444; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
445; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
446; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
447
448define amdgpu_kernel void @global_sextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 {
449  %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in
450  %ext = sext <32 x i32> %ld to <32 x i64>
451  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
452  ret void
453}
454
455; FUNC-LABEL: {{^}}global_zextload_v32i32_to_v32i64:
456; GCN-NOHSA: buffer_load_dwordx4
457; GCN-NOHSA: buffer_load_dwordx4
458; GCN-NOHSA: buffer_load_dwordx4
459; GCN-NOHSA: buffer_load_dwordx4
460; GCN-NOHSA: buffer_load_dwordx4
461; GCN-NOHSA: buffer_load_dwordx4
462; GCN-NOHSA: buffer_load_dwordx4
463; GCN-NOHSA: buffer_load_dwordx4
464
465; GCN-HSA: {{flat|global}}_load_dwordx4
466; GCN-HSA: {{flat|global}}_load_dwordx4
467; GCN-HSA: {{flat|global}}_load_dwordx4
468; GCN-HSA: {{flat|global}}_load_dwordx4
469; GCN-HSA: {{flat|global}}_load_dwordx4
470; GCN-HSA: {{flat|global}}_load_dwordx4
471; GCN-HSA: {{flat|global}}_load_dwordx4
472; GCN-HSA: {{flat|global}}_load_dwordx4
473
474
475; GCN-NOHSA-DAG: buffer_store_dwordx4
476; GCN-NOHSA-DAG: buffer_store_dwordx4
477; GCN-NOHSA-DAG: buffer_store_dwordx4
478; GCN-NOHSA-DAG: buffer_store_dwordx4
479
480; GCN-NOHSA-DAG: buffer_store_dwordx4
481; GCN-NOHSA-DAG: buffer_store_dwordx4
482; GCN-NOHSA-DAG: buffer_store_dwordx4
483; GCN-NOHSA-DAG: buffer_store_dwordx4
484
485; GCN-NOHSA-DAG: buffer_store_dwordx4
486; GCN-NOHSA-DAG: buffer_store_dwordx4
487; GCN-NOHSA-DAG: buffer_store_dwordx4
488; GCN-NOHSA-DAG: buffer_store_dwordx4
489
490; GCN-NOHSA-DAG: buffer_store_dwordx4
491; GCN-NOHSA-DAG: buffer_store_dwordx4
492; GCN-NOHSA-DAG: buffer_store_dwordx4
493; GCN-NOHSA-DAG: buffer_store_dwordx4
494
495
496; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
497; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
498; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
499; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
500
501; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
502; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
503; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
504; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
505
506; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
507; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
508; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
509; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
510
511; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
512; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
513; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
514; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
515define amdgpu_kernel void @global_zextload_v32i32_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 {
516  %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in
517  %ext = zext <32 x i32> %ld to <32 x i64>
518  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
519  ret void
520}
521
522; FUNC-LABEL: {{^}}global_load_v32i32:
523; GCN-NOHSA: buffer_load_dwordx4
524; GCN-NOHSA: buffer_load_dwordx4
525; GCN-NOHSA: buffer_load_dwordx4
526; GCN-NOHSA: buffer_load_dwordx4
527; GCN-NOHSA: buffer_load_dwordx4
528; GCN-NOHSA: buffer_load_dwordx4
529; GCN-NOHSA: buffer_load_dwordx4
530; GCN-NOHSA: buffer_load_dwordx4
531
532; GCN-HSA: {{flat|global}}_load_dwordx4
533; GCN-HSA: {{flat|global}}_load_dwordx4
534; GCN-HSA: {{flat|global}}_load_dwordx4
535; GCN-HSA: {{flat|global}}_load_dwordx4
536; GCN-HSA: {{flat|global}}_load_dwordx4
537; GCN-HSA: {{flat|global}}_load_dwordx4
538; GCN-HSA: {{flat|global}}_load_dwordx4
539; GCN-HSA: {{flat|global}}_load_dwordx4
540
541
542; GCN-NOHSA-DAG: buffer_store_dwordx4
543; GCN-NOHSA-DAG: buffer_store_dwordx4
544; GCN-NOHSA-DAG: buffer_store_dwordx4
545; GCN-NOHSA-DAG: buffer_store_dwordx4
546
547; GCN-NOHSA-DAG: buffer_store_dwordx4
548; GCN-NOHSA-DAG: buffer_store_dwordx4
549; GCN-NOHSA-DAG: buffer_store_dwordx4
550; GCN-NOHSA-DAG: buffer_store_dwordx4
551
552; GCN-NOHSA-DAG: buffer_store_dwordx4
553; GCN-NOHSA-DAG: buffer_store_dwordx4
554; GCN-NOHSA-DAG: buffer_store_dwordx4
555; GCN-NOHSA-DAG: buffer_store_dwordx4
556
557; GCN-NOHSA-DAG: buffer_store_dwordx4
558; GCN-NOHSA-DAG: buffer_store_dwordx4
559; GCN-NOHSA-DAG: buffer_store_dwordx4
560; GCN-NOHSA-DAG: buffer_store_dwordx4
561
562; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
563; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
564; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
565; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
566
567; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
568; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
569; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
570; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
571
572; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
573; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
574; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
575; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
576
577; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
578; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
579; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
580; GCN-HSA-DAG: {{flat|global}}_store_dwordx4
581define amdgpu_kernel void @global_load_v32i32(<32 x i32> addrspace(1)* %out, <32 x i32> addrspace(1)* %in) #0 {
582  %ld = load <32 x i32>, <32 x i32> addrspace(1)* %in
583  store <32 x i32> %ld, <32 x i32> addrspace(1)* %out
584  ret void
585}
586
587attributes #0 = { nounwind }
588