1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx802 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK %s
4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 --amdhsa-code-object-version=2 -amdgpu-dump-hsa-metadata -amdgpu-verify-hsa-metadata -filetype=obj -o - < %s 2>&1 | FileCheck --check-prefix=PARSER %s
5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx802 --amdhsa-code-object-version=2 -amdgpu-dump-hsa-metadata -amdgpu-verify-hsa-metadata -filetype=obj -o - < %s 2>&1 | FileCheck --check-prefix=PARSER %s
6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=2 -amdgpu-dump-hsa-metadata -amdgpu-verify-hsa-metadata -filetype=obj -o - < %s 2>&1 | FileCheck --check-prefix=PARSER %s
7
8%struct.A = type { i8, float }
9%opencl.image1d_t = type opaque
10%opencl.image2d_t = type opaque
11%opencl.image3d_t = type opaque
12%opencl.queue_t = type opaque
13%opencl.pipe_t = type opaque
14%struct.B = type { i32 addrspace(1)*}
15%opencl.clk_event_t = type opaque
16
17@__test_block_invoke_kernel_runtime_handle = external addrspace(1) externally_initialized constant i8 addrspace(1)*
18
19; CHECK: ---
20; CHECK:  Version: [ 1, 0 ]
21; CHECK:  Printf:
22; CHECK:    - '1:1:4:%d\n'
23; CHECK:    - '2:1:8:%g\n'
24; CHECK:  Kernels:
25
26; CHECK:      - Name:            test_char
27; CHECK-NEXT:   SymbolName:      'test_char@kd'
28; CHECK-NEXT:   Language:        OpenCL C
29; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
30; CHECK-NEXT:   Args:
31; CHECK-NEXT:     - Name:          a
32; CHECK-NEXT:       TypeName:      char
33; CHECK-NEXT:       Size:          1
34; CHECK-NEXT:       Align:         1
35; CHECK-NEXT:       ValueKind:     ByValue
36; CHECK-NEXT:       AccQual:       Default
37; CHECK-NEXT:     - Size:          8
38; CHECK-NEXT:       Align:         8
39; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
40; CHECK-NEXT:     - Size:          8
41; CHECK-NEXT:       Align:         8
42; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
43; CHECK-NEXT:     - Size:          8
44; CHECK-NEXT:       Align:         8
45; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
46; CHECK-NEXT:     - Size:          8
47; CHECK-NEXT:       Align:         8
48; CHECK-NOT:        ValueKind:     HiddenHostcallBuffer
49; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
50; CHECK-NEXT:       AddrSpaceQual: Global
51; CHECK-NOT:        ValueKind:     HiddenDefaultQueue
52; CHECK-NOT:        ValueKind:     HiddenCompletionAction
53; CHECK:            ValueKind:     HiddenMultiGridSyncArg
54; CHECK-NEXT:       AddrSpaceQual: Global
55define amdgpu_kernel void @test_char(i8 %a) #0
56    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !9
57    !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
58  ret void
59}
60
61; CHECK:      - Name:            test_char_byref_constant
62; CHECK-NEXT:   SymbolName:      'test_char_byref_constant@kd'
63; CHECK-NEXT:   Language:        OpenCL C
64; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
65; CHECK-NEXT:   Args:
66; CHECK-NEXT:     - Name:          a
67; CHECK-NEXT:       TypeName:      char
68; CHECK-NEXT:       Size:          1
69; CHECK-NEXT:       Align:         1
70; CHECK-NEXT:       ValueKind:     ByValue
71; CHECK-NEXT:       AccQual:       Default
72; CHECK-NEXT:     - Size:          8
73; CHECK-NEXT:       Align:         8
74; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
75; CHECK-NEXT:     - Size:          8
76; CHECK-NEXT:       Align:         8
77; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
78; CHECK-NEXT:     - Size:          8
79; CHECK-NEXT:       Align:         8
80; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
81; CHECK-NEXT:     - Size:          8
82; CHECK-NEXT:       Align:         8
83; CHECK-NOT:        ValueKind:     HiddenHostcallBuffer
84; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
85; CHECK-NEXT:       AddrSpaceQual: Global
86; CHECK-NOT:        ValueKind:     HiddenDefaultQueue
87; CHECK-NOT:        ValueKind:     HiddenCompletionAction
88; CHECK:            ValueKind:     HiddenMultiGridSyncArg
89; CHECK-NEXT:       AddrSpaceQual: Global
90define amdgpu_kernel void @test_char_byref_constant(i8 addrspace(4)* byref(i8) %a) #0
91    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !9
92    !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
93  ret void
94}
95
96; CHECK:      - Name:            test_char_byref_constant_align512
97; CHECK-NEXT:   SymbolName:      'test_char_byref_constant_align512@kd'
98; CHECK-NEXT:   Language:        OpenCL C
99; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
100; CHECK-NEXT:   Args:
101; CHECK-NEXT:       TypeName:      char
102; CHECK-NEXT:       Size:          1
103; CHECK-NEXT:       Align:         1
104; CHECK-NEXT:       ValueKind:     ByValue
105; CHECK-NEXT:       AccQual:       Default
106; CHECK-NEXT:     - Name:          a
107; CHECK-NEXT:       TypeName:      char
108; CHECK-NEXT:       Size:          1
109; CHECK-NEXT:       Align:         512
110; CHECK-NEXT:       ValueKind:     ByValue
111; CHECK-NEXT:     - Size:          8
112; CHECK-NEXT:       Align:         8
113; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
114; CHECK-NEXT:     - Size:          8
115; CHECK-NEXT:       Align:         8
116; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
117; CHECK-NEXT:     - Size:          8
118; CHECK-NEXT:       Align:         8
119; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
120; CHECK-NEXT:     - Size:          8
121; CHECK-NEXT:       Align:         8
122; CHECK-NOT:        ValueKind:     HiddenHostcallBuffer
123; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
124; CHECK-NEXT:       AddrSpaceQual: Global
125; CHECK-NOT:        ValueKind:     HiddenDefaultQueue
126; CHECK-NOT:        ValueKind:     HiddenCompletionAction
127; CHECK:            ValueKind:     HiddenMultiGridSyncArg
128; CHECK-NEXT:       AddrSpaceQual: Global
129define amdgpu_kernel void @test_char_byref_constant_align512(i8, i8 addrspace(4)* byref(i8) align 512 %a) #0
130    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !111
131    !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
132  ret void
133}
134
135; CHECK:      - Name:            test_ushort2
136; CHECK-NEXT:   SymbolName:      'test_ushort2@kd'
137; CHECK-NEXT:   Language:        OpenCL C
138; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
139; CHECK-NEXT:   Args:
140; CHECK-NEXT:     - Name:          a
141; CHECK-NEXT:       TypeName:      ushort2
142; CHECK-NEXT:       Size:          4
143; CHECK-NEXT:       Align:         4
144; CHECK-NEXT:       ValueKind:     ByValue
145; CHECK-NEXT:       AccQual:       Default
146; CHECK-NEXT:     - Size:          8
147; CHECK-NEXT:       Align:         8
148; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
149; CHECK-NEXT:     - Size:          8
150; CHECK-NEXT:       Align:         8
151; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
152; CHECK-NEXT:     - Size:          8
153; CHECK-NEXT:       Align:         8
154; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
155; CHECK-NEXT:     - Size:          8
156; CHECK-NEXT:       Align:         8
157; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
158; CHECK-NEXT:       AddrSpaceQual: Global
159; CHECK-NEXT:     - Size:          8
160; CHECK-NEXT:       Align:         8
161; CHECK-NEXT:       ValueKind:     HiddenNone
162; CHECK-NEXT:       AddrSpaceQual: Global
163; CHECK-NEXT:     - Size:          8
164; CHECK-NEXT:       Align:         8
165; CHECK-NEXT:       ValueKind:     HiddenNone
166; CHECK-NEXT:       AddrSpaceQual: Global
167; CHECK-NEXT:     - Size:          8
168; CHECK-NEXT:       Align:         8
169; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
170; CHECK-NEXT:       AddrSpaceQual: Global
171define amdgpu_kernel void @test_ushort2(<2 x i16> %a) #0
172    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !10
173    !kernel_arg_base_type !10 !kernel_arg_type_qual !4 {
174  ret void
175}
176
177; CHECK:      - Name:            test_int3
178; CHECK-NEXT:   SymbolName:      'test_int3@kd'
179; CHECK-NEXT:   Language:        OpenCL C
180; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
181; CHECK-NEXT:   Args:
182; CHECK-NEXT:     - Name:          a
183; CHECK-NEXT:       TypeName:      int3
184; CHECK-NEXT:       Size:          16
185; CHECK-NEXT:       Align:         16
186; CHECK-NEXT:       ValueKind:     ByValue
187; CHECK-NEXT:       AccQual:       Default
188; CHECK-NEXT:     - Size:          8
189; CHECK-NEXT:       Align:         8
190; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
191; CHECK-NEXT:     - Size:          8
192; CHECK-NEXT:       Align:         8
193; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
194; CHECK-NEXT:     - Size:          8
195; CHECK-NEXT:       Align:         8
196; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
197; CHECK-NEXT:     - Size:          8
198; CHECK-NEXT:       Align:         8
199; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
200; CHECK-NEXT:       AddrSpaceQual: Global
201; CHECK-NEXT:     - Size:          8
202; CHECK-NEXT:       Align:         8
203; CHECK-NEXT:       ValueKind:     HiddenNone
204; CHECK-NEXT:       AddrSpaceQual: Global
205; CHECK-NEXT:     - Size:          8
206; CHECK-NEXT:       Align:         8
207; CHECK-NEXT:       ValueKind:     HiddenNone
208; CHECK-NEXT:       AddrSpaceQual: Global
209; CHECK-NEXT:     - Size:          8
210; CHECK-NEXT:       Align:         8
211; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
212; CHECK-NEXT:       AddrSpaceQual: Global
213define amdgpu_kernel void @test_int3(<3 x i32> %a) #0
214    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !11
215    !kernel_arg_base_type !11 !kernel_arg_type_qual !4 {
216  ret void
217}
218
219; CHECK:      - Name:            test_ulong4
220; CHECK-NEXT:   SymbolName:      'test_ulong4@kd'
221; CHECK-NEXT:   Language:        OpenCL C
222; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
223; CHECK-NEXT:   Args:
224; CHECK-NEXT:     - Name:          a
225; CHECK-NEXT:       TypeName:      ulong4
226; CHECK-NEXT:       Size:          32
227; CHECK-NEXT:       Align:         32
228; CHECK-NEXT:       ValueKind:     ByValue
229; CHECK-NEXT:       AccQual:       Default
230; CHECK-NEXT:     - Size:          8
231; CHECK-NEXT:       Align:         8
232; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
233; CHECK-NEXT:     - Size:          8
234; CHECK-NEXT:       Align:         8
235; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
236; CHECK-NEXT:     - Size:          8
237; CHECK-NEXT:       Align:         8
238; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
239; CHECK-NEXT:     - Size:          8
240; CHECK-NEXT:       Align:         8
241; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
242; CHECK-NEXT:       AddrSpaceQual: Global
243; CHECK-NEXT:     - Size:          8
244; CHECK-NEXT:       Align:         8
245; CHECK-NEXT:       ValueKind:     HiddenNone
246; CHECK-NEXT:       AddrSpaceQual: Global
247; CHECK-NEXT:     - Size:          8
248; CHECK-NEXT:       Align:         8
249; CHECK-NEXT:       ValueKind:     HiddenNone
250; CHECK-NEXT:       AddrSpaceQual: Global
251; CHECK-NEXT:     - Size:          8
252; CHECK-NEXT:       Align:         8
253; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
254; CHECK-NEXT:       AddrSpaceQual: Global
255define amdgpu_kernel void @test_ulong4(<4 x i64> %a) #0
256    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !12
257    !kernel_arg_base_type !12 !kernel_arg_type_qual !4 {
258  ret void
259}
260
261; CHECK:      - Name:            test_half8
262; CHECK-NEXT:   SymbolName:      'test_half8@kd'
263; CHECK-NEXT:   Language:        OpenCL C
264; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
265; CHECK-NEXT:   Args:
266; CHECK-NEXT:     - Name:          a
267; CHECK-NEXT:       TypeName:      half8
268; CHECK-NEXT:       Size:          16
269; CHECK-NEXT:       Align:         16
270; CHECK-NEXT:       ValueKind:     ByValue
271; CHECK-NEXT:       AccQual:       Default
272; CHECK-NEXT:     - Size:          8
273; CHECK-NEXT:       Align:         8
274; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
275; CHECK-NEXT:     - Size:          8
276; CHECK-NEXT:       Align:         8
277; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
278; CHECK-NEXT:     - Size:          8
279; CHECK-NEXT:       Align:         8
280; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
281; CHECK-NEXT:     - Size:          8
282; CHECK-NEXT:       Align:         8
283; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
284; CHECK-NEXT:       AddrSpaceQual: Global
285; CHECK-NEXT:     - Size:          8
286; CHECK-NEXT:       Align:         8
287; CHECK-NEXT:       ValueKind:     HiddenNone
288; CHECK-NEXT:       AddrSpaceQual: Global
289; CHECK-NEXT:     - Size:          8
290; CHECK-NEXT:       Align:         8
291; CHECK-NEXT:       ValueKind:     HiddenNone
292; CHECK-NEXT:       AddrSpaceQual: Global
293; CHECK-NEXT:     - Size:          8
294; CHECK-NEXT:       Align:         8
295; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
296; CHECK-NEXT:       AddrSpaceQual: Global
297define amdgpu_kernel void @test_half8(<8 x half> %a) #0
298    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !13
299    !kernel_arg_base_type !13 !kernel_arg_type_qual !4 {
300  ret void
301}
302
303; CHECK:      - Name:            test_float16
304; CHECK-NEXT:   SymbolName:      'test_float16@kd'
305; CHECK-NEXT:   Language:        OpenCL C
306; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
307; CHECK-NEXT:   Args:
308; CHECK-NEXT:     - Name:          a
309; CHECK-NEXT:       TypeName:      float16
310; CHECK-NEXT:       Size:          64
311; CHECK-NEXT:       Align:         64
312; CHECK-NEXT:       ValueKind:     ByValue
313; CHECK-NEXT:       AccQual:       Default
314; CHECK-NEXT:     - Size:          8
315; CHECK-NEXT:       Align:         8
316; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
317; CHECK-NEXT:     - Size:          8
318; CHECK-NEXT:       Align:         8
319; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
320; CHECK-NEXT:     - Size:          8
321; CHECK-NEXT:       Align:         8
322; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
323; CHECK-NEXT:     - Size:          8
324; CHECK-NEXT:       Align:         8
325; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
326; CHECK-NEXT:       AddrSpaceQual: Global
327; CHECK-NEXT:     - Size:          8
328; CHECK-NEXT:       Align:         8
329; CHECK-NEXT:       ValueKind:     HiddenNone
330; CHECK-NEXT:       AddrSpaceQual: Global
331; CHECK-NEXT:     - Size:          8
332; CHECK-NEXT:       Align:         8
333; CHECK-NEXT:       ValueKind:     HiddenNone
334; CHECK-NEXT:       AddrSpaceQual: Global
335; CHECK-NEXT:     - Size:          8
336; CHECK-NEXT:       Align:         8
337; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
338; CHECK-NEXT:       AddrSpaceQual: Global
339define amdgpu_kernel void @test_float16(<16 x float> %a) #0
340    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !14
341    !kernel_arg_base_type !14 !kernel_arg_type_qual !4 {
342  ret void
343}
344
345; CHECK:      - Name:            test_double16
346; CHECK-NEXT:   SymbolName:      'test_double16@kd'
347; CHECK-NEXT:   Language:        OpenCL C
348; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
349; CHECK-NEXT:   Args:
350; CHECK-NEXT:     - Name:          a
351; CHECK-NEXT:       TypeName:      double16
352; CHECK-NEXT:       Size:          128
353; CHECK-NEXT:       Align:         128
354; CHECK-NEXT:       ValueKind:     ByValue
355; CHECK-NEXT:       AccQual:       Default
356; CHECK-NEXT:     - Size:          8
357; CHECK-NEXT:       Align:         8
358; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
359; CHECK-NEXT:     - Size:          8
360; CHECK-NEXT:       Align:         8
361; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
362; CHECK-NEXT:     - Size:          8
363; CHECK-NEXT:       Align:         8
364; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
365; CHECK-NEXT:     - Size:          8
366; CHECK-NEXT:       Align:         8
367; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
368; CHECK-NEXT:       AddrSpaceQual: Global
369; CHECK-NEXT:     - Size:          8
370; CHECK-NEXT:       Align:         8
371; CHECK-NEXT:       ValueKind:     HiddenNone
372; CHECK-NEXT:       AddrSpaceQual: Global
373; CHECK-NEXT:     - Size:          8
374; CHECK-NEXT:       Align:         8
375; CHECK-NEXT:       ValueKind:     HiddenNone
376; CHECK-NEXT:       AddrSpaceQual: Global
377; CHECK-NEXT:     - Size:          8
378; CHECK-NEXT:       Align:         8
379; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
380; CHECK-NEXT:       AddrSpaceQual: Global
381define amdgpu_kernel void @test_double16(<16 x double> %a) #0
382    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !15
383    !kernel_arg_base_type !15 !kernel_arg_type_qual !4 {
384  ret void
385}
386
387; CHECK:      - Name:            test_pointer
388; CHECK-NEXT:   SymbolName:      'test_pointer@kd'
389; CHECK-NEXT:   Language:        OpenCL C
390; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
391; CHECK-NEXT:   Args:
392; CHECK-NEXT:     - Name:          a
393; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
394; CHECK-NEXT:       Size:          8
395; CHECK-NEXT:       Align:         8
396; CHECK-NEXT:       ValueKind:     GlobalBuffer
397; CHECK-NEXT:       AddrSpaceQual: Global
398; CHECK-NEXT:       AccQual:       Default
399; CHECK-NEXT:     - Size:          8
400; CHECK-NEXT:       Align:         8
401; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
402; CHECK-NEXT:     - Size:          8
403; CHECK-NEXT:       Align:         8
404; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
405; CHECK-NEXT:     - Size:          8
406; CHECK-NEXT:       Align:         8
407; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
408; CHECK-NEXT:     - Size:          8
409; CHECK-NEXT:       Align:         8
410; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
411; CHECK-NEXT:       AddrSpaceQual: Global
412; CHECK-NEXT:     - Size:          8
413; CHECK-NEXT:       Align:         8
414; CHECK-NEXT:       ValueKind:     HiddenNone
415; CHECK-NEXT:       AddrSpaceQual: Global
416; CHECK-NEXT:     - Size:          8
417; CHECK-NEXT:       Align:         8
418; CHECK-NEXT:       ValueKind:     HiddenNone
419; CHECK-NEXT:       AddrSpaceQual: Global
420; CHECK-NEXT:     - Size:          8
421; CHECK-NEXT:       Align:         8
422; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
423; CHECK-NEXT:       AddrSpaceQual: Global
424define amdgpu_kernel void @test_pointer(i32 addrspace(1)* %a) #0
425    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !16
426    !kernel_arg_base_type !16 !kernel_arg_type_qual !4 {
427  ret void
428}
429
430; CHECK:      - Name:            test_image
431; CHECK-NEXT:   SymbolName:      'test_image@kd'
432; CHECK-NEXT:   Language:        OpenCL C
433; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
434; CHECK-NEXT:   Args:
435; CHECK-NEXT:     - Name:          a
436; CHECK-NEXT:       TypeName:      image2d_t
437; CHECK-NEXT:       Size:          8
438; CHECK-NEXT:       Align:         8
439; CHECK-NEXT:       ValueKind:     Image
440; CHECK-NEXT:       AddrSpaceQual: Global
441; CHECK-NEXT:       AccQual:       Default
442; CHECK-NEXT:     - Size:          8
443; CHECK-NEXT:       Align:         8
444; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
445; CHECK-NEXT:     - Size:          8
446; CHECK-NEXT:       Align:         8
447; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
448; CHECK-NEXT:     - Size:          8
449; CHECK-NEXT:       Align:         8
450; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
451; CHECK-NEXT:     - Size:          8
452; CHECK-NEXT:       Align:         8
453; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
454; CHECK-NEXT:       AddrSpaceQual: Global
455; CHECK-NEXT:     - Size:          8
456; CHECK-NEXT:       Align:         8
457; CHECK-NEXT:       ValueKind:     HiddenNone
458; CHECK-NEXT:       AddrSpaceQual: Global
459; CHECK-NEXT:     - Size:          8
460; CHECK-NEXT:       Align:         8
461; CHECK-NEXT:       ValueKind:     HiddenNone
462; CHECK-NEXT:       AddrSpaceQual: Global
463; CHECK-NEXT:     - Size:          8
464; CHECK-NEXT:       Align:         8
465; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
466; CHECK-NEXT:       AddrSpaceQual: Global
467define amdgpu_kernel void @test_image(%opencl.image2d_t addrspace(1)* %a) #0
468    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !17
469    !kernel_arg_base_type !17 !kernel_arg_type_qual !4 {
470  ret void
471}
472
473; CHECK:      - Name:            test_sampler
474; CHECK-NEXT:   SymbolName:      'test_sampler@kd'
475; CHECK-NEXT:   Language:        OpenCL C
476; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
477; CHECK-NEXT:   Args:
478; CHECK-NEXT:     - Name:          a
479; CHECK-NEXT:       TypeName:      sampler_t
480; CHECK-NEXT:       Size:          4
481; CHECK-NEXT:       Align:         4
482; CHECK-NEXT:       ValueKind:     Sampler
483; CHECK-NEXT:       AccQual:       Default
484; CHECK-NEXT:     - Size:          8
485; CHECK-NEXT:       Align:         8
486; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
487; CHECK-NEXT:     - Size:          8
488; CHECK-NEXT:       Align:         8
489; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
490; CHECK-NEXT:     - Size:          8
491; CHECK-NEXT:       Align:         8
492; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
493; CHECK-NEXT:     - Size:          8
494; CHECK-NEXT:       Align:         8
495; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
496; CHECK-NEXT:       AddrSpaceQual: Global
497; CHECK-NEXT:     - Size:          8
498; CHECK-NEXT:       Align:         8
499; CHECK-NEXT:       ValueKind:     HiddenNone
500; CHECK-NEXT:       AddrSpaceQual: Global
501; CHECK-NEXT:     - Size:          8
502; CHECK-NEXT:       Align:         8
503; CHECK-NEXT:       ValueKind:     HiddenNone
504; CHECK-NEXT:       AddrSpaceQual: Global
505; CHECK-NEXT:     - Size:          8
506; CHECK-NEXT:       Align:         8
507; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
508; CHECK-NEXT:       AddrSpaceQual: Global
509define amdgpu_kernel void @test_sampler(i32 %a) #0
510    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !18
511    !kernel_arg_base_type !18 !kernel_arg_type_qual !4 {
512  ret void
513}
514
515; CHECK:      - Name:            test_queue
516; CHECK-NEXT:   SymbolName:      'test_queue@kd'
517; CHECK-NEXT:   Language:        OpenCL C
518; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
519; CHECK-NEXT:   Args:
520; CHECK-NEXT:     - Name:          a
521; CHECK-NEXT:       TypeName:      queue_t
522; CHECK-NEXT:       Size:          8
523; CHECK-NEXT:       Align:         8
524; CHECK-NEXT:       ValueKind:     Queue
525; CHECK-NEXT:       AddrSpaceQual: Global
526; CHECK-NEXT:       AccQual:       Default
527; CHECK-NEXT:     - Size:          8
528; CHECK-NEXT:       Align:         8
529; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
530; CHECK-NEXT:     - Size:          8
531; CHECK-NEXT:       Align:         8
532; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
533; CHECK-NEXT:     - Size:          8
534; CHECK-NEXT:       Align:         8
535; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
536; CHECK-NEXT:     - Size:          8
537; CHECK-NEXT:       Align:         8
538; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
539; CHECK-NEXT:       AddrSpaceQual: Global
540; CHECK-NEXT:     - Size:          8
541; CHECK-NEXT:       Align:         8
542; CHECK-NEXT:       ValueKind:     HiddenNone
543; CHECK-NEXT:       AddrSpaceQual: Global
544; CHECK-NEXT:     - Size:          8
545; CHECK-NEXT:       Align:         8
546; CHECK-NEXT:       ValueKind:     HiddenNone
547; CHECK-NEXT:       AddrSpaceQual: Global
548; CHECK-NEXT:     - Size:          8
549; CHECK-NEXT:       Align:         8
550; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
551; CHECK-NEXT:       AddrSpaceQual: Global
552define amdgpu_kernel void @test_queue(%opencl.queue_t addrspace(1)* %a) #0
553    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !19
554    !kernel_arg_base_type !19 !kernel_arg_type_qual !4 {
555  ret void
556}
557
558; CHECK:      - Name:            test_struct
559; CHECK-NEXT:   SymbolName:      'test_struct@kd'
560; CHECK-NEXT:   Language:        OpenCL C
561; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
562; CHECK-NEXT:   Args:
563; CHECK-NEXT:     - Name:          a
564; CHECK-NEXT:       TypeName:      struct A
565; CHECK-NEXT:       Size:          8
566; CHECK-NEXT:       Align:         4
567; CHECK-NEXT:       ValueKind:     ByValue
568; CHECK-NEXT:       AccQual:       Default
569; CHECK-NEXT:     - Size:          8
570; CHECK-NEXT:       Align:         8
571; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
572; CHECK-NEXT:     - Size:          8
573; CHECK-NEXT:       Align:         8
574; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
575; CHECK-NEXT:     - Size:          8
576; CHECK-NEXT:       Align:         8
577; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
578; CHECK-NEXT:     - Size:          8
579; CHECK-NEXT:       Align:         8
580; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
581; CHECK-NEXT:       AddrSpaceQual: Global
582; CHECK-NEXT:     - Size:          8
583; CHECK-NEXT:       Align:         8
584; CHECK-NEXT:       ValueKind:     HiddenNone
585; CHECK-NEXT:       AddrSpaceQual: Global
586; CHECK-NEXT:     - Size:          8
587; CHECK-NEXT:       Align:         8
588; CHECK-NEXT:       ValueKind:     HiddenNone
589; CHECK-NEXT:       AddrSpaceQual: Global
590; CHECK-NEXT:     - Size:          8
591; CHECK-NEXT:       Align:         8
592; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
593; CHECK-NEXT:       AddrSpaceQual: Global
594define amdgpu_kernel void @test_struct(%struct.A %a) #0
595    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20
596    !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
597  ret void
598}
599
600; CHECK:      - Name:            test_struct_byref_constant
601; CHECK-NEXT:   SymbolName:      'test_struct_byref_constant@kd'
602; CHECK-NEXT:   Language:        OpenCL C
603; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
604; CHECK-NEXT:   Args:
605; CHECK-NEXT:     - Name:          a
606; CHECK-NEXT:       TypeName:      struct A
607; CHECK-NEXT:       Size:          8
608; CHECK-NEXT:       Align:         4
609; CHECK-NEXT:       ValueKind:     ByValue
610; CHECK-NEXT:       AccQual:       Default
611; CHECK-NEXT:     - Size:          8
612; CHECK-NEXT:       Align:         8
613; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
614; CHECK-NEXT:     - Size:          8
615; CHECK-NEXT:       Align:         8
616; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
617; CHECK-NEXT:     - Size:          8
618; CHECK-NEXT:       Align:         8
619; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
620; CHECK-NEXT:     - Size:          8
621; CHECK-NEXT:       Align:         8
622; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
623; CHECK-NEXT:       AddrSpaceQual: Global
624; CHECK-NEXT:     - Size:          8
625; CHECK-NEXT:       Align:         8
626; CHECK-NEXT:       ValueKind:     HiddenNone
627; CHECK-NEXT:       AddrSpaceQual: Global
628; CHECK-NEXT:     - Size:          8
629; CHECK-NEXT:       Align:         8
630; CHECK-NEXT:       ValueKind:     HiddenNone
631; CHECK-NEXT:       AddrSpaceQual: Global
632; CHECK-NEXT:     - Size:          8
633; CHECK-NEXT:       Align:         8
634; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
635; CHECK-NEXT:       AddrSpaceQual: Global
636define amdgpu_kernel void @test_struct_byref_constant(%struct.A addrspace(4)* byref(%struct.A) %a) #0
637    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20
638    !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
639  ret void
640}
641
642; CHECK:      - Name:            test_array
643; CHECK-NEXT:   SymbolName:      'test_array@kd'
644; CHECK-NEXT:   Language:        OpenCL C
645; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
646; CHECK-NEXT:   Args:
647; CHECK-NEXT:     - Name:          a
648; CHECK-NEXT:       TypeName:      struct A
649; CHECK-NEXT:       Size:          8
650; CHECK-NEXT:       Align:         1
651; CHECK-NEXT:       ValueKind:     ByValue
652; CHECK-NEXT:       AccQual:       Default
653; CHECK-NEXT:     - Size:          8
654; CHECK-NEXT:       Align:         8
655; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
656; CHECK-NEXT:     - Size:          8
657; CHECK-NEXT:       Align:         8
658; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
659; CHECK-NEXT:     - Size:          8
660; CHECK-NEXT:       Align:         8
661; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
662; CHECK-NEXT:     - Size:          8
663; CHECK-NEXT:       Align:         8
664; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
665; CHECK-NEXT:       AddrSpaceQual: Global
666; CHECK-NEXT:     - Size:          8
667; CHECK-NEXT:       Align:         8
668; CHECK-NEXT:       ValueKind:     HiddenNone
669; CHECK-NEXT:       AddrSpaceQual: Global
670; CHECK-NEXT:     - Size:          8
671; CHECK-NEXT:       Align:         8
672; CHECK-NEXT:       ValueKind:     HiddenNone
673; CHECK-NEXT:       AddrSpaceQual: Global
674; CHECK-NEXT:     - Size:          8
675; CHECK-NEXT:       Align:         8
676; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
677; CHECK-NEXT:       AddrSpaceQual: Global
678define amdgpu_kernel void @test_array([8 x i8] %a) #0
679    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20
680    !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
681  ret void
682}
683
684; CHECK:      - Name:            test_array_byref_constant
685; CHECK-NEXT:   SymbolName:      'test_array_byref_constant@kd'
686; CHECK-NEXT:   Language:        OpenCL C
687; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
688; CHECK-NEXT:   Args:
689; CHECK-NEXT:     - Name:          a
690; CHECK-NEXT:       TypeName:      struct A
691; CHECK-NEXT:       Size:          8
692; CHECK-NEXT:       Align:         1
693; CHECK-NEXT:       ValueKind:     ByValue
694; CHECK-NEXT:       AccQual:       Default
695; CHECK-NEXT:     - Size:          8
696; CHECK-NEXT:       Align:         8
697; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
698; CHECK-NEXT:     - Size:          8
699; CHECK-NEXT:       Align:         8
700; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
701; CHECK-NEXT:     - Size:          8
702; CHECK-NEXT:       Align:         8
703; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
704; CHECK-NEXT:     - Size:          8
705; CHECK-NEXT:       Align:         8
706; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
707; CHECK-NEXT:       AddrSpaceQual: Global
708; CHECK-NEXT:     - Size:          8
709; CHECK-NEXT:       Align:         8
710; CHECK-NEXT:       ValueKind:     HiddenNone
711; CHECK-NEXT:       AddrSpaceQual: Global
712; CHECK-NEXT:     - Size:          8
713; CHECK-NEXT:       Align:         8
714; CHECK-NEXT:       ValueKind:     HiddenNone
715; CHECK-NEXT:       AddrSpaceQual: Global
716; CHECK-NEXT:     - Size:          8
717; CHECK-NEXT:       Align:         8
718; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
719; CHECK-NEXT:       AddrSpaceQual: Global
720define amdgpu_kernel void @test_array_byref_constant([8 x i8] addrspace(4)* byref([8 x i8]) %a) #0
721    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20
722    !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
723  ret void
724}
725
726; CHECK:      - Name:            test_i128
727; CHECK-NEXT:   SymbolName:      'test_i128@kd'
728; CHECK-NEXT:   Language:        OpenCL C
729; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
730; CHECK-NEXT:   Args:
731; CHECK-NEXT:     - Name:          a
732; CHECK-NEXT:       TypeName:      i128
733; CHECK-NEXT:       Size:          16
734; CHECK-NEXT:       Align:         8
735; CHECK-NEXT:       ValueKind:     ByValue
736; CHECK-NEXT:       AccQual:       Default
737; CHECK-NEXT:     - Size:          8
738; CHECK-NEXT:       Align:         8
739; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
740; CHECK-NEXT:     - Size:          8
741; CHECK-NEXT:       Align:         8
742; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
743; CHECK-NEXT:     - Size:          8
744; CHECK-NEXT:       Align:         8
745; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
746; CHECK-NEXT:     - Size:          8
747; CHECK-NEXT:       Align:         8
748; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
749; CHECK-NEXT:       AddrSpaceQual: Global
750; CHECK-NEXT:     - Size:          8
751; CHECK-NEXT:       Align:         8
752; CHECK-NEXT:       ValueKind:     HiddenNone
753; CHECK-NEXT:       AddrSpaceQual: Global
754; CHECK-NEXT:     - Size:          8
755; CHECK-NEXT:       Align:         8
756; CHECK-NEXT:       ValueKind:     HiddenNone
757; CHECK-NEXT:       AddrSpaceQual: Global
758; CHECK-NEXT:     - Size:          8
759; CHECK-NEXT:       Align:         8
760; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
761; CHECK-NEXT:       AddrSpaceQual: Global
762define amdgpu_kernel void @test_i128(i128 %a) #0
763    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !21
764    !kernel_arg_base_type !21 !kernel_arg_type_qual !4 {
765  ret void
766}
767
768; CHECK:      - Name:            test_multi_arg
769; CHECK-NEXT:   SymbolName:      'test_multi_arg@kd'
770; CHECK-NEXT:   Language:        OpenCL C
771; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
772; CHECK-NEXT:   Args:
773; CHECK-NEXT:     - Name:          a
774; CHECK-NEXT:       TypeName:      int
775; CHECK-NEXT:       Size:          4
776; CHECK-NEXT:       Align:         4
777; CHECK-NEXT:       ValueKind:     ByValue
778; CHECK-NEXT:       AccQual:       Default
779; CHECK-NEXT:     - Name:          b
780; CHECK-NEXT:       TypeName:      short2
781; CHECK-NEXT:       Size:          4
782; CHECK-NEXT:       Align:         4
783; CHECK-NEXT:       ValueKind:     ByValue
784; CHECK-NEXT:       AccQual:       Default
785; CHECK-NEXT:     - Name:          c
786; CHECK-NEXT:       TypeName:      char3
787; CHECK-NEXT:       Size:          4
788; CHECK-NEXT:       Align:         4
789; CHECK-NEXT:       ValueKind:     ByValue
790; CHECK-NEXT:       AccQual:       Default
791; CHECK-NEXT:     - Size:          8
792; CHECK-NEXT:       Align:         8
793; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
794; CHECK-NEXT:     - Size:          8
795; CHECK-NEXT:       Align:         8
796; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
797; CHECK-NEXT:     - Size:          8
798; CHECK-NEXT:       Align:         8
799; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
800; CHECK-NEXT:     - Size:          8
801; CHECK-NEXT:       Align:         8
802; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
803; CHECK-NEXT:       AddrSpaceQual: Global
804; CHECK-NEXT:     - Size:          8
805; CHECK-NEXT:       Align:         8
806; CHECK-NEXT:       ValueKind:     HiddenNone
807; CHECK-NEXT:       AddrSpaceQual: Global
808; CHECK-NEXT:     - Size:          8
809; CHECK-NEXT:       Align:         8
810; CHECK-NEXT:       ValueKind:     HiddenNone
811; CHECK-NEXT:       AddrSpaceQual: Global
812; CHECK-NEXT:     - Size:          8
813; CHECK-NEXT:       Align:         8
814; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
815; CHECK-NEXT:       AddrSpaceQual: Global
816define amdgpu_kernel void @test_multi_arg(i32 %a, <2 x i16> %b, <3 x i8> %c) #0
817    !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !24
818    !kernel_arg_base_type !24 !kernel_arg_type_qual !25 {
819  ret void
820}
821
822; CHECK:      - Name:            test_addr_space
823; CHECK-NEXT:   SymbolName:      'test_addr_space@kd'
824; CHECK-NEXT:   Language:        OpenCL C
825; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
826; CHECK-NEXT:   Args:
827; CHECK-NEXT:     - Name:          g
828; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
829; CHECK-NEXT:       Size:          8
830; CHECK-NEXT:       Align:         8
831; CHECK-NEXT:       ValueKind:     GlobalBuffer
832; CHECK-NEXT:       AddrSpaceQual: Global
833; CHECK-NEXT:       AccQual:       Default
834; CHECK-NEXT:     - Name:          c
835; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
836; CHECK-NEXT:       Size:          8
837; CHECK-NEXT:       Align:         8
838; CHECK-NEXT:       ValueKind:     GlobalBuffer
839; CHECK-NEXT:       AddrSpaceQual: Constant
840; CHECK-NEXT:       AccQual:       Default
841; CHECK-NEXT:     - Name:          l
842; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
843; CHECK-NEXT:       Size:          4
844; CHECK-NEXT:       Align:         4
845; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
846; CHECK-NEXT:       PointeeAlign:  4
847; CHECK-NEXT:       AddrSpaceQual: Local
848; CHECK-NEXT:       AccQual:       Default
849; CHECK-NEXT:     - Size:          8
850; CHECK-NEXT:       Align:         8
851; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
852; CHECK-NEXT:     - Size:          8
853; CHECK-NEXT:       Align:         8
854; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
855; CHECK-NEXT:     - Size:          8
856; CHECK-NEXT:       Align:         8
857; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
858; CHECK-NEXT:     - Size:          8
859; CHECK-NEXT:       Align:         8
860; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
861; CHECK-NEXT:       AddrSpaceQual: Global
862; CHECK-NEXT:     - Size:          8
863; CHECK-NEXT:       Align:         8
864; CHECK-NEXT:       ValueKind:     HiddenNone
865; CHECK-NEXT:       AddrSpaceQual: Global
866; CHECK-NEXT:     - Size:          8
867; CHECK-NEXT:       Align:         8
868; CHECK-NEXT:       ValueKind:     HiddenNone
869; CHECK-NEXT:       AddrSpaceQual: Global
870; CHECK-NEXT:     - Size:          8
871; CHECK-NEXT:       Align:         8
872; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
873; CHECK-NEXT:       AddrSpaceQual: Global
874define amdgpu_kernel void @test_addr_space(i32 addrspace(1)* %g,
875                                           i32 addrspace(4)* %c,
876                                           i32 addrspace(3)* %l) #0
877    !kernel_arg_addr_space !50 !kernel_arg_access_qual !23 !kernel_arg_type !51
878    !kernel_arg_base_type !51 !kernel_arg_type_qual !25 {
879  ret void
880}
881
882; CHECK:      - Name:            test_type_qual
883; CHECK-NEXT:   SymbolName:      'test_type_qual@kd'
884; CHECK-NEXT:   Language:        OpenCL C
885; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
886; CHECK-NEXT:   Args:
887; CHECK-NEXT:     - Name:          a
888; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
889; CHECK-NEXT:       Size:          8
890; CHECK-NEXT:       Align:         8
891; CHECK-NEXT:       ValueKind:     GlobalBuffer
892; CHECK-NEXT:       AddrSpaceQual: Global
893; CHECK-NEXT:       AccQual:       Default
894; CHECK-NEXT:       IsVolatile:    true
895; CHECK-NEXT:     - Name:          b
896; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
897; CHECK-NEXT:       Size:          8
898; CHECK-NEXT:       Align:         8
899; CHECK-NEXT:       ValueKind:     GlobalBuffer
900; CHECK-NEXT:       AddrSpaceQual: Global
901; CHECK-NEXT:       AccQual:       Default
902; CHECK-NEXT:       IsConst:       true
903; CHECK-NEXT:       IsRestrict:    true
904; CHECK-NEXT:     - Name:          c
905; CHECK-NEXT:       TypeName:      'int  addrspace(5)*'
906; CHECK-NEXT:       Size:          8
907; CHECK-NEXT:       Align:         8
908; CHECK-NEXT:       ValueKind:     Pipe
909; CHECK-NEXT:       AddrSpaceQual: Global
910; CHECK-NEXT:       AccQual:       Default
911; CHECK-NEXT:       IsPipe:        true
912; CHECK-NEXT:     - Size:          8
913; CHECK-NEXT:       Align:         8
914; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
915; CHECK-NEXT:     - Size:          8
916; CHECK-NEXT:       Align:         8
917; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
918; CHECK-NEXT:     - Size:          8
919; CHECK-NEXT:       Align:         8
920; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
921; CHECK-NEXT:     - Size:          8
922; CHECK-NEXT:       Align:         8
923; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
924; CHECK-NEXT:       AddrSpaceQual: Global
925; CHECK-NEXT:     - Size:          8
926; CHECK-NEXT:       Align:         8
927; CHECK-NEXT:       ValueKind:     HiddenNone
928; CHECK-NEXT:       AddrSpaceQual: Global
929; CHECK-NEXT:     - Size:          8
930; CHECK-NEXT:       Align:         8
931; CHECK-NEXT:       ValueKind:     HiddenNone
932; CHECK-NEXT:       AddrSpaceQual: Global
933; CHECK-NEXT:     - Size:          8
934; CHECK-NEXT:       Align:         8
935; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
936; CHECK-NEXT:       AddrSpaceQual: Global
937define amdgpu_kernel void @test_type_qual(i32 addrspace(1)* %a,
938                                          i32 addrspace(1)* %b,
939                                          %opencl.pipe_t addrspace(1)* %c) #0
940    !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !51
941    !kernel_arg_base_type !51 !kernel_arg_type_qual !70 {
942  ret void
943}
944
945; CHECK:      - Name:            test_access_qual
946; CHECK-NEXT:   SymbolName:      'test_access_qual@kd'
947; CHECK-NEXT:   Language:        OpenCL C
948; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
949; CHECK-NEXT:   Args:
950; CHECK-NEXT:     - Name:          ro
951; CHECK-NEXT:       TypeName:      image1d_t
952; CHECK-NEXT:       Size:          8
953; CHECK-NEXT:       Align:         8
954; CHECK-NEXT:       ValueKind:     Image
955; CHECK-NEXT:       AddrSpaceQual: Global
956; CHECK-NEXT:       AccQual:       ReadOnly
957; CHECK-NEXT:     - Name:          wo
958; CHECK-NEXT:       TypeName:      image2d_t
959; CHECK-NEXT:       Size:          8
960; CHECK-NEXT:       Align:         8
961; CHECK-NEXT:       ValueKind:     Image
962; CHECK-NEXT:       AddrSpaceQual: Global
963; CHECK-NEXT:       AccQual:       WriteOnly
964; CHECK-NEXT:     - Name:          rw
965; CHECK-NEXT:       TypeName:      image3d_t
966; CHECK-NEXT:       Size:          8
967; CHECK-NEXT:       Align:         8
968; CHECK-NEXT:       ValueKind:     Image
969; CHECK-NEXT:       AddrSpaceQual: Global
970; CHECK-NEXT:       AccQual:       ReadWrite
971; CHECK-NEXT:     - Size:          8
972; CHECK-NEXT:       Align:         8
973; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
974; CHECK-NEXT:     - Size:          8
975; CHECK-NEXT:       Align:         8
976; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
977; CHECK-NEXT:     - Size:          8
978; CHECK-NEXT:       Align:         8
979; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
980; CHECK-NEXT:     - Size:          8
981; CHECK-NEXT:       Align:         8
982; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
983; CHECK-NEXT:       AddrSpaceQual: Global
984; CHECK-NEXT:     - Size:          8
985; CHECK-NEXT:       Align:         8
986; CHECK-NEXT:       ValueKind:     HiddenNone
987; CHECK-NEXT:       AddrSpaceQual: Global
988; CHECK-NEXT:     - Size:          8
989; CHECK-NEXT:       Align:         8
990; CHECK-NEXT:       ValueKind:     HiddenNone
991; CHECK-NEXT:       AddrSpaceQual: Global
992; CHECK-NEXT:     - Size:          8
993; CHECK-NEXT:       Align:         8
994; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
995; CHECK-NEXT:       AddrSpaceQual: Global
996define amdgpu_kernel void @test_access_qual(%opencl.image1d_t addrspace(1)* %ro,
997                                            %opencl.image2d_t addrspace(1)* %wo,
998                                            %opencl.image3d_t addrspace(1)* %rw) #0
999    !kernel_arg_addr_space !60 !kernel_arg_access_qual !61 !kernel_arg_type !62
1000    !kernel_arg_base_type !62 !kernel_arg_type_qual !25 {
1001  ret void
1002}
1003
1004; CHECK:      - Name:            test_vec_type_hint_half
1005; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_half@kd'
1006; CHECK-NEXT:   Language:        OpenCL C
1007; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1008; CHECK-NEXT:   Attrs:
1009; CHECK-NEXT:       VecTypeHint:   half
1010; CHECK-NEXT:   Args:
1011; CHECK-NEXT:     - Name:          a
1012; CHECK-NEXT:       TypeName:      int
1013; CHECK-NEXT:       Size:          4
1014; CHECK-NEXT:       Align:         4
1015; CHECK-NEXT:       ValueKind:     ByValue
1016; CHECK-NEXT:       AccQual:       Default
1017; CHECK-NEXT:     - Size:          8
1018; CHECK-NEXT:       Align:         8
1019; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1020; CHECK-NEXT:     - Size:          8
1021; CHECK-NEXT:       Align:         8
1022; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1023; CHECK-NEXT:     - Size:          8
1024; CHECK-NEXT:       Align:         8
1025; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1026; CHECK-NEXT:     - Size:          8
1027; CHECK-NEXT:       Align:         8
1028; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1029; CHECK-NEXT:       AddrSpaceQual: Global
1030; CHECK-NEXT:     - Size:          8
1031; CHECK-NEXT:       Align:         8
1032; CHECK-NEXT:       ValueKind:     HiddenNone
1033; CHECK-NEXT:       AddrSpaceQual: Global
1034; CHECK-NEXT:     - Size:          8
1035; CHECK-NEXT:       Align:         8
1036; CHECK-NEXT:       ValueKind:     HiddenNone
1037; CHECK-NEXT:       AddrSpaceQual: Global
1038; CHECK-NEXT:     - Size:          8
1039; CHECK-NEXT:       Align:         8
1040; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1041; CHECK-NEXT:       AddrSpaceQual: Global
1042define amdgpu_kernel void @test_vec_type_hint_half(i32 %a) #0
1043    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1044    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !26 {
1045  ret void
1046}
1047
1048; CHECK:      - Name:            test_vec_type_hint_float
1049; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_float@kd'
1050; CHECK-NEXT:   Language:        OpenCL C
1051; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1052; CHECK-NEXT:   Attrs:
1053; CHECK-NEXT:       VecTypeHint:   float
1054; CHECK-NEXT:   Args:
1055; CHECK-NEXT:     - Name:          a
1056; CHECK-NEXT:       TypeName:      int
1057; CHECK-NEXT:       Size:          4
1058; CHECK-NEXT:       Align:         4
1059; CHECK-NEXT:       ValueKind:     ByValue
1060; CHECK-NEXT:       AccQual:       Default
1061; CHECK-NEXT:     - Size:          8
1062; CHECK-NEXT:       Align:         8
1063; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1064; CHECK-NEXT:     - Size:          8
1065; CHECK-NEXT:       Align:         8
1066; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1067; CHECK-NEXT:     - Size:          8
1068; CHECK-NEXT:       Align:         8
1069; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1070; CHECK-NEXT:     - Size:          8
1071; CHECK-NEXT:       Align:         8
1072; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1073; CHECK-NEXT:       AddrSpaceQual: Global
1074; CHECK-NEXT:     - Size:          8
1075; CHECK-NEXT:       Align:         8
1076; CHECK-NEXT:       ValueKind:     HiddenNone
1077; CHECK-NEXT:       AddrSpaceQual: Global
1078; CHECK-NEXT:     - Size:          8
1079; CHECK-NEXT:       Align:         8
1080; CHECK-NEXT:       ValueKind:     HiddenNone
1081; CHECK-NEXT:       AddrSpaceQual: Global
1082; CHECK-NEXT:     - Size:          8
1083; CHECK-NEXT:       Align:         8
1084; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1085; CHECK-NEXT:       AddrSpaceQual: Global
1086define amdgpu_kernel void @test_vec_type_hint_float(i32 %a) #0
1087    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1088    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !27 {
1089  ret void
1090}
1091
1092; CHECK:      - Name:            test_vec_type_hint_double
1093; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_double@kd'
1094; CHECK-NEXT:   Language:        OpenCL C
1095; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1096; CHECK-NEXT:   Attrs:
1097; CHECK-NEXT:       VecTypeHint:   double
1098; CHECK-NEXT:   Args:
1099; CHECK-NEXT:     - Name:          a
1100; CHECK-NEXT:       TypeName:      int
1101; CHECK-NEXT:       Size:          4
1102; CHECK-NEXT:       Align:         4
1103; CHECK-NEXT:       ValueKind:     ByValue
1104; CHECK-NEXT:       AccQual:       Default
1105; CHECK-NEXT:     - Size:          8
1106; CHECK-NEXT:       Align:         8
1107; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1108; CHECK-NEXT:     - Size:          8
1109; CHECK-NEXT:       Align:         8
1110; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1111; CHECK-NEXT:     - Size:          8
1112; CHECK-NEXT:       Align:         8
1113; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1114; CHECK-NEXT:     - Size:          8
1115; CHECK-NEXT:       Align:         8
1116; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1117; CHECK-NEXT:       AddrSpaceQual: Global
1118; CHECK-NEXT:     - Size:          8
1119; CHECK-NEXT:       Align:         8
1120; CHECK-NEXT:       ValueKind:     HiddenNone
1121; CHECK-NEXT:       AddrSpaceQual: Global
1122; CHECK-NEXT:     - Size:          8
1123; CHECK-NEXT:       Align:         8
1124; CHECK-NEXT:       ValueKind:     HiddenNone
1125; CHECK-NEXT:       AddrSpaceQual: Global
1126; CHECK-NEXT:     - Size:          8
1127; CHECK-NEXT:       Align:         8
1128; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1129; CHECK-NEXT:       AddrSpaceQual: Global
1130define amdgpu_kernel void @test_vec_type_hint_double(i32 %a) #0
1131    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1132    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !28 {
1133  ret void
1134}
1135
1136; CHECK:      - Name:            test_vec_type_hint_char
1137; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_char@kd'
1138; CHECK-NEXT:   Language:        OpenCL C
1139; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1140; CHECK-NEXT:   Attrs:
1141; CHECK-NEXT:       VecTypeHint:   char
1142; CHECK-NEXT:   Args:
1143; CHECK-NEXT:     - Name:          a
1144; CHECK-NEXT:       TypeName:      int
1145; CHECK-NEXT:       Size:          4
1146; CHECK-NEXT:       Align:         4
1147; CHECK-NEXT:       ValueKind:     ByValue
1148; CHECK-NEXT:       AccQual:       Default
1149; CHECK-NEXT:     - Size:          8
1150; CHECK-NEXT:       Align:         8
1151; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1152; CHECK-NEXT:     - Size:          8
1153; CHECK-NEXT:       Align:         8
1154; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1155; CHECK-NEXT:     - Size:          8
1156; CHECK-NEXT:       Align:         8
1157; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1158; CHECK-NEXT:     - Size:          8
1159; CHECK-NEXT:       Align:         8
1160; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1161; CHECK-NEXT:       AddrSpaceQual: Global
1162; CHECK-NEXT:     - Size:          8
1163; CHECK-NEXT:       Align:         8
1164; CHECK-NEXT:       ValueKind:     HiddenNone
1165; CHECK-NEXT:       AddrSpaceQual: Global
1166; CHECK-NEXT:     - Size:          8
1167; CHECK-NEXT:       Align:         8
1168; CHECK-NEXT:       ValueKind:     HiddenNone
1169; CHECK-NEXT:       AddrSpaceQual: Global
1170; CHECK-NEXT:     - Size:          8
1171; CHECK-NEXT:       Align:         8
1172; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1173; CHECK-NEXT:       AddrSpaceQual: Global
1174define amdgpu_kernel void @test_vec_type_hint_char(i32 %a) #0
1175    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1176    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !29 {
1177  ret void
1178}
1179
1180; CHECK:      - Name:            test_vec_type_hint_short
1181; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_short@kd'
1182; CHECK-NEXT:   Language:        OpenCL C
1183; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1184; CHECK-NEXT:   Attrs:
1185; CHECK-NEXT:       VecTypeHint:   short
1186; CHECK-NEXT:   Args:
1187; CHECK-NEXT:     - Name:          a
1188; CHECK-NEXT:       TypeName:      int
1189; CHECK-NEXT:       Size:          4
1190; CHECK-NEXT:       Align:         4
1191; CHECK-NEXT:       ValueKind:     ByValue
1192; CHECK-NEXT:       AccQual:       Default
1193; CHECK-NEXT:     - Size:          8
1194; CHECK-NEXT:       Align:         8
1195; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1196; CHECK-NEXT:     - Size:          8
1197; CHECK-NEXT:       Align:         8
1198; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1199; CHECK-NEXT:     - Size:          8
1200; CHECK-NEXT:       Align:         8
1201; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1202; CHECK-NEXT:     - Size:          8
1203; CHECK-NEXT:       Align:         8
1204; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1205; CHECK-NEXT:       AddrSpaceQual: Global
1206; CHECK-NEXT:     - Size:          8
1207; CHECK-NEXT:       Align:         8
1208; CHECK-NEXT:       ValueKind:     HiddenNone
1209; CHECK-NEXT:       AddrSpaceQual: Global
1210; CHECK-NEXT:     - Size:          8
1211; CHECK-NEXT:       Align:         8
1212; CHECK-NEXT:       ValueKind:     HiddenNone
1213; CHECK-NEXT:       AddrSpaceQual: Global
1214; CHECK-NEXT:     - Size:          8
1215; CHECK-NEXT:       Align:         8
1216; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1217; CHECK-NEXT:       AddrSpaceQual: Global
1218define amdgpu_kernel void @test_vec_type_hint_short(i32 %a) #0
1219    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1220    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !30 {
1221  ret void
1222}
1223
1224; CHECK:      - Name:            test_vec_type_hint_long
1225; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_long@kd'
1226; CHECK-NEXT:   Language:        OpenCL C
1227; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1228; CHECK-NEXT:   Attrs:
1229; CHECK-NEXT:       VecTypeHint:   long
1230; CHECK-NEXT:   Args:
1231; CHECK-NEXT:     - Name:          a
1232; CHECK-NEXT:       TypeName:      int
1233; CHECK-NEXT:       Size:          4
1234; CHECK-NEXT:       Align:         4
1235; CHECK-NEXT:       ValueKind:     ByValue
1236; CHECK-NEXT:       AccQual:       Default
1237; CHECK-NEXT:     - Size:          8
1238; CHECK-NEXT:       Align:         8
1239; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1240; CHECK-NEXT:     - Size:          8
1241; CHECK-NEXT:       Align:         8
1242; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1243; CHECK-NEXT:     - Size:          8
1244; CHECK-NEXT:       Align:         8
1245; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1246; CHECK-NEXT:     - Size:          8
1247; CHECK-NEXT:       Align:         8
1248; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1249; CHECK-NEXT:       AddrSpaceQual: Global
1250; CHECK-NEXT:     - Size:          8
1251; CHECK-NEXT:       Align:         8
1252; CHECK-NEXT:       ValueKind:     HiddenNone
1253; CHECK-NEXT:       AddrSpaceQual: Global
1254; CHECK-NEXT:     - Size:          8
1255; CHECK-NEXT:       Align:         8
1256; CHECK-NEXT:       ValueKind:     HiddenNone
1257; CHECK-NEXT:       AddrSpaceQual: Global
1258; CHECK-NEXT:     - Size:          8
1259; CHECK-NEXT:       Align:         8
1260; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1261; CHECK-NEXT:       AddrSpaceQual: Global
1262define amdgpu_kernel void @test_vec_type_hint_long(i32 %a) #0
1263    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1264    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !31 {
1265  ret void
1266}
1267
1268; CHECK:      - Name:            test_vec_type_hint_unknown
1269; CHECK-NEXT:   SymbolName:      'test_vec_type_hint_unknown@kd'
1270; CHECK-NEXT:   Language:        OpenCL C
1271; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1272; CHECK-NEXT:   Attrs:
1273; CHECK-NEXT:       VecTypeHint:   unknown
1274; CHECK-NEXT:   Args:
1275; CHECK-NEXT:     - Name:          a
1276; CHECK-NEXT:       TypeName:      int
1277; CHECK-NEXT:       Size:          4
1278; CHECK-NEXT:       Align:         4
1279; CHECK-NEXT:       ValueKind:     ByValue
1280; CHECK-NEXT:       AccQual:       Default
1281; CHECK-NEXT:     - Size:          8
1282; CHECK-NEXT:       Align:         8
1283; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1284; CHECK-NEXT:     - Size:          8
1285; CHECK-NEXT:       Align:         8
1286; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1287; CHECK-NEXT:     - Size:          8
1288; CHECK-NEXT:       Align:         8
1289; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1290; CHECK-NEXT:     - Size:          8
1291; CHECK-NEXT:       Align:         8
1292; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1293; CHECK-NEXT:       AddrSpaceQual: Global
1294; CHECK-NEXT:     - Size:          8
1295; CHECK-NEXT:       Align:         8
1296; CHECK-NEXT:       ValueKind:     HiddenNone
1297; CHECK-NEXT:       AddrSpaceQual: Global
1298; CHECK-NEXT:     - Size:          8
1299; CHECK-NEXT:       Align:         8
1300; CHECK-NEXT:       ValueKind:     HiddenNone
1301; CHECK-NEXT:       AddrSpaceQual: Global
1302; CHECK-NEXT:     - Size:          8
1303; CHECK-NEXT:       Align:         8
1304; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1305; CHECK-NEXT:       AddrSpaceQual: Global
1306define amdgpu_kernel void @test_vec_type_hint_unknown(i32 %a) #0
1307    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1308    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !32 {
1309  ret void
1310}
1311
1312; CHECK:      - Name:            test_reqd_wgs_vec_type_hint
1313; CHECK-NEXT:   SymbolName:      'test_reqd_wgs_vec_type_hint@kd'
1314; CHECK-NEXT:   Language:        OpenCL C
1315; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1316; CHECK-NEXT:   Attrs:
1317; CHECK-NEXT:       ReqdWorkGroupSize: [ 1, 2, 4 ]
1318; CHECK-NEXT:       VecTypeHint:       int
1319; CHECK-NEXT:   Args:
1320; CHECK-NEXT:     - Name:              a
1321; CHECK-NEXT:       TypeName:          int
1322; CHECK-NEXT:       Size:              4
1323; CHECK-NEXT:       Align:             4
1324; CHECK-NEXT:       ValueKind:         ByValue
1325; CHECK-NEXT:       AccQual:           Default
1326; CHECK-NEXT:     - Size:              8
1327; CHECK-NEXT:       Align:             8
1328; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetX
1329; CHECK-NEXT:     - Size:              8
1330; CHECK-NEXT:       Align:             8
1331; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetY
1332; CHECK-NEXT:     - Size:              8
1333; CHECK-NEXT:       Align:             8
1334; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetZ
1335; CHECK-NEXT:     - Size:              8
1336; CHECK-NEXT:       Align:             8
1337; CHECK-NEXT:       ValueKind:         HiddenPrintfBuffer
1338; CHECK-NEXT:       AddrSpaceQual:     Global
1339; CHECK-NEXT:     - Size:              8
1340; CHECK-NEXT:       Align:             8
1341; CHECK-NEXT:       ValueKind:         HiddenNone
1342; CHECK-NEXT:       AddrSpaceQual:     Global
1343; CHECK-NEXT:     - Size:              8
1344; CHECK-NEXT:       Align:             8
1345; CHECK-NEXT:       ValueKind:         HiddenNone
1346; CHECK-NEXT:       AddrSpaceQual:     Global
1347; CHECK-NEXT:     - Size:              8
1348; CHECK-NEXT:       Align:             8
1349; CHECK-NEXT:       ValueKind:         HiddenMultiGridSyncArg
1350; CHECK-NEXT:       AddrSpaceQual:     Global
1351define amdgpu_kernel void @test_reqd_wgs_vec_type_hint(i32 %a) #0
1352    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1353    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !5
1354    !reqd_work_group_size !6 {
1355  ret void
1356}
1357
1358; CHECK:      - Name:            test_wgs_hint_vec_type_hint
1359; CHECK-NEXT:   SymbolName:      'test_wgs_hint_vec_type_hint@kd'
1360; CHECK-NEXT:   Language:        OpenCL C
1361; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1362; CHECK-NEXT:   Attrs:
1363; CHECK-NEXT:       WorkGroupSizeHint: [ 8, 16, 32 ]
1364; CHECK-NEXT:       VecTypeHint:       uint4
1365; CHECK-NEXT:   Args:
1366; CHECK-NEXT:     - Name:              a
1367; CHECK-NEXT:       TypeName:          int
1368; CHECK-NEXT:       Size:              4
1369; CHECK-NEXT:       Align:             4
1370; CHECK-NEXT:       ValueKind:         ByValue
1371; CHECK-NEXT:       AccQual:           Default
1372; CHECK-NEXT:     - Size:              8
1373; CHECK-NEXT:       Align:             8
1374; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetX
1375; CHECK-NEXT:     - Size:              8
1376; CHECK-NEXT:       Align:             8
1377; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetY
1378; CHECK-NEXT:     - Size:              8
1379; CHECK-NEXT:       Align:             8
1380; CHECK-NEXT:       ValueKind:         HiddenGlobalOffsetZ
1381; CHECK-NEXT:     - Size:              8
1382; CHECK-NEXT:       Align:             8
1383; CHECK-NEXT:       ValueKind:         HiddenPrintfBuffer
1384; CHECK-NEXT:       AddrSpaceQual:     Global
1385; CHECK-NEXT:     - Size:              8
1386; CHECK-NEXT:       Align:             8
1387; CHECK-NEXT:       ValueKind:         HiddenNone
1388; CHECK-NEXT:       AddrSpaceQual:     Global
1389; CHECK-NEXT:     - Size:              8
1390; CHECK-NEXT:       Align:             8
1391; CHECK-NEXT:       ValueKind:         HiddenNone
1392; CHECK-NEXT:       AddrSpaceQual:     Global
1393; CHECK-NEXT:     - Size:              8
1394; CHECK-NEXT:       Align:             8
1395; CHECK-NEXT:       ValueKind:         HiddenMultiGridSyncArg
1396; CHECK-NEXT:       AddrSpaceQual:     Global
1397define amdgpu_kernel void @test_wgs_hint_vec_type_hint(i32 %a) #0
1398    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
1399    !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !7
1400    !work_group_size_hint !8 {
1401  ret void
1402}
1403
1404; CHECK:      - Name:            test_arg_ptr_to_ptr
1405; CHECK-NEXT:   SymbolName:      'test_arg_ptr_to_ptr@kd'
1406; CHECK-NEXT:   Language:        OpenCL C
1407; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1408; CHECK-NEXT:   Args:
1409; CHECK-NEXT:     - Name:          a
1410; CHECK-NEXT:       TypeName:      'int  addrspace(5)* addrspace(5)*'
1411; CHECK-NEXT:       Size:          8
1412; CHECK-NEXT:       Align:         8
1413; CHECK-NEXT:       ValueKind:     GlobalBuffer
1414; CHECK-NEXT:       AddrSpaceQual: Global
1415; CHECK-NEXT:       AccQual:       Default
1416; CHECK-NEXT:     - Size:          8
1417; CHECK-NEXT:       Align:         8
1418; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1419; CHECK-NEXT:     - Size:          8
1420; CHECK-NEXT:       Align:         8
1421; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1422; CHECK-NEXT:     - Size:          8
1423; CHECK-NEXT:       Align:         8
1424; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1425; CHECK-NEXT:     - Size:          8
1426; CHECK-NEXT:       Align:         8
1427; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1428; CHECK-NEXT:       AddrSpaceQual: Global
1429; CHECK-NEXT:     - Size:          8
1430; CHECK-NEXT:       Align:         8
1431; CHECK-NEXT:       ValueKind:     HiddenNone
1432; CHECK-NEXT:       AddrSpaceQual: Global
1433; CHECK-NEXT:     - Size:          8
1434; CHECK-NEXT:       Align:         8
1435; CHECK-NEXT:       ValueKind:     HiddenNone
1436; CHECK-NEXT:       AddrSpaceQual: Global
1437; CHECK-NEXT:     - Size:          8
1438; CHECK-NEXT:       Align:         8
1439; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1440; CHECK-NEXT:       AddrSpaceQual: Global
1441define amdgpu_kernel void @test_arg_ptr_to_ptr(i32 addrspace(5)* addrspace(1)* %a) #0
1442    !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !80
1443    !kernel_arg_base_type !80 !kernel_arg_type_qual !4 {
1444  ret void
1445}
1446
1447; CHECK:      - Name:            test_arg_struct_contains_ptr
1448; CHECK-NEXT:   SymbolName:      'test_arg_struct_contains_ptr@kd'
1449; CHECK-NEXT:   Language:        OpenCL C
1450; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1451; CHECK-NEXT:   Args:
1452; CHECK-NEXT:     - Name:          a
1453; CHECK-NEXT:       TypeName:      struct B
1454; CHECK-NEXT:       Size:          8
1455; CHECK-NEXT:       Align:         8
1456; CHECK-NEXT:       ValueKind:     ByValue
1457; CHECK-NEXT:       AccQual:       Default
1458; CHECK-NEXT:     - Size:          8
1459; CHECK-NEXT:       Align:         8
1460; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1461; CHECK-NEXT:     - Size:          8
1462; CHECK-NEXT:       Align:         8
1463; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1464; CHECK-NEXT:     - Size:          8
1465; CHECK-NEXT:       Align:         8
1466; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1467; CHECK-NEXT:     - Size:          8
1468; CHECK-NEXT:       Align:         8
1469; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1470; CHECK-NEXT:       AddrSpaceQual: Global
1471define amdgpu_kernel void @test_arg_struct_contains_ptr(%struct.B %a) #0
1472    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !82
1473    !kernel_arg_base_type !82 !kernel_arg_type_qual !4 {
1474 ret void
1475}
1476
1477; CHECK:      - Name:            test_arg_vector_of_ptr
1478; CHECK-NEXT:   SymbolName:      'test_arg_vector_of_ptr@kd'
1479; CHECK-NEXT:   Language:        OpenCL C
1480; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1481; CHECK-NEXT:   Args:
1482; CHECK-NEXT:     - Name:          a
1483; CHECK-NEXT:       TypeName:      'global int addrspace(5)* __attribute__((ext_vector_type(2)))'
1484; CHECK-NEXT:       Size:          16
1485; CHECK-NEXT:       Align:         16
1486; CHECK-NEXT:       ValueKind:     ByValue
1487; CHECK-NEXT:       AccQual:       Default
1488; CHECK-NEXT:     - Size:          8
1489; CHECK-NEXT:       Align:         8
1490; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1491; CHECK-NEXT:     - Size:          8
1492; CHECK-NEXT:       Align:         8
1493; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1494; CHECK-NEXT:     - Size:          8
1495; CHECK-NEXT:       Align:         8
1496; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1497; CHECK-NEXT:     - Size:          8
1498; CHECK-NEXT:       Align:         8
1499; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1500; CHECK-NEXT:       AddrSpaceQual: Global
1501; CHECK-NEXT:     - Size:          8
1502; CHECK-NEXT:       Align:         8
1503; CHECK-NEXT:       ValueKind:     HiddenNone
1504; CHECK-NEXT:       AddrSpaceQual: Global
1505; CHECK-NEXT:     - Size:          8
1506; CHECK-NEXT:       Align:         8
1507; CHECK-NEXT:       ValueKind:     HiddenNone
1508; CHECK-NEXT:       AddrSpaceQual: Global
1509; CHECK-NEXT:     - Size:          8
1510; CHECK-NEXT:       Align:         8
1511; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1512; CHECK-NEXT:       AddrSpaceQual: Global
1513define amdgpu_kernel void @test_arg_vector_of_ptr(<2 x i32 addrspace(1)*> %a) #0
1514    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !83
1515    !kernel_arg_base_type !83 !kernel_arg_type_qual !4 {
1516  ret void
1517}
1518
1519; CHECK:      - Name:            test_arg_unknown_builtin_type
1520; CHECK-NEXT:   SymbolName:      'test_arg_unknown_builtin_type@kd'
1521; CHECK-NEXT:   Language:        OpenCL C
1522; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1523; CHECK-NEXT:   Args:
1524; CHECK-NEXT:     - Name:          a
1525; CHECK-NEXT:       TypeName:      clk_event_t
1526; CHECK-NEXT:       Size:          8
1527; CHECK-NEXT:       Align:         8
1528; CHECK-NEXT:       ValueKind:     GlobalBuffer
1529; CHECK-NEXT:       AddrSpaceQual: Global
1530; CHECK-NEXT:       AccQual:       Default
1531; CHECK-NEXT:     - Size:          8
1532; CHECK-NEXT:       Align:         8
1533; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1534; CHECK-NEXT:     - Size:          8
1535; CHECK-NEXT:       Align:         8
1536; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1537; CHECK-NEXT:     - Size:          8
1538; CHECK-NEXT:       Align:         8
1539; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1540; CHECK-NEXT:     - Size:          8
1541; CHECK-NEXT:       Align:         8
1542; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1543; CHECK-NEXT:       AddrSpaceQual: Global
1544; CHECK-NEXT:     - Size:          8
1545; CHECK-NEXT:       Align:         8
1546; CHECK-NEXT:       ValueKind:     HiddenNone
1547; CHECK-NEXT:       AddrSpaceQual: Global
1548; CHECK-NEXT:     - Size:          8
1549; CHECK-NEXT:       Align:         8
1550; CHECK-NEXT:       ValueKind:     HiddenNone
1551; CHECK-NEXT:       AddrSpaceQual: Global
1552; CHECK-NEXT:     - Size:          8
1553; CHECK-NEXT:       Align:         8
1554; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1555; CHECK-NEXT:       AddrSpaceQual: Global
1556define amdgpu_kernel void @test_arg_unknown_builtin_type(
1557    %opencl.clk_event_t addrspace(1)* %a) #0
1558    !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !84
1559    !kernel_arg_base_type !84 !kernel_arg_type_qual !4 {
1560  ret void
1561}
1562
1563; CHECK:      - Name:            test_pointee_align
1564; CHECK-NEXT:   SymbolName:      'test_pointee_align@kd'
1565; CHECK-NEXT:   Language:        OpenCL C
1566; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1567; CHECK-NEXT:   Args:
1568; CHECK-NEXT:     - Name:          a
1569; CHECK-NEXT:       TypeName:      'long  addrspace(5)*'
1570; CHECK-NEXT:       Size:          8
1571; CHECK-NEXT:       Align:         8
1572; CHECK-NEXT:       ValueKind:     GlobalBuffer
1573; CHECK-NEXT:       AddrSpaceQual: Global
1574; CHECK-NEXT:       AccQual:       Default
1575; CHECK-NEXT:     - Name:          b
1576; CHECK-NEXT:       TypeName:      'char  addrspace(5)*'
1577; CHECK-NEXT:       Size:          4
1578; CHECK-NEXT:       Align:         4
1579; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1580; CHECK-NEXT:       PointeeAlign:  1
1581; CHECK-NEXT:       AddrSpaceQual: Local
1582; CHECK-NEXT:       AccQual:       Default
1583; CHECK-NEXT:     - Name:          c
1584; CHECK-NEXT:       TypeName:      'char2  addrspace(5)*'
1585; CHECK-NEXT:       Size:          4
1586; CHECK-NEXT:       Align:         4
1587; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1588; CHECK-NEXT:       PointeeAlign:  2
1589; CHECK-NEXT:       AddrSpaceQual: Local
1590; CHECK-NEXT:       AccQual:       Default
1591; CHECK-NEXT:     - Name:          d
1592; CHECK-NEXT:       TypeName:      'char3  addrspace(5)*'
1593; CHECK-NEXT:       Size:          4
1594; CHECK-NEXT:       Align:         4
1595; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1596; CHECK-NEXT:       PointeeAlign:  4
1597; CHECK-NEXT:       AddrSpaceQual: Local
1598; CHECK-NEXT:       AccQual:       Default
1599; CHECK-NEXT:     - Name:          e
1600; CHECK-NEXT:       TypeName:      'char4  addrspace(5)*'
1601; CHECK-NEXT:       Size:          4
1602; CHECK-NEXT:       Align:         4
1603; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1604; CHECK-NEXT:       PointeeAlign:  4
1605; CHECK-NEXT:       AddrSpaceQual: Local
1606; CHECK-NEXT:       AccQual:       Default
1607; CHECK-NEXT:     - Name:          f
1608; CHECK-NEXT:       TypeName:      'char8  addrspace(5)*'
1609; CHECK-NEXT:       Size:          4
1610; CHECK-NEXT:       Align:         4
1611; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1612; CHECK-NEXT:       PointeeAlign:  8
1613; CHECK-NEXT:       AddrSpaceQual: Local
1614; CHECK-NEXT:       AccQual:       Default
1615; CHECK-NEXT:     - Name:          g
1616; CHECK-NEXT:       TypeName:      'char16  addrspace(5)*'
1617; CHECK-NEXT:       Size:          4
1618; CHECK-NEXT:       Align:         4
1619; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1620; CHECK-NEXT:       PointeeAlign:  16
1621; CHECK-NEXT:       AddrSpaceQual: Local
1622; CHECK-NEXT:       AccQual:       Default
1623; CHECK-NEXT:     - Name:          h
1624; CHECK-NEXT:       Size:          4
1625; CHECK-NEXT:       Align:         4
1626; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1627; CHECK-NEXT:       PointeeAlign:  1
1628; CHECK-NEXT:       AddrSpaceQual: Local
1629; CHECK-NEXT:     - Size:          8
1630; CHECK-NEXT:       Align:         8
1631; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1632; CHECK-NEXT:     - Size:          8
1633; CHECK-NEXT:       Align:         8
1634; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1635; CHECK-NEXT:     - Size:          8
1636; CHECK-NEXT:       Align:         8
1637; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1638; CHECK-NEXT:     - Size:          8
1639; CHECK-NEXT:       Align:         8
1640; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1641; CHECK-NEXT:       AddrSpaceQual: Global
1642; CHECK-NEXT:     - Size:          8
1643; CHECK-NEXT:       Align:         8
1644; CHECK-NEXT:       ValueKind:     HiddenNone
1645; CHECK-NEXT:       AddrSpaceQual: Global
1646; CHECK-NEXT:     - Size:          8
1647; CHECK-NEXT:       Align:         8
1648; CHECK-NEXT:       ValueKind:     HiddenNone
1649; CHECK-NEXT:       AddrSpaceQual: Global
1650; CHECK-NEXT:     - Size:          8
1651; CHECK-NEXT:       Align:         8
1652; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1653; CHECK-NEXT:       AddrSpaceQual: Global
1654define amdgpu_kernel void @test_pointee_align(i64 addrspace(1)* %a,
1655                                              i8 addrspace(3)* %b,
1656                                              <2 x i8> addrspace(3)* %c,
1657                                              <3 x i8> addrspace(3)* %d,
1658                                              <4 x i8> addrspace(3)* %e,
1659                                              <8 x i8> addrspace(3)* %f,
1660                                              <16 x i8> addrspace(3)* %g,
1661                                              {} addrspace(3)* %h) #0
1662    !kernel_arg_addr_space !91 !kernel_arg_access_qual !92 !kernel_arg_type !93
1663    !kernel_arg_base_type !93 !kernel_arg_type_qual !94 {
1664  ret void
1665}
1666
1667; CHECK:      - Name:            test_pointee_align_attribute
1668; CHECK-NEXT:   SymbolName:      'test_pointee_align_attribute@kd'
1669; CHECK-NEXT:   Language:        OpenCL C
1670; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1671; CHECK-NEXT:   Args:
1672; CHECK-NEXT:     - Name:          a
1673; CHECK-NEXT:       TypeName:      'long  addrspace(5)*'
1674; CHECK-NEXT:       Size:          8
1675; CHECK-NEXT:       Align:         8
1676; CHECK-NEXT:       ValueKind:     GlobalBuffer
1677; CHECK-NEXT:       AddrSpaceQual: Global
1678; CHECK-NEXT:       AccQual:       Default
1679; CHECK-NEXT:     - Name:          b
1680; CHECK-NEXT:       TypeName:      'char  addrspace(5)*'
1681; CHECK-NEXT:       Size:          4
1682; CHECK-NEXT:       Align:         4
1683; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1684; CHECK-NEXT:       PointeeAlign:  8
1685; CHECK-NEXT:       AddrSpaceQual: Local
1686; CHECK-NEXT:       AccQual:       Default
1687; CHECK-NEXT:     - Name:          c
1688; CHECK-NEXT:       TypeName:      'char2  addrspace(5)*'
1689; CHECK-NEXT:       Size:          4
1690; CHECK-NEXT:       Align:         4
1691; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1692; CHECK-NEXT:       PointeeAlign:  32
1693; CHECK-NEXT:       AddrSpaceQual: Local
1694; CHECK-NEXT:       AccQual:       Default
1695; CHECK-NEXT:     - Name:          d
1696; CHECK-NEXT:       TypeName:      'char3  addrspace(5)*'
1697; CHECK-NEXT:       Size:          4
1698; CHECK-NEXT:       Align:         4
1699; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1700; CHECK-NEXT:       PointeeAlign:  64
1701; CHECK-NEXT:       AddrSpaceQual: Local
1702; CHECK-NEXT:       AccQual:       Default
1703; CHECK-NEXT:     - Name:          e
1704; CHECK-NEXT:       TypeName:      'char4  addrspace(5)*'
1705; CHECK-NEXT:       Size:          4
1706; CHECK-NEXT:       Align:         4
1707; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1708; CHECK-NEXT:       PointeeAlign:  256
1709; CHECK-NEXT:       AddrSpaceQual: Local
1710; CHECK-NEXT:       AccQual:       Default
1711; CHECK-NEXT:     - Name:          f
1712; CHECK-NEXT:       TypeName:      'char8  addrspace(5)*'
1713; CHECK-NEXT:       Size:          4
1714; CHECK-NEXT:       Align:         4
1715; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1716; CHECK-NEXT:       PointeeAlign:  128
1717; CHECK-NEXT:       AddrSpaceQual: Local
1718; CHECK-NEXT:       AccQual:       Default
1719; CHECK-NEXT:     - Name:          g
1720; CHECK-NEXT:       TypeName:      'char16  addrspace(5)*'
1721; CHECK-NEXT:       Size:          4
1722; CHECK-NEXT:       Align:         4
1723; CHECK-NEXT:       ValueKind:     DynamicSharedPointer
1724; CHECK-NEXT:       PointeeAlign:  1024
1725; CHECK-NEXT:       AddrSpaceQual: Local
1726; CHECK-NEXT:       AccQual:       Default
1727; CHECK-NEXT:      - Name:            h
1728; CHECK-NEXT:        Size:            4
1729; CHECK-NEXT:        Align:           4
1730; CHECK-NEXT:        ValueKind:       DynamicSharedPointer
1731; CHECK-NEXT:        PointeeAlign:    16
1732; CHECK-NEXT:        AddrSpaceQual:   Local
1733; CHECK-NEXT:     - Size:          8
1734; CHECK-NEXT:       Align:         8
1735; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1736; CHECK-NEXT:     - Size:          8
1737; CHECK-NEXT:       Align:         8
1738; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1739; CHECK-NEXT:     - Size:          8
1740; CHECK-NEXT:       Align:         8
1741; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1742; CHECK-NEXT:     - Size:          8
1743; CHECK-NEXT:       Align:         8
1744; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1745; CHECK-NEXT:       AddrSpaceQual: Global
1746; CHECK-NEXT:     - Size:          8
1747; CHECK-NEXT:       Align:         8
1748; CHECK-NEXT:       ValueKind:     HiddenNone
1749; CHECK-NEXT:       AddrSpaceQual: Global
1750; CHECK-NEXT:     - Size:          8
1751; CHECK-NEXT:       Align:         8
1752; CHECK-NEXT:       ValueKind:     HiddenNone
1753; CHECK-NEXT:       AddrSpaceQual: Global
1754; CHECK-NEXT:     - Size:          8
1755; CHECK-NEXT:       Align:         8
1756; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1757; CHECK-NEXT:       AddrSpaceQual: Global
1758define amdgpu_kernel void @test_pointee_align_attribute(i64 addrspace(1)* align 16 %a,
1759                                                        i8 addrspace(3)* align 8 %b,
1760                                                        <2 x i8> addrspace(3)* align 32 %c,
1761                                                        <3 x i8> addrspace(3)* align 64 %d,
1762                                                        <4 x i8> addrspace(3)* align 256 %e,
1763                                                        <8 x i8> addrspace(3)* align 128 %f,
1764                                                        <16 x i8> addrspace(3)* align 1024 %g,
1765                                                        {} addrspace(3)* align 16 %h) #0
1766    !kernel_arg_addr_space !91 !kernel_arg_access_qual !92 !kernel_arg_type !93
1767    !kernel_arg_base_type !93 !kernel_arg_type_qual !94 {
1768  ret void
1769}
1770
1771
1772; CHECK:      - Name:            __test_block_invoke_kernel
1773; CHECK-NEXT:   SymbolName:      '__test_block_invoke_kernel@kd'
1774; CHECK-NEXT:   Language:        OpenCL C
1775; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1776; CHECK-NEXT:   Attrs:
1777; CHECK-NEXT:       RuntimeHandle: __test_block_invoke_kernel_runtime_handle
1778; CHECK-NEXT:   Args:
1779; CHECK-NEXT:     - Name:          arg
1780; CHECK-NEXT:       TypeName:      __block_literal
1781; CHECK-NEXT:       Size:          25
1782; CHECK-NEXT:       Align:         1
1783; CHECK-NEXT:       ValueKind:     ByValue
1784; CHECK-NEXT:       AccQual:       Default
1785; CHECK-NEXT:     - Size:          8
1786; CHECK-NEXT:       Align:         8
1787; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1788; CHECK-NEXT:     - Size:          8
1789; CHECK-NEXT:       Align:         8
1790; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1791; CHECK-NEXT:     - Size:          8
1792; CHECK-NEXT:       Align:         8
1793; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1794; CHECK-NEXT:     - Size:          8
1795; CHECK-NEXT:       Align:         8
1796; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1797; CHECK-NEXT:       AddrSpaceQual: Global
1798; CHECK-NEXT:     - Size:          8
1799; CHECK-NEXT:       Align:         8
1800; CHECK-NEXT:       ValueKind:     HiddenNone
1801; CHECK-NEXT:       AddrSpaceQual: Global
1802; CHECK-NEXT:     - Size:          8
1803; CHECK-NEXT:       Align:         8
1804; CHECK-NEXT:       ValueKind:     HiddenNone
1805; CHECK-NEXT:       AddrSpaceQual: Global
1806; CHECK-NEXT:     - Size:          8
1807; CHECK-NEXT:       Align:         8
1808; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1809; CHECK-NEXT:       AddrSpaceQual: Global
1810define amdgpu_kernel void @__test_block_invoke_kernel(
1811    <{ i32, i32, i8*, i8 addrspace(1)*, i8 }> %arg) #1
1812    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !110
1813    !kernel_arg_base_type !110 !kernel_arg_type_qual !4 {
1814  ret void
1815}
1816
1817; CHECK:      - Name:            test_enqueue_kernel_caller
1818; CHECK-NEXT:   SymbolName:      'test_enqueue_kernel_caller@kd'
1819; CHECK-NEXT:   Language:        OpenCL C
1820; CHECK-NEXT:   LanguageVersion: [ 2, 0 ]
1821; CHECK-NEXT:   Args:
1822; CHECK-NEXT:     - Name:          a
1823; CHECK-NEXT:       TypeName:      char
1824; CHECK-NEXT:       Size:          1
1825; CHECK-NEXT:       Align:         1
1826; CHECK-NEXT:       ValueKind:     ByValue
1827; CHECK-NEXT:       AccQual:       Default
1828; CHECK-NEXT:     - Size:          8
1829; CHECK-NEXT:       Align:         8
1830; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetX
1831; CHECK-NEXT:     - Size:          8
1832; CHECK-NEXT:       Align:         8
1833; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetY
1834; CHECK-NEXT:     - Size:          8
1835; CHECK-NEXT:       Align:         8
1836; CHECK-NEXT:       ValueKind:     HiddenGlobalOffsetZ
1837; CHECK-NEXT:     - Size:          8
1838; CHECK-NEXT:       Align:         8
1839; CHECK-NEXT:       ValueKind:     HiddenPrintfBuffer
1840; CHECK-NEXT:       AddrSpaceQual: Global
1841; CHECK-NEXT:     - Size:          8
1842; CHECK-NEXT:       Align:         8
1843; CHECK-NEXT:       ValueKind:     HiddenDefaultQueue
1844; CHECK-NEXT:       AddrSpaceQual: Global
1845; CHECK-NEXT:     - Size:          8
1846; CHECK-NEXT:       Align:         8
1847; CHECK-NEXT:       ValueKind:     HiddenCompletionAction
1848; CHECK-NEXT:       AddrSpaceQual: Global
1849; CHECK-NEXT:     - Size:          8
1850; CHECK-NEXT:       Align:         8
1851; CHECK-NEXT:       ValueKind:     HiddenMultiGridSyncArg
1852; CHECK-NEXT:       AddrSpaceQual: Global
1853define amdgpu_kernel void @test_enqueue_kernel_caller(i8 %a) #2
1854    !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !9
1855    !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
1856  ret void
1857}
1858
1859; CHECK: - Name:            unknown_addrspace_kernarg
1860; CHECK: Args:
1861; CHECK-NEXT: - Name:            ptr
1862; CHECK-NEXT: Size:            8
1863; CHECK-NEXT: Align:           8
1864; CHECK-NEXT: ValueKind:       GlobalBuffer
1865define amdgpu_kernel void @unknown_addrspace_kernarg(i32 addrspace(12345)* %ptr) #0 {
1866  ret void
1867}
1868
1869attributes #0 = { "amdgpu-implicitarg-num-bytes"="56" }
1870attributes #1 = { "amdgpu-implicitarg-num-bytes"="56" "runtime-handle"="__test_block_invoke_kernel_runtime_handle" }
1871attributes #2 = { "amdgpu-implicitarg-num-bytes"="56" "calls-enqueue-kernel" }
1872
1873!llvm.printf.fmts = !{!100, !101}
1874
1875!1 = !{i32 0}
1876!2 = !{!"none"}
1877!3 = !{!"int"}
1878!4 = !{!""}
1879!5 = !{i32 undef, i32 1}
1880!6 = !{i32 1, i32 2, i32 4}
1881!7 = !{<4 x i32> undef, i32 0}
1882!8 = !{i32 8, i32 16, i32 32}
1883!9 = !{!"char"}
1884!10 = !{!"ushort2"}
1885!11 = !{!"int3"}
1886!12 = !{!"ulong4"}
1887!13 = !{!"half8"}
1888!14 = !{!"float16"}
1889!15 = !{!"double16"}
1890!16 = !{!"int  addrspace(5)*"}
1891!17 = !{!"image2d_t"}
1892!18 = !{!"sampler_t"}
1893!19 = !{!"queue_t"}
1894!20 = !{!"struct A"}
1895!21 = !{!"i128"}
1896!22 = !{i32 0, i32 0, i32 0}
1897!23 = !{!"none", !"none", !"none"}
1898!24 = !{!"int", !"short2", !"char3"}
1899!25 = !{!"", !"", !""}
1900!26 = !{half undef, i32 1}
1901!27 = !{float undef, i32 1}
1902!28 = !{double undef, i32 1}
1903!29 = !{i8 undef, i32 1}
1904!30 = !{i16 undef, i32 1}
1905!31 = !{i64 undef, i32 1}
1906!32 = !{i32  addrspace(5)*undef, i32 1}
1907!50 = !{i32 1, i32 2, i32 3}
1908!51 = !{!"int  addrspace(5)*", !"int  addrspace(5)*", !"int  addrspace(5)*"}
1909!60 = !{i32 1, i32 1, i32 1}
1910!61 = !{!"read_only", !"write_only", !"read_write"}
1911!62 = !{!"image1d_t", !"image2d_t", !"image3d_t"}
1912!70 = !{!"volatile", !"const restrict", !"pipe"}
1913!80 = !{!"int  addrspace(5)* addrspace(5)*"}
1914!81 = !{i32 1}
1915!82 = !{!"struct B"}
1916!83 = !{!"global int addrspace(5)* __attribute__((ext_vector_type(2)))"}
1917!84 = !{!"clk_event_t"}
1918!opencl.ocl.version = !{!90}
1919!90 = !{i32 2, i32 0}
1920!91 = !{i32 0, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3}
1921!92 = !{!"none", !"none", !"none", !"none", !"none", !"none", !"none"}
1922!93 = !{!"long  addrspace(5)*", !"char  addrspace(5)*", !"char2  addrspace(5)*", !"char3  addrspace(5)*", !"char4  addrspace(5)*", !"char8  addrspace(5)*", !"char16  addrspace(5)*"}
1923!94 = !{!"", !"", !"", !"", !"", !"", !""}
1924!100 = !{!"1:1:4:%d\5Cn"}
1925!101 = !{!"2:1:8:%g\5Cn"}
1926!110 = !{!"__block_literal"}
1927!111 = !{!"char", !"char"}
1928; PARSER: AMDGPU HSA Metadata Parser Test: PASS
1929