R600/SI: Enable all tests that pass on VI without changes
[oota-llvm.git] / test / CodeGen / R600 / kernel-args.ll
1 ; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=EG-CHECK
2 ; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck %s --check-prefix=EG-CHECK
3 ; RUN: llc < %s -march=amdgcn -mcpu=SI -verify-machineinstrs | FileCheck %s --check-prefix=SI-CHECK
4
5 ; EG-CHECK-LABEL: {{^}}i8_arg:
6 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
7 ; SI-CHECK-LABEL: {{^}}i8_arg:
8 ; SI-CHECK: buffer_load_ubyte
9
10 define void @i8_arg(i32 addrspace(1)* nocapture %out, i8 %in) nounwind {
11 entry:
12   %0 = zext i8 %in to i32
13   store i32 %0, i32 addrspace(1)* %out, align 4
14   ret void
15 }
16
17 ; EG-CHECK-LABEL: {{^}}i8_zext_arg:
18 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
19 ; SI-CHECK-LABEL: {{^}}i8_zext_arg:
20 ; SI-CHECK: s_load_dword s{{[0-9]}}, s[0:1], 0xb
21
22 define void @i8_zext_arg(i32 addrspace(1)* nocapture %out, i8 zeroext %in) nounwind {
23 entry:
24   %0 = zext i8 %in to i32
25   store i32 %0, i32 addrspace(1)* %out, align 4
26   ret void
27 }
28
29 ; EG-CHECK-LABEL: {{^}}i8_sext_arg:
30 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
31 ; SI-CHECK-LABEL: {{^}}i8_sext_arg:
32 ; SI-CHECK: s_load_dword s{{[0-9]}}, s[0:1], 0xb
33
34 define void @i8_sext_arg(i32 addrspace(1)* nocapture %out, i8 signext %in) nounwind {
35 entry:
36   %0 = sext i8 %in to i32
37   store i32 %0, i32 addrspace(1)* %out, align 4
38   ret void
39 }
40
41 ; EG-CHECK-LABEL: {{^}}i16_arg:
42 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
43 ; SI-CHECK-LABEL: {{^}}i16_arg:
44 ; SI-CHECK: buffer_load_ushort
45
46 define void @i16_arg(i32 addrspace(1)* nocapture %out, i16 %in) nounwind {
47 entry:
48   %0 = zext i16 %in to i32
49   store i32 %0, i32 addrspace(1)* %out, align 4
50   ret void
51 }
52
53 ; EG-CHECK-LABEL: {{^}}i16_zext_arg:
54 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
55 ; SI-CHECK-LABEL: {{^}}i16_zext_arg:
56 ; SI-CHECK: s_load_dword s{{[0-9]}}, s[0:1], 0xb
57
58 define void @i16_zext_arg(i32 addrspace(1)* nocapture %out, i16 zeroext %in) nounwind {
59 entry:
60   %0 = zext i16 %in to i32
61   store i32 %0, i32 addrspace(1)* %out, align 4
62   ret void
63 }
64
65 ; EG-CHECK-LABEL: {{^}}i16_sext_arg:
66 ; EG-CHECK: MOV {{[ *]*}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z
67 ; SI-CHECK-LABEL: {{^}}i16_sext_arg:
68 ; SI-CHECK: s_load_dword s{{[0-9]}}, s[0:1], 0xb
69
70 define void @i16_sext_arg(i32 addrspace(1)* nocapture %out, i16 signext %in) nounwind {
71 entry:
72   %0 = sext i16 %in to i32
73   store i32 %0, i32 addrspace(1)* %out, align 4
74   ret void
75 }
76
77 ; EG-CHECK-LABEL: {{^}}i32_arg:
78 ; EG-CHECK: T{{[0-9]\.[XYZW]}}, KC0[2].Z
79 ; SI-CHECK-LABEL: {{^}}i32_arg:
80 ; s_load_dword s{{[0-9]}}, s[0:1], 0xb
81 define void @i32_arg(i32 addrspace(1)* nocapture %out, i32 %in) nounwind {
82 entry:
83   store i32 %in, i32 addrspace(1)* %out, align 4
84   ret void
85 }
86
87 ; EG-CHECK-LABEL: {{^}}f32_arg:
88 ; EG-CHECK: T{{[0-9]\.[XYZW]}}, KC0[2].Z
89 ; SI-CHECK-LABEL: {{^}}f32_arg:
90 ; s_load_dword s{{[0-9]}}, s[0:1], 0xb
91 define void @f32_arg(float addrspace(1)* nocapture %out, float %in) nounwind {
92 entry:
93   store float %in, float addrspace(1)* %out, align 4
94   ret void
95 }
96
97 ; EG-CHECK-LABEL: {{^}}v2i8_arg:
98 ; EG-CHECK: VTX_READ_8
99 ; EG-CHECK: VTX_READ_8
100 ; SI-CHECK-LABEL: {{^}}v2i8_arg:
101 ; SI-CHECK: buffer_load_ubyte
102 ; SI-CHECK: buffer_load_ubyte
103 define void @v2i8_arg(<2 x i8> addrspace(1)* %out, <2 x i8> %in) {
104 entry:
105   store <2 x i8> %in, <2 x i8> addrspace(1)* %out
106   ret void
107 }
108
109 ; EG-CHECK-LABEL: {{^}}v2i16_arg:
110 ; EG-CHECK: VTX_READ_16
111 ; EG-CHECK: VTX_READ_16
112 ; SI-CHECK-LABEL: {{^}}v2i16_arg:
113 ; SI-CHECK-DAG: buffer_load_ushort
114 ; SI-CHECK-DAG: buffer_load_ushort
115 define void @v2i16_arg(<2 x i16> addrspace(1)* %out, <2 x i16> %in) {
116 entry:
117   store <2 x i16> %in, <2 x i16> addrspace(1)* %out
118   ret void
119 }
120
121 ; EG-CHECK-LABEL: {{^}}v2i32_arg:
122 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].X
123 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[2].W
124 ; SI-CHECK-LABEL: {{^}}v2i32_arg:
125 ; SI-CHECK: s_load_dwordx2 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xb
126 define void @v2i32_arg(<2 x i32> addrspace(1)* nocapture %out, <2 x i32> %in) nounwind {
127 entry:
128   store <2 x i32> %in, <2 x i32> addrspace(1)* %out, align 4
129   ret void
130 }
131
132 ; EG-CHECK-LABEL: {{^}}v2f32_arg:
133 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].X
134 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[2].W
135 ; SI-CHECK-LABEL: {{^}}v2f32_arg:
136 ; SI-CHECK: s_load_dwordx2 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xb
137 define void @v2f32_arg(<2 x float> addrspace(1)* nocapture %out, <2 x float> %in) nounwind {
138 entry:
139   store <2 x float> %in, <2 x float> addrspace(1)* %out, align 4
140   ret void
141 }
142
143 ; EG-CHECK-LABEL: {{^}}v3i8_arg:
144 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 40
145 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 41
146 ; VTX_READ_8 T{{[0-9]}}.X, T{{[0-9]}}.X, 42
147 ; SI-CHECK-LABEL: {{^}}v3i8_arg:
148 define void @v3i8_arg(<3 x i8> addrspace(1)* nocapture %out, <3 x i8> %in) nounwind {
149 entry:
150   store <3 x i8> %in, <3 x i8> addrspace(1)* %out, align 4
151   ret void
152 }
153
154 ; EG-CHECK-LABEL: {{^}}v3i16_arg:
155 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 44
156 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 46
157 ; VTX_READ_16 T{{[0-9]}}.X, T{{[0-9]}}.X, 48
158 ; SI-CHECK-LABEL: {{^}}v3i16_arg:
159 define void @v3i16_arg(<3 x i16> addrspace(1)* nocapture %out, <3 x i16> %in) nounwind {
160 entry:
161   store <3 x i16> %in, <3 x i16> addrspace(1)* %out, align 4
162   ret void
163 }
164 ; EG-CHECK-LABEL: {{^}}v3i32_arg:
165 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
166 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
167 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
168 ; SI-CHECK-LABEL: {{^}}v3i32_arg:
169 ; SI-CHECK: s_load_dwordx4 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0xd
170 define void @v3i32_arg(<3 x i32> addrspace(1)* nocapture %out, <3 x i32> %in) nounwind {
171 entry:
172   store <3 x i32> %in, <3 x i32> addrspace(1)* %out, align 4
173   ret void
174 }
175
176 ; EG-CHECK-LABEL: {{^}}v3f32_arg:
177 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
178 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
179 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
180 ; SI-CHECK-LABEL: {{^}}v3f32_arg:
181 ; SI-CHECK: s_load_dwordx4 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0xd
182 define void @v3f32_arg(<3 x float> addrspace(1)* nocapture %out, <3 x float> %in) nounwind {
183 entry:
184   store <3 x float> %in, <3 x float> addrspace(1)* %out, align 4
185   ret void
186 }
187
188 ; EG-CHECK-LABEL: {{^}}v4i8_arg:
189 ; EG-CHECK: VTX_READ_8
190 ; EG-CHECK: VTX_READ_8
191 ; EG-CHECK: VTX_READ_8
192 ; EG-CHECK: VTX_READ_8
193 ; SI-CHECK-LABEL: {{^}}v4i8_arg:
194 ; SI-CHECK: buffer_load_ubyte
195 ; SI-CHECK: buffer_load_ubyte
196 ; SI-CHECK: buffer_load_ubyte
197 ; SI-CHECK: buffer_load_ubyte
198 define void @v4i8_arg(<4 x i8> addrspace(1)* %out, <4 x i8> %in) {
199 entry:
200   store <4 x i8> %in, <4 x i8> addrspace(1)* %out
201   ret void
202 }
203
204 ; EG-CHECK-LABEL: {{^}}v4i16_arg:
205 ; EG-CHECK: VTX_READ_16
206 ; EG-CHECK: VTX_READ_16
207 ; EG-CHECK: VTX_READ_16
208 ; EG-CHECK: VTX_READ_16
209 ; SI-CHECK-LABEL: {{^}}v4i16_arg:
210 ; SI-CHECK: buffer_load_ushort
211 ; SI-CHECK: buffer_load_ushort
212 ; SI-CHECK: buffer_load_ushort
213 ; SI-CHECK: buffer_load_ushort
214 define void @v4i16_arg(<4 x i16> addrspace(1)* %out, <4 x i16> %in) {
215 entry:
216   store <4 x i16> %in, <4 x i16> addrspace(1)* %out
217   ret void
218 }
219
220 ; EG-CHECK-LABEL: {{^}}v4i32_arg:
221 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
222 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
223 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
224 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].X
225 ; SI-CHECK-LABEL: {{^}}v4i32_arg:
226 ; SI-CHECK: s_load_dwordx4 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xd
227 define void @v4i32_arg(<4 x i32> addrspace(1)* nocapture %out, <4 x i32> %in) nounwind {
228 entry:
229   store <4 x i32> %in, <4 x i32> addrspace(1)* %out, align 4
230   ret void
231 }
232
233 ; EG-CHECK-LABEL: {{^}}v4f32_arg:
234 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Y
235 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].Z
236 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[3].W
237 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].X
238 ; SI-CHECK-LABEL: {{^}}v4f32_arg:
239 ; SI-CHECK: s_load_dwordx4 s{{\[[0-9]:[0-9]\]}}, s[0:1], 0xd
240 define void @v4f32_arg(<4 x float> addrspace(1)* nocapture %out, <4 x float> %in) nounwind {
241 entry:
242   store <4 x float> %in, <4 x float> addrspace(1)* %out, align 4
243   ret void
244 }
245
246 ; EG-CHECK-LABEL: {{^}}v8i8_arg:
247 ; EG-CHECK: VTX_READ_8
248 ; EG-CHECK: VTX_READ_8
249 ; EG-CHECK: VTX_READ_8
250 ; EG-CHECK: VTX_READ_8
251 ; EG-CHECK: VTX_READ_8
252 ; EG-CHECK: VTX_READ_8
253 ; EG-CHECK: VTX_READ_8
254 ; EG-CHECK: VTX_READ_8
255 ; SI-CHECK-LABEL: {{^}}v8i8_arg:
256 ; SI-CHECK: buffer_load_ubyte
257 ; SI-CHECK: buffer_load_ubyte
258 ; SI-CHECK: buffer_load_ubyte
259 ; SI-CHECK: buffer_load_ubyte
260 ; SI-CHECK: buffer_load_ubyte
261 ; SI-CHECK: buffer_load_ubyte
262 ; SI-CHECK: buffer_load_ubyte
263 define void @v8i8_arg(<8 x i8> addrspace(1)* %out, <8 x i8> %in) {
264 entry:
265   store <8 x i8> %in, <8 x i8> addrspace(1)* %out
266   ret void
267 }
268
269 ; EG-CHECK-LABEL: {{^}}v8i16_arg:
270 ; EG-CHECK: VTX_READ_16
271 ; EG-CHECK: VTX_READ_16
272 ; EG-CHECK: VTX_READ_16
273 ; EG-CHECK: VTX_READ_16
274 ; EG-CHECK: VTX_READ_16
275 ; EG-CHECK: VTX_READ_16
276 ; EG-CHECK: VTX_READ_16
277 ; EG-CHECK: VTX_READ_16
278 ; SI-CHECK-LABEL: {{^}}v8i16_arg:
279 ; SI-CHECK: buffer_load_ushort
280 ; SI-CHECK: buffer_load_ushort
281 ; SI-CHECK: buffer_load_ushort
282 ; SI-CHECK: buffer_load_ushort
283 ; SI-CHECK: buffer_load_ushort
284 ; SI-CHECK: buffer_load_ushort
285 ; SI-CHECK: buffer_load_ushort
286 ; SI-CHECK: buffer_load_ushort
287 define void @v8i16_arg(<8 x i16> addrspace(1)* %out, <8 x i16> %in) {
288 entry:
289   store <8 x i16> %in, <8 x i16> addrspace(1)* %out
290   ret void
291 }
292
293 ; EG-CHECK-LABEL: {{^}}v8i32_arg:
294 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Y
295 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Z
296 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].W
297 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].X
298 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Y
299 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Z
300 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].W
301 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].X
302 ; SI-CHECK-LABEL: {{^}}v8i32_arg:
303 ; SI-CHECK: s_load_dwordx8 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x11
304 define void @v8i32_arg(<8 x i32> addrspace(1)* nocapture %out, <8 x i32> %in) nounwind {
305 entry:
306   store <8 x i32> %in, <8 x i32> addrspace(1)* %out, align 4
307   ret void
308 }
309
310 ; EG-CHECK-LABEL: {{^}}v8f32_arg:
311 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Y
312 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].Z
313 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[4].W
314 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].X
315 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Y
316 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].Z
317 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[5].W
318 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].X
319 ; SI-CHECK-LABEL: {{^}}v8f32_arg:
320 ; SI-CHECK: s_load_dwordx8 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x11
321 define void @v8f32_arg(<8 x float> addrspace(1)* nocapture %out, <8 x float> %in) nounwind {
322 entry:
323   store <8 x float> %in, <8 x float> addrspace(1)* %out, align 4
324   ret void
325 }
326
327 ; EG-CHECK-LABEL: {{^}}v16i8_arg:
328 ; EG-CHECK: VTX_READ_8
329 ; EG-CHECK: VTX_READ_8
330 ; EG-CHECK: VTX_READ_8
331 ; EG-CHECK: VTX_READ_8
332 ; EG-CHECK: VTX_READ_8
333 ; EG-CHECK: VTX_READ_8
334 ; EG-CHECK: VTX_READ_8
335 ; EG-CHECK: VTX_READ_8
336 ; EG-CHECK: VTX_READ_8
337 ; EG-CHECK: VTX_READ_8
338 ; EG-CHECK: VTX_READ_8
339 ; EG-CHECK: VTX_READ_8
340 ; EG-CHECK: VTX_READ_8
341 ; EG-CHECK: VTX_READ_8
342 ; EG-CHECK: VTX_READ_8
343 ; EG-CHECK: VTX_READ_8
344 ; SI-CHECK-LABEL: {{^}}v16i8_arg:
345 ; SI-CHECK: buffer_load_ubyte
346 ; SI-CHECK: buffer_load_ubyte
347 ; SI-CHECK: buffer_load_ubyte
348 ; SI-CHECK: buffer_load_ubyte
349 ; SI-CHECK: buffer_load_ubyte
350 ; SI-CHECK: buffer_load_ubyte
351 ; SI-CHECK: buffer_load_ubyte
352 ; SI-CHECK: buffer_load_ubyte
353 ; SI-CHECK: buffer_load_ubyte
354 ; SI-CHECK: buffer_load_ubyte
355 ; SI-CHECK: buffer_load_ubyte
356 ; SI-CHECK: buffer_load_ubyte
357 ; SI-CHECK: buffer_load_ubyte
358 ; SI-CHECK: buffer_load_ubyte
359 ; SI-CHECK: buffer_load_ubyte
360 ; SI-CHECK: buffer_load_ubyte
361 define void @v16i8_arg(<16 x i8> addrspace(1)* %out, <16 x i8> %in) {
362 entry:
363   store <16 x i8> %in, <16 x i8> addrspace(1)* %out
364   ret void
365 }
366
367 ; EG-CHECK-LABEL: {{^}}v16i16_arg:
368 ; EG-CHECK: VTX_READ_16
369 ; EG-CHECK: VTX_READ_16
370 ; EG-CHECK: VTX_READ_16
371 ; EG-CHECK: VTX_READ_16
372 ; EG-CHECK: VTX_READ_16
373 ; EG-CHECK: VTX_READ_16
374 ; EG-CHECK: VTX_READ_16
375 ; EG-CHECK: VTX_READ_16
376 ; EG-CHECK: VTX_READ_16
377 ; EG-CHECK: VTX_READ_16
378 ; EG-CHECK: VTX_READ_16
379 ; EG-CHECK: VTX_READ_16
380 ; EG-CHECK: VTX_READ_16
381 ; EG-CHECK: VTX_READ_16
382 ; EG-CHECK: VTX_READ_16
383 ; EG-CHECK: VTX_READ_16
384 ; SI-CHECK-LABEL: {{^}}v16i16_arg:
385 ; SI-CHECK: buffer_load_ushort
386 ; SI-CHECK: buffer_load_ushort
387 ; SI-CHECK: buffer_load_ushort
388 ; SI-CHECK: buffer_load_ushort
389 ; SI-CHECK: buffer_load_ushort
390 ; SI-CHECK: buffer_load_ushort
391 ; SI-CHECK: buffer_load_ushort
392 ; SI-CHECK: buffer_load_ushort
393 ; SI-CHECK: buffer_load_ushort
394 ; SI-CHECK: buffer_load_ushort
395 ; SI-CHECK: buffer_load_ushort
396 ; SI-CHECK: buffer_load_ushort
397 ; SI-CHECK: buffer_load_ushort
398 ; SI-CHECK: buffer_load_ushort
399 ; SI-CHECK: buffer_load_ushort
400 ; SI-CHECK: buffer_load_ushort
401 define void @v16i16_arg(<16 x i16> addrspace(1)* %out, <16 x i16> %in) {
402 entry:
403   store <16 x i16> %in, <16 x i16> addrspace(1)* %out
404   ret void
405 }
406
407 ; EG-CHECK-LABEL: {{^}}v16i32_arg:
408 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Y
409 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Z
410 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].W
411 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].X
412 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Y
413 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Z
414 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].W
415 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].X
416 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Y
417 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Z
418 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].W
419 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].X
420 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Y
421 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Z
422 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].W
423 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[10].X
424 ; SI-CHECK-LABEL: {{^}}v16i32_arg:
425 ; SI-CHECK: s_load_dwordx16 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x19
426 define void @v16i32_arg(<16 x i32> addrspace(1)* nocapture %out, <16 x i32> %in) nounwind {
427 entry:
428   store <16 x i32> %in, <16 x i32> addrspace(1)* %out, align 4
429   ret void
430 }
431
432 ; EG-CHECK-LABEL: {{^}}v16f32_arg:
433 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Y
434 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].Z
435 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[6].W
436 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].X
437 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Y
438 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].Z
439 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[7].W
440 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].X
441 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Y
442 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].Z
443 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[8].W
444 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].X
445 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Y
446 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].Z
447 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[9].W
448 ; EG-CHECK-DAG: T{{[0-9]\.[XYZW]}}, KC0[10].X
449 ; SI-CHECK-LABEL: {{^}}v16f32_arg:
450 ; SI-CHECK: s_load_dwordx16 s{{\[[0-9]:[0-9]+\]}}, s[0:1], 0x19
451 define void @v16f32_arg(<16 x float> addrspace(1)* nocapture %out, <16 x float> %in) nounwind {
452 entry:
453   store <16 x float> %in, <16 x float> addrspace(1)* %out, align 4
454   ret void
455 }
456
457 ; FUNC-LABEL: {{^}}kernel_arg_i64:
458 ; SI: s_load_dwordx2
459 ; SI: s_load_dwordx2
460 ; SI: buffer_store_dwordx2
461 define void @kernel_arg_i64(i64 addrspace(1)* %out, i64 %a) nounwind {
462   store i64 %a, i64 addrspace(1)* %out, align 8
463   ret void
464 }
465
466 ; XFUNC-LABEL: {{^}}kernel_arg_v1i64:
467 ; XSI: s_load_dwordx2
468 ; XSI: s_load_dwordx2
469 ; XSI: buffer_store_dwordx2
470 ; define void @kernel_arg_v1i64(<1 x i64> addrspace(1)* %out, <1 x i64> %a) nounwind {
471 ;   store <1 x i64> %a, <1 x i64> addrspace(1)* %out, align 8
472 ;   ret void
473 ; }