blob: 052ad5b9c15ba1f6091ed1f736e65ad06bab3a41 [file] [log] [blame]
Yaxun Liua711cc72016-07-16 05:09:21 +00001; RUN: llc -mtriple=amdgcn--amdhsa < %s | FileCheck %s
2
3%struct.A = type { i8, float }
4%opencl.image1d_t = type opaque
5%opencl.image2d_t = type opaque
6%opencl.image3d_t = type opaque
7%opencl.queue_t = type opaque
8%opencl.pipe_t = type opaque
9%struct.B = type { i32 addrspace(1)*}
10%opencl.clk_event_t = type opaque
11
12; CHECK: .section .AMDGPU.runtime_metadata
13; CHECK-NEXT: .byte 1
14; CHECK-NEXT: .short 256
15; CHECK-NEXT: .byte 2
16; CHECK-NEXT: .byte 0
17; CHECK-NEXT: .byte 3
18; CHECK-NEXT: .short 200
19
20; CHECK-LABEL:{{^}}test_char:
21; CHECK: .section .AMDGPU.runtime_metadata
22; CHECK-NEXT: .byte 4
23; CHECK-NEXT: .byte 6
24; CHECK-NEXT: .long 9
25; CHECK-NEXT: .ascii "test_char"
26; CHECK-NEXT: .byte 7
27; CHECK-NEXT: .byte 9
28; CHECK-NEXT: .long 1
29; CHECK-NEXT: .byte 10
30; CHECK-NEXT: .long 1
31; CHECK-NEXT: .byte 11
32; CHECK-NEXT: .long 4
33; CHECK-NEXT: .ascii "char"
34; CHECK-NEXT: .byte 13
35; CHECK-NEXT: .byte 0
36; CHECK-NEXT: .byte 14
37; CHECK-NEXT: .short 1
38; CHECK-NEXT: .byte 16
39; CHECK-NEXT: .byte 0
40; CHECK-NEXT: .byte 8
41; CHECK-NEXT: .byte 5
42
43define amdgpu_kernel void @test_char(i8 %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !9 !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
44 ret void
45}
46
47; CHECK-LABEL:{{^}}test_ushort2:
48; CHECK: .section .AMDGPU.runtime_metadata
49; CHECK-NEXT: .byte 4
50; CHECK-NEXT: .byte 6
51; CHECK-NEXT: .long 12
52; CHECK-NEXT: .ascii "test_ushort2"
53; CHECK-NEXT: .byte 7
54; CHECK-NEXT: .byte 9
55; CHECK-NEXT: .long 4
56; CHECK-NEXT: .byte 10
57; CHECK-NEXT: .long 4
58; CHECK-NEXT: .byte 11
59; CHECK-NEXT: .long 7
60; CHECK-NEXT: .ascii "ushort2"
61; CHECK-NEXT: .byte 13
62; CHECK-NEXT: .byte 0
63; CHECK-NEXT: .byte 14
64; CHECK-NEXT: .short 4
65; CHECK-NEXT: .byte 16
66; CHECK-NEXT: .byte 0
67; CHECK-NEXT: .byte 8
68; CHECK-NEXT: .byte 5
69
70define amdgpu_kernel void @test_ushort2(<2 x i16> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !10 !kernel_arg_base_type !10 !kernel_arg_type_qual !4 {
71 ret void
72}
73
74; CHECK-LABEL:{{^}}test_int3:
75; CHECK: .section .AMDGPU.runtime_metadata
76; CHECK-NEXT: .byte 4
77; CHECK-NEXT: .byte 6
78; CHECK-NEXT: .long 9
79; CHECK-NEXT: .ascii "test_int3"
80; CHECK-NEXT: .byte 7
81; CHECK-NEXT: .byte 9
82; CHECK-NEXT: .long 16
83; CHECK-NEXT: .byte 10
84; CHECK-NEXT: .long 16
85; CHECK-NEXT: .byte 11
86; CHECK-NEXT: .long 4
87; CHECK-NEXT: .ascii "int3"
88; CHECK-NEXT: .byte 13
89; CHECK-NEXT: .byte 0
90; CHECK-NEXT: .byte 14
91; CHECK-NEXT: .short 6
92; CHECK-NEXT: .byte 16
93; CHECK-NEXT: .byte 0
94; CHECK-NEXT: .byte 8
95; CHECK-NEXT: .byte 5
96
97define amdgpu_kernel void @test_int3(<3 x i32> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !11 !kernel_arg_base_type !11 !kernel_arg_type_qual !4 {
98 ret void
99}
100
101; CHECK-LABEL:{{^}}test_ulong4:
102; CHECK: .section .AMDGPU.runtime_metadata
103; CHECK-NEXT: .byte 4
104; CHECK-NEXT: .byte 6
105; CHECK-NEXT: .long 11
106; CHECK-NEXT: .ascii "test_ulong4"
107; CHECK-NEXT: .byte 7
108; CHECK-NEXT: .byte 9
109; CHECK-NEXT: .long 32
110; CHECK-NEXT: .byte 10
111; CHECK-NEXT: .long 32
112; CHECK-NEXT: .byte 11
113; CHECK-NEXT: .long 6
114; CHECK-NEXT: .ascii "ulong4"
115; CHECK-NEXT: .byte 13
116; CHECK-NEXT: .byte 0
117; CHECK-NEXT: .byte 14
118; CHECK-NEXT: .short 10
119; CHECK-NEXT: .byte 16
120; CHECK-NEXT: .byte 0
121; CHECK-NEXT: .byte 8
122; CHECK-NEXT: .byte 5
123
124define amdgpu_kernel void @test_ulong4(<4 x i64> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !12 !kernel_arg_base_type !12 !kernel_arg_type_qual !4 {
125 ret void
126}
127
128; CHECK-LABEL:{{^}}test_half8:
129; CHECK: .section .AMDGPU.runtime_metadata
130; CHECK-NEXT: .byte 4
131; CHECK-NEXT: .byte 6
132; CHECK-NEXT: .long 10
133; CHECK-NEXT: .ascii "test_half8"
134; CHECK-NEXT: .byte 7
135; CHECK-NEXT: .byte 9
136; CHECK-NEXT: .long 16
137; CHECK-NEXT: .byte 10
138; CHECK-NEXT: .long 16
139; CHECK-NEXT: .byte 11
140; CHECK-NEXT: .long 5
141; CHECK-NEXT: .ascii "half8"
142; CHECK-NEXT: .byte 13
143; CHECK-NEXT: .byte 0
144; CHECK-NEXT: .byte 14
145; CHECK-NEXT: .short 5
146; CHECK-NEXT: .byte 16
147; CHECK-NEXT: .byte 0
148; CHECK-NEXT: .byte 8
149; CHECK-NEXT: .byte 5
150
151define amdgpu_kernel void @test_half8(<8 x half> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !13 !kernel_arg_base_type !13 !kernel_arg_type_qual !4 {
152 ret void
153}
154
155; CHECK-LABEL:{{^}}test_float16:
156; CHECK: .section .AMDGPU.runtime_metadata
157; CHECK-NEXT: .byte 4
158; CHECK-NEXT: .byte 6
159; CHECK-NEXT: .long 12
160; CHECK-NEXT: .ascii "test_float16"
161; CHECK-NEXT: .byte 7
162; CHECK-NEXT: .byte 9
163; CHECK-NEXT: .long 64
164; CHECK-NEXT: .byte 10
165; CHECK-NEXT: .long 64
166; CHECK-NEXT: .byte 11
167; CHECK-NEXT: .long 7
168; CHECK-NEXT: .ascii "float16"
169; CHECK-NEXT: .byte 13
170; CHECK-NEXT: .byte 0
171; CHECK-NEXT: .byte 14
172; CHECK-NEXT: .short 8
173; CHECK-NEXT: .byte 16
174; CHECK-NEXT: .byte 0
175; CHECK-NEXT: .byte 8
176; CHECK-NEXT: .byte 5
177
178define amdgpu_kernel void @test_float16(<16 x float> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !14 !kernel_arg_base_type !14 !kernel_arg_type_qual !4 {
179 ret void
180}
181
182; CHECK-LABEL:{{^}}test_double16:
183; CHECK: .section .AMDGPU.runtime_metadata
184; CHECK-NEXT: .byte 4
185; CHECK-NEXT: .byte 6
186; CHECK-NEXT: .long 13
187; CHECK-NEXT: .ascii "test_double16"
188; CHECK-NEXT: .byte 7
189; CHECK-NEXT: .byte 9
190; CHECK-NEXT: .long 128
191; CHECK-NEXT: .byte 10
192; CHECK-NEXT: .long 128
193; CHECK-NEXT: .byte 11
194; CHECK-NEXT: .long 8
195; CHECK-NEXT: .ascii "double16"
196; CHECK-NEXT: .byte 13
197; CHECK-NEXT: .byte 0
198; CHECK-NEXT: .byte 14
199; CHECK-NEXT: .short 11
200; CHECK-NEXT: .byte 16
201; CHECK-NEXT: .byte 0
202; CHECK-NEXT: .byte 8
203; CHECK-NEXT: .byte 5
204
205define amdgpu_kernel void @test_double16(<16 x double> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !15 !kernel_arg_base_type !15 !kernel_arg_type_qual !4 {
206 ret void
207}
208
209; CHECK-LABEL:{{^}}test_pointer:
210; CHECK: .section .AMDGPU.runtime_metadata
211; CHECK-NEXT: .byte 4
212; CHECK-NEXT: .byte 6
213; CHECK-NEXT: .long 12
214; CHECK-NEXT: .ascii "test_pointer"
215; CHECK-NEXT: .byte 7
216; CHECK-NEXT: .byte 9
217; CHECK-NEXT: .long 8
218; CHECK-NEXT: .byte 10
219; CHECK-NEXT: .long 8
220; CHECK-NEXT: .byte 11
221; CHECK-NEXT: .long 5
222; CHECK-NEXT: .ascii "int *"
223; CHECK-NEXT: .byte 13
224; CHECK-NEXT: .byte 1
225; CHECK-NEXT: .byte 14
226; CHECK-NEXT: .short 6
227; CHECK-NEXT: .byte 16
228; CHECK-NEXT: .byte 0
229; CHECK-NEXT: .byte 15
230; CHECK-NEXT: .byte 1
231; CHECK-NEXT: .byte 8
232; CHECK-NEXT: .byte 5
233
234define amdgpu_kernel void @test_pointer(i32 addrspace(1)* %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !16 !kernel_arg_base_type !16 !kernel_arg_type_qual !4 {
235 ret void
236}
237
238; CHECK-LABEL:{{^}}test_image:
239; CHECK: .section .AMDGPU.runtime_metadata
240; CHECK-NEXT: .byte 4
241; CHECK-NEXT: .byte 6
242; CHECK-NEXT: .long 10
243; CHECK-NEXT: .ascii "test_image"
244; CHECK-NEXT: .byte 7
245; CHECK-NEXT: .byte 9
246; CHECK-NEXT: .long 8
247; CHECK-NEXT: .byte 10
248; CHECK-NEXT: .long 8
249; CHECK-NEXT: .byte 11
250; CHECK-NEXT: .long 9
251; CHECK-NEXT: .ascii "image2d_t"
252; CHECK-NEXT: .byte 13
253; CHECK-NEXT: .byte 2
254; CHECK-NEXT: .byte 14
255; CHECK-NEXT: .short 0
256; CHECK-NEXT: .byte 16
257; CHECK-NEXT: .byte 0
258; CHECK-NEXT: .byte 15
259; CHECK-NEXT: .byte 1
260; CHECK-NEXT: .byte 8
261; CHECK-NEXT: .byte 5
262
263define amdgpu_kernel void @test_image(%opencl.image2d_t addrspace(1)* %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !17 !kernel_arg_base_type !17 !kernel_arg_type_qual !4 {
264 ret void
265}
266
267; CHECK-LABEL:{{^}}test_sampler:
268; CHECK: .section .AMDGPU.runtime_metadata
269; CHECK-NEXT: .byte 4
270; CHECK-NEXT: .byte 6
271; CHECK-NEXT: .long 12
272; CHECK-NEXT: .ascii "test_sampler"
273; CHECK-NEXT: .byte 7
274; CHECK-NEXT: .byte 9
275; CHECK-NEXT: .long 4
276; CHECK-NEXT: .byte 10
277; CHECK-NEXT: .long 4
278; CHECK-NEXT: .byte 11
279; CHECK-NEXT: .long 9
280; CHECK-NEXT: .ascii "sampler_t"
281; CHECK-NEXT: .byte 13
282; CHECK-NEXT: .byte 3
283; CHECK-NEXT: .byte 14
284; CHECK-NEXT: .short 6
285; CHECK-NEXT: .byte 16
286; CHECK-NEXT: .byte 0
287; CHECK-NEXT: .byte 8
288; CHECK-NEXT: .byte 5
289
290define amdgpu_kernel void @test_sampler(i32 %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !18 !kernel_arg_base_type !18 !kernel_arg_type_qual !4 {
291 ret void
292}
293
294; CHECK-LABEL:{{^}}test_queue:
295; CHECK: .section .AMDGPU.runtime_metadata
296; CHECK-NEXT: .byte 4
297; CHECK-NEXT: .byte 6
298; CHECK-NEXT: .long 10
299; CHECK-NEXT: .ascii "test_queue"
300; CHECK-NEXT: .byte 7
301; CHECK-NEXT: .byte 9
302; CHECK-NEXT: .long 8
303; CHECK-NEXT: .byte 10
304; CHECK-NEXT: .long 8
305; CHECK-NEXT: .byte 11
306; CHECK-NEXT: .long 7
307; CHECK-NEXT: .ascii "queue_t"
308; CHECK-NEXT: .byte 13
309; CHECK-NEXT: .byte 4
310; CHECK-NEXT: .byte 14
311; CHECK-NEXT: .short 0
312; CHECK-NEXT: .byte 16
313; CHECK-NEXT: .byte 0
314; CHECK-NEXT: .byte 15
315; CHECK-NEXT: .byte 1
316; CHECK-NEXT: .byte 8
317; CHECK-NEXT: .byte 5
318
319define amdgpu_kernel void @test_queue(%opencl.queue_t addrspace(1)* %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !19 !kernel_arg_base_type !19 !kernel_arg_type_qual !4 {
320 ret void
321}
322
323; CHECK-LABEL:{{^}}test_struct:
324; CHECK: .section .AMDGPU.runtime_metadata
325; CHECK-NEXT: .byte 4
326; CHECK-NEXT: .byte 6
327; CHECK-NEXT: .long 11
328; CHECK-NEXT: .ascii "test_struct"
329; CHECK-NEXT: .byte 7
330; CHECK-NEXT: .byte 9
331; CHECK-NEXT: .long 4
332; CHECK-NEXT: .byte 10
333; CHECK-NEXT: .long 4
334; CHECK-NEXT: .byte 11
335; CHECK-NEXT: .long 8
336; CHECK-NEXT: .ascii "struct A"
337; CHECK-NEXT: .byte 13
338; CHECK-NEXT: .byte 1
339; CHECK-NEXT: .byte 14
340; CHECK-NEXT: .short 0
341; CHECK-NEXT: .byte 16
342; CHECK-NEXT: .byte 0
343; CHECK-NEXT: .byte 15
344; CHECK-NEXT: .byte 0
345; CHECK-NEXT: .byte 8
346; CHECK-NEXT: .byte 5
347
348define amdgpu_kernel void @test_struct(%struct.A* byval %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20 !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
349 ret void
350}
351
352; CHECK-LABEL:{{^}}test_i128:
353; CHECK: .section .AMDGPU.runtime_metadata
354; CHECK-NEXT: .byte 4
355; CHECK-NEXT: .byte 6
356; CHECK-NEXT: .long 9
357; CHECK-NEXT: .ascii "test_i128"
358; CHECK-NEXT: .byte 7
359; CHECK-NEXT: .byte 9
360; CHECK-NEXT: .long 16
361; CHECK-NEXT: .byte 10
362; CHECK-NEXT: .long 8
363; CHECK-NEXT: .byte 11
364; CHECK-NEXT: .long 4
365; CHECK-NEXT: .ascii "i128"
366; CHECK-NEXT: .byte 13
367; CHECK-NEXT: .byte 0
368; CHECK-NEXT: .byte 14
369; CHECK-NEXT: .short 0
370; CHECK-NEXT: .byte 16
371; CHECK-NEXT: .byte 0
372; CHECK-NEXT: .byte 8
373; CHECK-NEXT: .byte 5
374
375define amdgpu_kernel void @test_i128(i128 %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !21 !kernel_arg_base_type !21 !kernel_arg_type_qual !4 {
376 ret void
377}
378
379; CHECK-LABEL:{{^}}test_multi_arg:
380; CHECK: .section .AMDGPU.runtime_metadata
381; CHECK-NEXT: .byte 4
382; CHECK-NEXT: .byte 6
383; CHECK-NEXT: .long 14
384; CHECK-NEXT: .ascii "test_multi_arg"
385; CHECK-NEXT: .byte 7
386; CHECK-NEXT: .byte 9
387; CHECK-NEXT: .long 4
388; CHECK-NEXT: .byte 10
389; CHECK-NEXT: .long 4
390; CHECK-NEXT: .byte 11
391; CHECK-NEXT: .long 3
392; CHECK-NEXT: .ascii "int"
393; CHECK-NEXT: .byte 13
394; CHECK-NEXT: .byte 0
395; CHECK-NEXT: .byte 14
396; CHECK-NEXT: .short 6
397; CHECK-NEXT: .byte 16
398; CHECK-NEXT: .byte 0
399; CHECK-NEXT: .byte 8
400; CHECK-NEXT: .byte 7
401; CHECK-NEXT: .byte 9
402; CHECK-NEXT: .long 4
403; CHECK-NEXT: .byte 10
404; CHECK-NEXT: .long 4
405; CHECK-NEXT: .byte 11
406; CHECK-NEXT: .long 6
407; CHECK-NEXT: .ascii "short2"
408; CHECK-NEXT: .byte 13
409; CHECK-NEXT: .byte 0
410; CHECK-NEXT: .byte 14
411; CHECK-NEXT: .short 3
412; CHECK-NEXT: .byte 16
413; CHECK-NEXT: .byte 0
414; CHECK-NEXT: .byte 8
415; CHECK-NEXT: .byte 7
416; CHECK-NEXT: .byte 9
417; CHECK-NEXT: .long 4
418; CHECK-NEXT: .byte 10
419; CHECK-NEXT: .long 4
420; CHECK-NEXT: .byte 11
421; CHECK-NEXT: .long 5
422; CHECK-NEXT: .ascii "char3"
423; CHECK-NEXT: .byte 13
424; CHECK-NEXT: .byte 0
425; CHECK-NEXT: .byte 14
426; CHECK-NEXT: .short 1
427; CHECK-NEXT: .byte 16
428; CHECK-NEXT: .byte 0
429; CHECK-NEXT: .byte 8
430; CHECK-NEXT: .byte 5
431
432define amdgpu_kernel void @test_multi_arg(i32 %a, <2 x i16> %b, <3 x i8> %c) !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !24 !kernel_arg_base_type !24 !kernel_arg_type_qual !25 {
433 ret void
434}
435
436; CHECK-LABEL:{{^}}test_addr_space:
437; CHECK: .section .AMDGPU.runtime_metadata
438; CHECK-NEXT: .byte 4
439; CHECK-NEXT: .byte 6
440; CHECK-NEXT: .long 15
441; CHECK-NEXT: .ascii "test_addr_space"
442; CHECK-NEXT: .byte 7
443; CHECK-NEXT: .byte 9
444; CHECK-NEXT: .long 8
445; CHECK-NEXT: .byte 10
446; CHECK-NEXT: .long 8
447; CHECK-NEXT: .byte 11
448; CHECK-NEXT: .long 5
449; CHECK-NEXT: .ascii "int *"
450; CHECK-NEXT: .byte 13
451; CHECK-NEXT: .byte 1
452; CHECK-NEXT: .byte 14
453; CHECK-NEXT: .short 6
454; CHECK-NEXT: .byte 16
455; CHECK-NEXT: .byte 0
456; CHECK-NEXT: .byte 15
457; CHECK-NEXT: .byte 1
458; CHECK-NEXT: .byte 8
459; CHECK-NEXT: .byte 7
460; CHECK-NEXT: .byte 9
461; CHECK-NEXT: .long 8
462; CHECK-NEXT: .byte 10
463; CHECK-NEXT: .long 8
464; CHECK-NEXT: .byte 11
465; CHECK-NEXT: .long 5
466; CHECK-NEXT: .ascii "int *"
467; CHECK-NEXT: .byte 13
468; CHECK-NEXT: .byte 1
469; CHECK-NEXT: .byte 14
470; CHECK-NEXT: .short 6
471; CHECK-NEXT: .byte 16
472; CHECK-NEXT: .byte 0
473; CHECK-NEXT: .byte 15
474; CHECK-NEXT: .byte 2
475; CHECK-NEXT: .byte 8
476; CHECK-NEXT: .byte 7
477; CHECK-NEXT: .byte 9
478; CHECK-NEXT: .long 4
479; CHECK-NEXT: .byte 10
480; CHECK-NEXT: .long 4
481; CHECK-NEXT: .byte 11
482; CHECK-NEXT: .long 5
483; CHECK-NEXT: .ascii "int *"
484; CHECK-NEXT: .byte 13
485; CHECK-NEXT: .byte 1
486; CHECK-NEXT: .byte 14
487; CHECK-NEXT: .short 6
488; CHECK-NEXT: .byte 16
489; CHECK-NEXT: .byte 0
490; CHECK-NEXT: .byte 15
491; CHECK-NEXT: .byte 3
492; CHECK-NEXT: .byte 8
493; CHECK-NEXT: .byte 5
494
495define amdgpu_kernel void @test_addr_space(i32 addrspace(1)* %g, i32 addrspace(2)* %c, i32 addrspace(3)* %l) !kernel_arg_addr_space !50 !kernel_arg_access_qual !23 !kernel_arg_type !51 !kernel_arg_base_type !51 !kernel_arg_type_qual !25 {
496 ret void
497}
498
499; CHECK-LABEL:{{^}}test_type_qual:
500; CHECK: .section .AMDGPU.runtime_metadata
501; CHECK-NEXT: .byte 4
502; CHECK-NEXT: .byte 6
503; CHECK-NEXT: .long 14
504; CHECK-NEXT: .ascii "test_type_qual"
505; CHECK-NEXT: .byte 7
506; CHECK-NEXT: .byte 9
507; CHECK-NEXT: .long 8
508; CHECK-NEXT: .byte 10
509; CHECK-NEXT: .long 8
510; CHECK-NEXT: .byte 11
511; CHECK-NEXT: .long 5
512; CHECK-NEXT: .ascii "int *"
513; CHECK-NEXT: .byte 19
514; CHECK-NEXT: .byte 13
515; CHECK-NEXT: .byte 1
516; CHECK-NEXT: .byte 14
517; CHECK-NEXT: .short 6
518; CHECK-NEXT: .byte 16
519; CHECK-NEXT: .byte 0
520; CHECK-NEXT: .byte 15
521; CHECK-NEXT: .byte 1
522; CHECK-NEXT: .byte 8
523; CHECK-NEXT: .byte 7
524; CHECK-NEXT: .byte 9
525; CHECK-NEXT: .long 8
526; CHECK-NEXT: .byte 10
527; CHECK-NEXT: .long 8
528; CHECK-NEXT: .byte 11
529; CHECK-NEXT: .long 5
530; CHECK-NEXT: .ascii "int *"
531; CHECK-NEXT: .byte 17
532; CHECK-NEXT: .byte 18
533; CHECK-NEXT: .byte 13
534; CHECK-NEXT: .byte 1
535; CHECK-NEXT: .byte 14
536; CHECK-NEXT: .short 6
537; CHECK-NEXT: .byte 16
538; CHECK-NEXT: .byte 0
539; CHECK-NEXT: .byte 15
540; CHECK-NEXT: .byte 1
541; CHECK-NEXT: .byte 8
542; CHECK-NEXT: .byte 7
543; CHECK-NEXT: .byte 9
544; CHECK-NEXT: .long 8
545; CHECK-NEXT: .byte 10
546; CHECK-NEXT: .long 8
547; CHECK-NEXT: .byte 11
548; CHECK-NEXT: .long 5
549; CHECK-NEXT: .ascii "int *"
550; CHECK-NEXT: .byte 20
551; CHECK-NEXT: .byte 13
552; CHECK-NEXT: .byte 1
553; CHECK-NEXT: .byte 14
554; CHECK-NEXT: .short 0
555; CHECK-NEXT: .byte 16
556; CHECK-NEXT: .byte 0
557; CHECK-NEXT: .byte 15
558; CHECK-NEXT: .byte 1
559; CHECK-NEXT: .byte 8
560; CHECK-NEXT: .byte 5
561
562define amdgpu_kernel void @test_type_qual(i32 addrspace(1)* %a, i32 addrspace(1)* %b, %opencl.pipe_t addrspace(1)* %c) !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !51 !kernel_arg_base_type !51 !kernel_arg_type_qual !70 {
563 ret void
564}
565
566; CHECK-LABEL:{{^}}test_access_qual:
567; CHECK: .section .AMDGPU.runtime_metadata
568; CHECK-NEXT: .byte 4
569; CHECK-NEXT: .byte 6
570; CHECK-NEXT: .long 16
571; CHECK-NEXT: .ascii "test_access_qual"
572; CHECK-NEXT: .byte 7
573; CHECK-NEXT: .byte 9
574; CHECK-NEXT: .long 8
575; CHECK-NEXT: .byte 10
576; CHECK-NEXT: .long 8
577; CHECK-NEXT: .byte 11
578; CHECK-NEXT: .long 9
579; CHECK-NEXT: .ascii "image1d_t"
580; CHECK-NEXT: .byte 13
581; CHECK-NEXT: .byte 2
582; CHECK-NEXT: .byte 14
583; CHECK-NEXT: .short 0
584; CHECK-NEXT: .byte 16
585; CHECK-NEXT: .byte 1
586; CHECK-NEXT: .byte 15
587; CHECK-NEXT: .byte 1
588; CHECK-NEXT: .byte 8
589; CHECK-NEXT: .byte 7
590; CHECK-NEXT: .byte 9
591; CHECK-NEXT: .long 8
592; CHECK-NEXT: .byte 10
593; CHECK-NEXT: .long 8
594; CHECK-NEXT: .byte 11
595; CHECK-NEXT: .long 9
596; CHECK-NEXT: .ascii "image2d_t"
597; CHECK-NEXT: .byte 13
598; CHECK-NEXT: .byte 2
599; CHECK-NEXT: .byte 14
600; CHECK-NEXT: .short 0
601; CHECK-NEXT: .byte 16
602; CHECK-NEXT: .byte 2
603; CHECK-NEXT: .byte 15
604; CHECK-NEXT: .byte 1
605; CHECK-NEXT: .byte 8
606; CHECK-NEXT: .byte 7
607; CHECK-NEXT: .byte 9
608; CHECK-NEXT: .long 8
609; CHECK-NEXT: .byte 10
610; CHECK-NEXT: .long 8
611; CHECK-NEXT: .byte 11
612; CHECK-NEXT: .long 9
613; CHECK-NEXT: .ascii "image3d_t"
614; CHECK-NEXT: .byte 13
615; CHECK-NEXT: .byte 2
616; CHECK-NEXT: .byte 14
617; CHECK-NEXT: .short 0
618; CHECK-NEXT: .byte 16
619; CHECK-NEXT: .byte 3
620; CHECK-NEXT: .byte 15
621; CHECK-NEXT: .byte 1
622; CHECK-NEXT: .byte 8
623; CHECK-NEXT: .byte 5
624
625define amdgpu_kernel void @test_access_qual(%opencl.image1d_t addrspace(1)* %ro, %opencl.image2d_t addrspace(1)* %wo, %opencl.image3d_t addrspace(1)* %rw) !kernel_arg_addr_space !60 !kernel_arg_access_qual !61 !kernel_arg_type !62 !kernel_arg_base_type !62 !kernel_arg_type_qual !25 {
626 ret void
627}
628
629; CHECK-LABEL:{{^}}test_reqd_wgs_vec_type_hint:
630; CHECK: .section .AMDGPU.runtime_metadata
631; CHECK-NEXT: .byte 4
632; CHECK-NEXT: .byte 6
633; CHECK-NEXT: .long 27
634; CHECK-NEXT: .ascii "test_reqd_wgs_vec_type_hint"
635; CHECK-NEXT: .byte 7
636; CHECK-NEXT: .byte 9
637; CHECK-NEXT: .long 4
638; CHECK-NEXT: .byte 10
639; CHECK-NEXT: .long 4
640; CHECK-NEXT: .byte 11
641; CHECK-NEXT: .long 3
642; CHECK-NEXT: .ascii "int"
643; CHECK-NEXT: .byte 13
644; CHECK-NEXT: .byte 0
645; CHECK-NEXT: .byte 14
646; CHECK-NEXT: .short 6
647; CHECK-NEXT: .byte 16
648; CHECK-NEXT: .byte 0
649; CHECK-NEXT: .byte 8
650; CHECK-NEXT: .byte 21
651; CHECK-NEXT: .long 1
652; CHECK-NEXT: .long 2
653; CHECK-NEXT: .long 4
654; CHECK-NEXT: .byte 23
655; CHECK-NEXT: .long 3
656; CHECK-NEXT: .ascii "int"
657; CHECK-NEXT: .byte 5
658
659define amdgpu_kernel void @test_reqd_wgs_vec_type_hint(i32 %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !5 !reqd_work_group_size !6 {
660 ret void
661}
662
663; CHECK-LABEL:{{^}}test_wgs_hint_vec_type_hint:
664; CHECK: .section .AMDGPU.runtime_metadata
665; CHECK-NEXT: .byte 4
666; CHECK-NEXT: .byte 6
667; CHECK-NEXT: .long 27
668; CHECK-NEXT: .ascii "test_wgs_hint_vec_type_hint"
669; CHECK-NEXT: .byte 7
670; CHECK-NEXT: .byte 9
671; CHECK-NEXT: .long 4
672; CHECK-NEXT: .byte 10
673; CHECK-NEXT: .long 4
674; CHECK-NEXT: .byte 11
675; CHECK-NEXT: .long 3
676; CHECK-NEXT: .ascii "int"
677; CHECK-NEXT: .byte 13
678; CHECK-NEXT: .byte 0
679; CHECK-NEXT: .byte 14
680; CHECK-NEXT: .short 6
681; CHECK-NEXT: .byte 16
682; CHECK-NEXT: .byte 0
683; CHECK-NEXT: .byte 8
684; CHECK-NEXT: .byte 22
685; CHECK-NEXT: .long 8
686; CHECK-NEXT: .long 16
687; CHECK-NEXT: .long 32
688; CHECK-NEXT: .byte 23
689; CHECK-NEXT: .long 5
690; CHECK-NEXT: .ascii "uint4"
691; CHECK-NEXT: .byte 5
692
693define amdgpu_kernel void @test_wgs_hint_vec_type_hint(i32 %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !7 !work_group_size_hint !8 {
694 ret void
695}
696
697; CHECK-LABEL:{{^}}test_arg_ptr_to_ptr:
698; CHECK: .section .AMDGPU.runtime_metadata
699; CHECK-NEXT: .byte 4
700; CHECK-NEXT: .byte 6
701; CHECK-NEXT: .long 19
702; CHECK-NEXT: .ascii "test_arg_ptr_to_ptr"
703; CHECK-NEXT: .byte 7
704; CHECK-NEXT: .byte 9
705; CHECK-NEXT: .long 8
706; CHECK-NEXT: .byte 10
707; CHECK-NEXT: .long 8
708; CHECK-NEXT: .byte 11
709; CHECK-NEXT: .long 6
710; CHECK-NEXT: .ascii "int **"
711; CHECK-NEXT: .byte 13
712; CHECK-NEXT: .byte 1
713; CHECK-NEXT: .byte 14
714; CHECK-NEXT: .short 6
715; CHECK-NEXT: .byte 16
716; CHECK-NEXT: .byte 0
717; CHECK-NEXT: .byte 15
718; CHECK-NEXT: .byte 1
719; CHECK-NEXT: .byte 8
720; CHECK-NEXT: .byte 5
721
722define amdgpu_kernel void @test_arg_ptr_to_ptr(i32 * addrspace(1)* %a) !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !80 !kernel_arg_base_type !80 !kernel_arg_type_qual !4 {
723 ret void
724}
725
726; CHECK-LABEL:{{^}}test_arg_struct_contains_ptr:
727; CHECK: .section .AMDGPU.runtime_metadata
728; CHECK-NEXT: .byte 4
729; CHECK-NEXT: .byte 6
730; CHECK-NEXT: .long 28
731; CHECK-NEXT: .ascii "test_arg_struct_contains_ptr"
732; CHECK-NEXT: .byte 7
733; CHECK-NEXT: .byte 9
734; CHECK-NEXT: .long 4
735; CHECK-NEXT: .byte 10
736; CHECK-NEXT: .long 4
737; CHECK-NEXT: .byte 11
738; CHECK-NEXT: .long 8
739; CHECK-NEXT: .ascii "struct B"
740; CHECK-NEXT: .byte 13
741; CHECK-NEXT: .byte 1
742; CHECK-NEXT: .byte 14
743; CHECK-NEXT: .short 0
744; CHECK-NEXT: .byte 16
745; CHECK-NEXT: .byte 0
746; CHECK-NEXT: .byte 15
747; CHECK-NEXT: .byte 0
748; CHECK-NEXT: .byte 8
749; CHECK-NEXT: .byte 5
750
751define amdgpu_kernel void @test_arg_struct_contains_ptr(%struct.B * byval %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !82 !kernel_arg_base_type !82 !kernel_arg_type_qual !4 {
752 ret void
753}
754
755; CHECK-LABEL:{{^}}test_arg_vector_of_ptr:
756; CHECK: .section .AMDGPU.runtime_metadata
757; CHECK-NEXT: .byte 4
758; CHECK-NEXT: .byte 6
759; CHECK-NEXT: .long 22
760; CHECK-NEXT: .ascii "test_arg_vector_of_ptr"
761; CHECK-NEXT: .byte 7
762; CHECK-NEXT: .byte 9
763; CHECK-NEXT: .long 16
764; CHECK-NEXT: .byte 10
765; CHECK-NEXT: .long 16
766; CHECK-NEXT: .byte 11
767; CHECK-NEXT: .long 47
768; CHECK-NEXT: .ascii "global int* __attribute__((ext_vector_type(2)))"
769; CHECK-NEXT: .byte 13
770; CHECK-NEXT: .byte 0
771; CHECK-NEXT: .byte 14
772; CHECK-NEXT: .short 6
773; CHECK-NEXT: .byte 16
774; CHECK-NEXT: .byte 0
775; CHECK-NEXT: .byte 8
776; CHECK-NEXT: .byte 5
777
778define amdgpu_kernel void @test_arg_vector_of_ptr(<2 x i32 addrspace(1)*> %a) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !83 !kernel_arg_base_type !83 !kernel_arg_type_qual !4 {
779 ret void
780}
781
782; CHECK-LABEL:{{^}}test_arg_unknown_builtin_type:
783; CHECK: .section .AMDGPU.runtime_metadata
784; CHECK-NEXT: .byte 4
785; CHECK-NEXT: .byte 6
786; CHECK-NEXT: .long 29
787; CHECK-NEXT: .ascii "test_arg_unknown_builtin_type"
788; CHECK-NEXT: .byte 7
789; CHECK-NEXT: .byte 9
790; CHECK-NEXT: .long 8
791; CHECK-NEXT: .byte 10
792; CHECK-NEXT: .long 8
793; CHECK-NEXT: .byte 11
794; CHECK-NEXT: .long 11
795; CHECK-NEXT: .ascii "clk_event_t"
796; CHECK-NEXT: .byte 13
797; CHECK-NEXT: .byte 1
798; CHECK-NEXT: .byte 14
799; CHECK-NEXT: .short 0
800; CHECK-NEXT: .byte 16
801; CHECK-NEXT: .byte 0
802; CHECK-NEXT: .byte 15
803; CHECK-NEXT: .byte 1
804; CHECK-NEXT: .byte 8
805; CHECK-NEXT: .byte 5
806
807define amdgpu_kernel void @test_arg_unknown_builtin_type(%opencl.clk_event_t addrspace(1)* %a) !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !84 !kernel_arg_base_type !84 !kernel_arg_type_qual !4 {
808 ret void
809}
810
811!1 = !{i32 0}
812!2 = !{!"none"}
813!3 = !{!"int"}
814!4 = !{!""}
815!5 = !{i32 undef, i32 1}
816!6 = !{i32 1, i32 2, i32 4}
817!7 = !{<4 x i32> undef, i32 0}
818!8 = !{i32 8, i32 16, i32 32}
819!9 = !{!"char"}
820!10 = !{!"ushort2"}
821!11 = !{!"int3"}
822!12 = !{!"ulong4"}
823!13 = !{!"half8"}
824!14 = !{!"float16"}
825!15 = !{!"double16"}
826!16 = !{!"int *"}
827!17 = !{!"image2d_t"}
828!18 = !{!"sampler_t"}
829!19 = !{!"queue_t"}
830!20 = !{!"struct A"}
831!21 = !{!"i128"}
832!22 = !{i32 0, i32 0, i32 0}
833!23 = !{!"none", !"none", !"none"}
834!24 = !{!"int", !"short2", !"char3"}
835!25 = !{!"", !"", !""}
836!50 = !{i32 1, i32 2, i32 3}
837!51 = !{!"int *", !"int *", !"int *"}
838!60 = !{i32 1, i32 1, i32 1}
839!61 = !{!"read_only", !"write_only", !"read_write"}
840!62 = !{!"image1d_t", !"image2d_t", !"image3d_t"}
841!70 = !{!"volatile", !"const restrict", !"pipe"}
842!80 = !{!"int **"}
843!81 = !{i32 1}
844!82 = !{!"struct B"}
845!83 = !{!"global int* __attribute__((ext_vector_type(2)))"}
846!84 = !{!"clk_event_t"}
847!opencl.ocl.version = !{!90}
848!90 = !{i32 2, i32 0}