blob: 997758ed9388c2270f2cec4eb0e99e283933fdc6 [file] [log] [blame]
Konstantin Zhuravlyov7498cd62017-03-22 22:32:22 +00001; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -filetype=obj -o - < %s | llvm-readobj -amdgpu-code-object-metadata -elf-output-style=GNU -notes | FileCheck --check-prefix=CHECK --check-prefix=GFX700 --check-prefix=NOTES %s
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx800 -filetype=obj -o - < %s | llvm-readobj -amdgpu-code-object-metadata -elf-output-style=GNU -notes | FileCheck --check-prefix=CHECK --check-prefix=GFX800 --check-prefix=NOTES %s
3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -filetype=obj -o - < %s | llvm-readobj -amdgpu-code-object-metadata -elf-output-style=GNU -notes | FileCheck --check-prefix=CHECK --check-prefix=GFX900 --check-prefix=NOTES %s
4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -amdgpu-dump-comd -amdgpu-verify-comd -filetype=obj -o - < %s 2>&1 | FileCheck --check-prefix=PARSER %s
5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx800 -amdgpu-dump-comd -amdgpu-verify-comd -filetype=obj -o - < %s 2>&1 | FileCheck --check-prefix=PARSER %s
6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -amdgpu-dump-comd -amdgpu-verify-comd -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; CHECK: ---
18; CHECK: Version: [ 1, 0 ]
Konstantin Zhuravlyov7498cd62017-03-22 22:32:22 +000019; CHECK: Printf: [ '1:1:4:%d\n', '2:1:8:%g\n' ]
Konstantin Zhuravlyov7498cd62017-03-22 22:32:22 +000020; CHECK: Kernels:
21
22; CHECK: - Name: test_char
23; CHECK-NEXT: Language: OpenCL C
24; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
25; CHECK-NEXT: Args:
26; CHECK-NEXT: - Size: 1
27; CHECK-NEXT: Align: 1
28; CHECK-NEXT: Kind: ByValue
29; CHECK-NEXT: ValueType: I8
30; CHECK-NEXT: AccQual: Default
31; CHECK-NEXT: TypeName: char
32; CHECK-NEXT: - Size: 8
33; CHECK-NEXT: Align: 8
34; CHECK-NEXT: Kind: HiddenGlobalOffsetX
35; CHECK-NEXT: ValueType: I64
36; CHECK-NEXT: - Size: 8
37; CHECK-NEXT: Align: 8
38; CHECK-NEXT: Kind: HiddenGlobalOffsetY
39; CHECK-NEXT: ValueType: I64
40; CHECK-NEXT: - Size: 8
41; CHECK-NEXT: Align: 8
42; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
43; CHECK-NEXT: ValueType: I64
44; CHECK-NEXT: - Size: 8
45; CHECK-NEXT: Align: 8
46; CHECK-NEXT: Kind: HiddenPrintfBuffer
47; CHECK-NEXT: ValueType: I8
48; CHECK-NEXT: AddrSpaceQual: Global
49define amdgpu_kernel void @test_char(i8 %a)
50 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !9
51 !kernel_arg_base_type !9 !kernel_arg_type_qual !4 {
52 ret void
53}
54
55; CHECK: - Name: test_ushort2
56; CHECK-NEXT: Language: OpenCL C
57; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
58; CHECK-NEXT: Args:
59; CHECK-NEXT: - Size: 4
60; CHECK-NEXT: Align: 4
61; CHECK-NEXT: Kind: ByValue
62; CHECK-NEXT: ValueType: U16
63; CHECK-NEXT: AccQual: Default
64; CHECK-NEXT: TypeName: ushort2
65; CHECK-NEXT: - Size: 8
66; CHECK-NEXT: Align: 8
67; CHECK-NEXT: Kind: HiddenGlobalOffsetX
68; CHECK-NEXT: ValueType: I64
69; CHECK-NEXT: - Size: 8
70; CHECK-NEXT: Align: 8
71; CHECK-NEXT: Kind: HiddenGlobalOffsetY
72; CHECK-NEXT: ValueType: I64
73; CHECK-NEXT: - Size: 8
74; CHECK-NEXT: Align: 8
75; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
76; CHECK-NEXT: ValueType: I64
77; CHECK-NEXT: - Size: 8
78; CHECK-NEXT: Align: 8
79; CHECK-NEXT: Kind: HiddenPrintfBuffer
80; CHECK-NEXT: ValueType: I8
81; CHECK-NEXT: AddrSpaceQual: Global
82define amdgpu_kernel void @test_ushort2(<2 x i16> %a)
83 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !10
84 !kernel_arg_base_type !10 !kernel_arg_type_qual !4 {
85 ret void
86}
87
88; CHECK: - Name: test_int3
89; CHECK-NEXT: Language: OpenCL C
90; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
91; CHECK-NEXT: Args:
92; CHECK-NEXT: - Size: 16
93; CHECK-NEXT: Align: 16
94; CHECK-NEXT: Kind: ByValue
95; CHECK-NEXT: ValueType: I32
96; CHECK-NEXT: AccQual: Default
97; CHECK-NEXT: TypeName: int3
98; CHECK-NEXT: - Size: 8
99; CHECK-NEXT: Align: 8
100; CHECK-NEXT: Kind: HiddenGlobalOffsetX
101; CHECK-NEXT: ValueType: I64
102; CHECK-NEXT: - Size: 8
103; CHECK-NEXT: Align: 8
104; CHECK-NEXT: Kind: HiddenGlobalOffsetY
105; CHECK-NEXT: ValueType: I64
106; CHECK-NEXT: - Size: 8
107; CHECK-NEXT: Align: 8
108; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
109; CHECK-NEXT: ValueType: I64
110; CHECK-NEXT: - Size: 8
111; CHECK-NEXT: Align: 8
112; CHECK-NEXT: Kind: HiddenPrintfBuffer
113; CHECK-NEXT: ValueType: I8
114; CHECK-NEXT: AddrSpaceQual: Global
115define amdgpu_kernel void @test_int3(<3 x i32> %a)
116 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !11
117 !kernel_arg_base_type !11 !kernel_arg_type_qual !4 {
118 ret void
119}
120
121; CHECK: - Name: test_ulong4
122; CHECK-NEXT: Language: OpenCL C
123; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
124; CHECK-NEXT: Args:
125; CHECK-NEXT: - Size: 32
126; CHECK-NEXT: Align: 32
127; CHECK-NEXT: Kind: ByValue
128; CHECK-NEXT: ValueType: U64
129; CHECK-NEXT: AccQual: Default
130; CHECK-NEXT: TypeName: ulong4
131; CHECK-NEXT: - Size: 8
132; CHECK-NEXT: Align: 8
133; CHECK-NEXT: Kind: HiddenGlobalOffsetX
134; CHECK-NEXT: ValueType: I64
135; CHECK-NEXT: - Size: 8
136; CHECK-NEXT: Align: 8
137; CHECK-NEXT: Kind: HiddenGlobalOffsetY
138; CHECK-NEXT: ValueType: I64
139; CHECK-NEXT: - Size: 8
140; CHECK-NEXT: Align: 8
141; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
142; CHECK-NEXT: ValueType: I64
143; CHECK-NEXT: - Size: 8
144; CHECK-NEXT: Align: 8
145; CHECK-NEXT: Kind: HiddenPrintfBuffer
146; CHECK-NEXT: ValueType: I8
147; CHECK-NEXT: AddrSpaceQual: Global
148define amdgpu_kernel void @test_ulong4(<4 x i64> %a)
149 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !12
150 !kernel_arg_base_type !12 !kernel_arg_type_qual !4 {
151 ret void
152}
153
154; CHECK: - Name: test_half8
155; CHECK-NEXT: Language: OpenCL C
156; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
157; CHECK-NEXT: Args:
158; CHECK-NEXT: - Size: 16
159; CHECK-NEXT: Align: 16
160; CHECK-NEXT: Kind: ByValue
161; CHECK-NEXT: ValueType: F16
162; CHECK-NEXT: AccQual: Default
163; CHECK-NEXT: TypeName: half8
164; CHECK-NEXT: - Size: 8
165; CHECK-NEXT: Align: 8
166; CHECK-NEXT: Kind: HiddenGlobalOffsetX
167; CHECK-NEXT: ValueType: I64
168; CHECK-NEXT: - Size: 8
169; CHECK-NEXT: Align: 8
170; CHECK-NEXT: Kind: HiddenGlobalOffsetY
171; CHECK-NEXT: ValueType: I64
172; CHECK-NEXT: - Size: 8
173; CHECK-NEXT: Align: 8
174; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
175; CHECK-NEXT: ValueType: I64
176; CHECK-NEXT: - Size: 8
177; CHECK-NEXT: Align: 8
178; CHECK-NEXT: Kind: HiddenPrintfBuffer
179; CHECK-NEXT: ValueType: I8
180; CHECK-NEXT: AddrSpaceQual: Global
181define amdgpu_kernel void @test_half8(<8 x half> %a)
182 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !13
183 !kernel_arg_base_type !13 !kernel_arg_type_qual !4 {
184 ret void
185}
186
187; CHECK: - Name: test_float16
188; CHECK-NEXT: Language: OpenCL C
189; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
190; CHECK-NEXT: Args:
191; CHECK-NEXT: - Size: 64
192; CHECK-NEXT: Align: 64
193; CHECK-NEXT: Kind: ByValue
194; CHECK-NEXT: ValueType: F32
195; CHECK-NEXT: AccQual: Default
196; CHECK-NEXT: TypeName: float16
197; CHECK-NEXT: - Size: 8
198; CHECK-NEXT: Align: 8
199; CHECK-NEXT: Kind: HiddenGlobalOffsetX
200; CHECK-NEXT: ValueType: I64
201; CHECK-NEXT: - Size: 8
202; CHECK-NEXT: Align: 8
203; CHECK-NEXT: Kind: HiddenGlobalOffsetY
204; CHECK-NEXT: ValueType: I64
205; CHECK-NEXT: - Size: 8
206; CHECK-NEXT: Align: 8
207; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
208; CHECK-NEXT: ValueType: I64
209; CHECK-NEXT: - Size: 8
210; CHECK-NEXT: Align: 8
211; CHECK-NEXT: Kind: HiddenPrintfBuffer
212; CHECK-NEXT: ValueType: I8
213; CHECK-NEXT: AddrSpaceQual: Global
214define amdgpu_kernel void @test_float16(<16 x float> %a)
215 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !14
216 !kernel_arg_base_type !14 !kernel_arg_type_qual !4 {
217 ret void
218}
219
220; CHECK: - Name: test_double16
221; CHECK-NEXT: Language: OpenCL C
222; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
223; CHECK-NEXT: Args:
224; CHECK-NEXT: - Size: 128
225; CHECK-NEXT: Align: 128
226; CHECK-NEXT: Kind: ByValue
227; CHECK-NEXT: ValueType: F64
228; CHECK-NEXT: AccQual: Default
229; CHECK-NEXT: TypeName: double16
230; CHECK-NEXT: - Size: 8
231; CHECK-NEXT: Align: 8
232; CHECK-NEXT: Kind: HiddenGlobalOffsetX
233; CHECK-NEXT: ValueType: I64
234; CHECK-NEXT: - Size: 8
235; CHECK-NEXT: Align: 8
236; CHECK-NEXT: Kind: HiddenGlobalOffsetY
237; CHECK-NEXT: ValueType: I64
238; CHECK-NEXT: - Size: 8
239; CHECK-NEXT: Align: 8
240; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
241; CHECK-NEXT: ValueType: I64
242; CHECK-NEXT: - Size: 8
243; CHECK-NEXT: Align: 8
244; CHECK-NEXT: Kind: HiddenPrintfBuffer
245; CHECK-NEXT: ValueType: I8
246; CHECK-NEXT: AddrSpaceQual: Global
247define amdgpu_kernel void @test_double16(<16 x double> %a)
248 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !15
249 !kernel_arg_base_type !15 !kernel_arg_type_qual !4 {
250 ret void
251}
252
253; CHECK: - Name: test_pointer
254; CHECK-NEXT: Language: OpenCL C
255; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
256; CHECK-NEXT: Args:
257; CHECK-NEXT: - Size: 8
258; CHECK-NEXT: Align: 8
259; CHECK-NEXT: Kind: GlobalBuffer
260; CHECK-NEXT: ValueType: I32
261; CHECK-NEXT: AccQual: Default
262; CHECK-NEXT: AddrSpaceQual: Global
263; CHECK-NEXT: TypeName: 'int *'
264; CHECK-NEXT: - Size: 8
265; CHECK-NEXT: Align: 8
266; CHECK-NEXT: Kind: HiddenGlobalOffsetX
267; CHECK-NEXT: ValueType: I64
268; CHECK-NEXT: - Size: 8
269; CHECK-NEXT: Align: 8
270; CHECK-NEXT: Kind: HiddenGlobalOffsetY
271; CHECK-NEXT: ValueType: I64
272; CHECK-NEXT: - Size: 8
273; CHECK-NEXT: Align: 8
274; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
275; CHECK-NEXT: ValueType: I64
276; CHECK-NEXT: - Size: 8
277; CHECK-NEXT: Align: 8
278; CHECK-NEXT: Kind: HiddenPrintfBuffer
279; CHECK-NEXT: ValueType: I8
280; CHECK-NEXT: AddrSpaceQual: Global
281define amdgpu_kernel void @test_pointer(i32 addrspace(1)* %a)
282 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !16
283 !kernel_arg_base_type !16 !kernel_arg_type_qual !4 {
284 ret void
285}
286
287; CHECK: - Name: test_image
288; CHECK-NEXT: Language: OpenCL C
289; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
290; CHECK-NEXT: Args:
291; CHECK-NEXT: - Size: 8
292; CHECK-NEXT: Align: 8
293; CHECK-NEXT: Kind: Image
294; CHECK-NEXT: ValueType: Struct
295; CHECK-NEXT: AccQual: Default
296; CHECK-NEXT: AddrSpaceQual: Global
297; CHECK-NEXT: TypeName: image2d_t
298; CHECK-NEXT: - Size: 8
299; CHECK-NEXT: Align: 8
300; CHECK-NEXT: Kind: HiddenGlobalOffsetX
301; CHECK-NEXT: ValueType: I64
302; CHECK-NEXT: - Size: 8
303; CHECK-NEXT: Align: 8
304; CHECK-NEXT: Kind: HiddenGlobalOffsetY
305; CHECK-NEXT: ValueType: I64
306; CHECK-NEXT: - Size: 8
307; CHECK-NEXT: Align: 8
308; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
309; CHECK-NEXT: ValueType: I64
310; CHECK-NEXT: - Size: 8
311; CHECK-NEXT: Align: 8
312; CHECK-NEXT: Kind: HiddenPrintfBuffer
313; CHECK-NEXT: ValueType: I8
314; CHECK-NEXT: AddrSpaceQual: Global
315define amdgpu_kernel void @test_image(%opencl.image2d_t addrspace(1)* %a)
316 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !17
317 !kernel_arg_base_type !17 !kernel_arg_type_qual !4 {
318 ret void
319}
320
321; CHECK: - Name: test_sampler
322; CHECK-NEXT: Language: OpenCL C
323; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
324; CHECK-NEXT: Args:
325; CHECK-NEXT: - Size: 4
326; CHECK-NEXT: Align: 4
327; CHECK-NEXT: Kind: Sampler
328; CHECK-NEXT: ValueType: I32
329; CHECK-NEXT: AccQual: Default
330; CHECK-NEXT: TypeName: sampler_t
331; CHECK-NEXT: - Size: 8
332; CHECK-NEXT: Align: 8
333; CHECK-NEXT: Kind: HiddenGlobalOffsetX
334; CHECK-NEXT: ValueType: I64
335; CHECK-NEXT: - Size: 8
336; CHECK-NEXT: Align: 8
337; CHECK-NEXT: Kind: HiddenGlobalOffsetY
338; CHECK-NEXT: ValueType: I64
339; CHECK-NEXT: - Size: 8
340; CHECK-NEXT: Align: 8
341; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
342; CHECK-NEXT: ValueType: I64
343; CHECK-NEXT: - Size: 8
344; CHECK-NEXT: Align: 8
345; CHECK-NEXT: Kind: HiddenPrintfBuffer
346; CHECK-NEXT: ValueType: I8
347; CHECK-NEXT: AddrSpaceQual: Global
348define amdgpu_kernel void @test_sampler(i32 %a)
349 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !18
350 !kernel_arg_base_type !18 !kernel_arg_type_qual !4 {
351 ret void
352}
353
354; CHECK: - Name: test_queue
355; CHECK-NEXT: Language: OpenCL C
356; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
357; CHECK-NEXT: Args:
358; CHECK-NEXT: - Size: 8
359; CHECK-NEXT: Align: 8
360; CHECK-NEXT: Kind: Queue
361; CHECK-NEXT: ValueType: Struct
362; CHECK-NEXT: AccQual: Default
363; CHECK-NEXT: AddrSpaceQual: Global
364; CHECK-NEXT: TypeName: queue_t
365; CHECK-NEXT: - Size: 8
366; CHECK-NEXT: Align: 8
367; CHECK-NEXT: Kind: HiddenGlobalOffsetX
368; CHECK-NEXT: ValueType: I64
369; CHECK-NEXT: - Size: 8
370; CHECK-NEXT: Align: 8
371; CHECK-NEXT: Kind: HiddenGlobalOffsetY
372; CHECK-NEXT: ValueType: I64
373; CHECK-NEXT: - Size: 8
374; CHECK-NEXT: Align: 8
375; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
376; CHECK-NEXT: ValueType: I64
377; CHECK-NEXT: - Size: 8
378; CHECK-NEXT: Align: 8
379; CHECK-NEXT: Kind: HiddenPrintfBuffer
380; CHECK-NEXT: ValueType: I8
381; CHECK-NEXT: AddrSpaceQual: Global
382define amdgpu_kernel void @test_queue(%opencl.queue_t addrspace(1)* %a)
383 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !19
384 !kernel_arg_base_type !19 !kernel_arg_type_qual !4 {
385 ret void
386}
387
388; CHECK: - Name: test_struct
389; CHECK-NEXT: Language: OpenCL C
390; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
391; CHECK-NEXT: Args:
392; CHECK-NEXT: - Size: 4
393; CHECK-NEXT: Align: 4
394; CHECK-NEXT: Kind: GlobalBuffer
395; CHECK-NEXT: ValueType: Struct
396; CHECK-NEXT: AccQual: Default
397; CHECK-NEXT: AddrSpaceQual: Private
398; CHECK-NEXT: TypeName: struct A
399; CHECK-NEXT: - Size: 8
400; CHECK-NEXT: Align: 8
401; CHECK-NEXT: Kind: HiddenGlobalOffsetX
402; CHECK-NEXT: ValueType: I64
403; CHECK-NEXT: - Size: 8
404; CHECK-NEXT: Align: 8
405; CHECK-NEXT: Kind: HiddenGlobalOffsetY
406; CHECK-NEXT: ValueType: I64
407; CHECK-NEXT: - Size: 8
408; CHECK-NEXT: Align: 8
409; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
410; CHECK-NEXT: ValueType: I64
411; CHECK-NEXT: - Size: 8
412; CHECK-NEXT: Align: 8
413; CHECK-NEXT: Kind: HiddenPrintfBuffer
414; CHECK-NEXT: ValueType: I8
415; CHECK-NEXT: AddrSpaceQual: Global
416define amdgpu_kernel void @test_struct(%struct.A* byval %a)
417 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !20
418 !kernel_arg_base_type !20 !kernel_arg_type_qual !4 {
419 ret void
420}
421
422; CHECK: - Name: test_i128
423; CHECK-NEXT: Language: OpenCL C
424; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
425; CHECK-NEXT: Args:
426; CHECK-NEXT: - Size: 16
427; CHECK-NEXT: Align: 8
428; CHECK-NEXT: Kind: ByValue
429; CHECK-NEXT: ValueType: Struct
430; CHECK-NEXT: AccQual: Default
431; CHECK-NEXT: TypeName: i128
432; CHECK-NEXT: - Size: 8
433; CHECK-NEXT: Align: 8
434; CHECK-NEXT: Kind: HiddenGlobalOffsetX
435; CHECK-NEXT: ValueType: I64
436; CHECK-NEXT: - Size: 8
437; CHECK-NEXT: Align: 8
438; CHECK-NEXT: Kind: HiddenGlobalOffsetY
439; CHECK-NEXT: ValueType: I64
440; CHECK-NEXT: - Size: 8
441; CHECK-NEXT: Align: 8
442; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
443; CHECK-NEXT: ValueType: I64
444; CHECK-NEXT: - Size: 8
445; CHECK-NEXT: Align: 8
446; CHECK-NEXT: Kind: HiddenPrintfBuffer
447; CHECK-NEXT: ValueType: I8
448; CHECK-NEXT: AddrSpaceQual: Global
449define amdgpu_kernel void @test_i128(i128 %a)
450 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !21
451 !kernel_arg_base_type !21 !kernel_arg_type_qual !4 {
452 ret void
453}
454
455; CHECK: - Name: test_multi_arg
456; CHECK-NEXT: Language: OpenCL C
457; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
458; CHECK-NEXT: Args:
459; CHECK-NEXT: - Size: 4
460; CHECK-NEXT: Align: 4
461; CHECK-NEXT: Kind: ByValue
462; CHECK-NEXT: ValueType: I32
463; CHECK-NEXT: AccQual: Default
464; CHECK-NEXT: TypeName: int
465; CHECK-NEXT: - Size: 4
466; CHECK-NEXT: Align: 4
467; CHECK-NEXT: Kind: ByValue
468; CHECK-NEXT: ValueType: I16
469; CHECK-NEXT: AccQual: Default
470; CHECK-NEXT: TypeName: short2
471; CHECK-NEXT: - Size: 4
472; CHECK-NEXT: Align: 4
473; CHECK-NEXT: Kind: ByValue
474; CHECK-NEXT: ValueType: I8
475; CHECK-NEXT: AccQual: Default
476; CHECK-NEXT: TypeName: char3
477; CHECK-NEXT: - Size: 8
478; CHECK-NEXT: Align: 8
479; CHECK-NEXT: Kind: HiddenGlobalOffsetX
480; CHECK-NEXT: ValueType: I64
481; CHECK-NEXT: - Size: 8
482; CHECK-NEXT: Align: 8
483; CHECK-NEXT: Kind: HiddenGlobalOffsetY
484; CHECK-NEXT: ValueType: I64
485; CHECK-NEXT: - Size: 8
486; CHECK-NEXT: Align: 8
487; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
488; CHECK-NEXT: ValueType: I64
489; CHECK-NEXT: - Size: 8
490; CHECK-NEXT: Align: 8
491; CHECK-NEXT: Kind: HiddenPrintfBuffer
492; CHECK-NEXT: ValueType: I8
493; CHECK-NEXT: AddrSpaceQual: Global
494define amdgpu_kernel void @test_multi_arg(i32 %a, <2 x i16> %b, <3 x i8> %c)
495 !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !24
496 !kernel_arg_base_type !24 !kernel_arg_type_qual !25 {
497 ret void
498}
499
500; CHECK: - Name: test_addr_space
501; CHECK-NEXT: Language: OpenCL C
502; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
503; CHECK-NEXT: Args:
504; CHECK-NEXT: - Size: 8
505; CHECK-NEXT: Align: 8
506; CHECK-NEXT: Kind: GlobalBuffer
507; CHECK-NEXT: ValueType: I32
508; CHECK-NEXT: AccQual: Default
509; CHECK-NEXT: AddrSpaceQual: Global
510; CHECK-NEXT: TypeName: 'int *'
511; CHECK-NEXT: - Size: 8
512; CHECK-NEXT: Align: 8
513; CHECK-NEXT: Kind: GlobalBuffer
514; CHECK-NEXT: ValueType: I32
515; CHECK-NEXT: AccQual: Default
516; CHECK-NEXT: AddrSpaceQual: Constant
517; CHECK-NEXT: TypeName: 'int *'
518; CHECK-NEXT: - Size: 4
519; CHECK-NEXT: Align: 4
520; CHECK-NEXT: Kind: DynamicSharedPointer
521; CHECK-NEXT: ValueType: I32
522; CHECK-NEXT: PointeeAlign: 4
523; CHECK-NEXT: AccQual: Default
524; CHECK-NEXT: AddrSpaceQual: Local
525; CHECK-NEXT: TypeName: 'int *'
526; CHECK-NEXT: - Size: 8
527; CHECK-NEXT: Align: 8
528; CHECK-NEXT: Kind: HiddenGlobalOffsetX
529; CHECK-NEXT: ValueType: I64
530; CHECK-NEXT: - Size: 8
531; CHECK-NEXT: Align: 8
532; CHECK-NEXT: Kind: HiddenGlobalOffsetY
533; CHECK-NEXT: ValueType: I64
534; CHECK-NEXT: - Size: 8
535; CHECK-NEXT: Align: 8
536; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
537; CHECK-NEXT: ValueType: I64
538; CHECK-NEXT: - Size: 8
539; CHECK-NEXT: Align: 8
540; CHECK-NEXT: Kind: HiddenPrintfBuffer
541; CHECK-NEXT: ValueType: I8
542; CHECK-NEXT: AddrSpaceQual: Global
543define amdgpu_kernel void @test_addr_space(i32 addrspace(1)* %g,
544 i32 addrspace(2)* %c,
545 i32 addrspace(3)* %l)
546 !kernel_arg_addr_space !50 !kernel_arg_access_qual !23 !kernel_arg_type !51
547 !kernel_arg_base_type !51 !kernel_arg_type_qual !25 {
548 ret void
549}
550
551; CHECK: - Name: test_type_qual
552; CHECK-NEXT: Language: OpenCL C
553; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
554; CHECK-NEXT: Args:
555; CHECK-NEXT: - Size: 8
556; CHECK-NEXT: Align: 8
557; CHECK-NEXT: Kind: GlobalBuffer
558; CHECK-NEXT: ValueType: I32
559; CHECK-NEXT: AccQual: Default
560; CHECK-NEXT: AddrSpaceQual: Global
561; CHECK-NEXT: IsVolatile: true
562; CHECK-NEXT: TypeName: 'int *'
563; CHECK-NEXT: - Size: 8
564; CHECK-NEXT: Align: 8
565; CHECK-NEXT: Kind: GlobalBuffer
566; CHECK-NEXT: ValueType: I32
567; CHECK-NEXT: AccQual: Default
568; CHECK-NEXT: AddrSpaceQual: Global
569; CHECK-NEXT: IsConst: true
570; CHECK-NEXT: IsRestrict: true
571; CHECK-NEXT: TypeName: 'int *'
572; CHECK-NEXT: - Size: 8
573; CHECK-NEXT: Align: 8
574; CHECK-NEXT: Kind: Pipe
575; CHECK-NEXT: ValueType: Struct
576; CHECK-NEXT: AccQual: Default
577; CHECK-NEXT: AddrSpaceQual: Global
578; CHECK-NEXT: IsPipe: true
579; CHECK-NEXT: TypeName: 'int *'
580; CHECK-NEXT: - Size: 8
581; CHECK-NEXT: Align: 8
582; CHECK-NEXT: Kind: HiddenGlobalOffsetX
583; CHECK-NEXT: ValueType: I64
584; CHECK-NEXT: - Size: 8
585; CHECK-NEXT: Align: 8
586; CHECK-NEXT: Kind: HiddenGlobalOffsetY
587; CHECK-NEXT: ValueType: I64
588; CHECK-NEXT: - Size: 8
589; CHECK-NEXT: Align: 8
590; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
591; CHECK-NEXT: ValueType: I64
592; CHECK-NEXT: - Size: 8
593; CHECK-NEXT: Align: 8
594; CHECK-NEXT: Kind: HiddenPrintfBuffer
595; CHECK-NEXT: ValueType: I8
596; CHECK-NEXT: AddrSpaceQual: Global
597define amdgpu_kernel void @test_type_qual(i32 addrspace(1)* %a,
598 i32 addrspace(1)* %b,
599 %opencl.pipe_t addrspace(1)* %c)
600 !kernel_arg_addr_space !22 !kernel_arg_access_qual !23 !kernel_arg_type !51
601 !kernel_arg_base_type !51 !kernel_arg_type_qual !70 {
602 ret void
603}
604
605; CHECK: - Name: test_access_qual
606; CHECK-NEXT: Language: OpenCL C
607; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
608; CHECK-NEXT: Args:
609; CHECK-NEXT: - Size: 8
610; CHECK-NEXT: Align: 8
611; CHECK-NEXT: Kind: Image
612; CHECK-NEXT: ValueType: Struct
613; CHECK-NEXT: AccQual: ReadOnly
614; CHECK-NEXT: AddrSpaceQual: Global
615; CHECK-NEXT: TypeName: image1d_t
616; CHECK-NEXT: - Size: 8
617; CHECK-NEXT: Align: 8
618; CHECK-NEXT: Kind: Image
619; CHECK-NEXT: ValueType: Struct
620; CHECK-NEXT: AccQual: WriteOnly
621; CHECK-NEXT: AddrSpaceQual: Global
622; CHECK-NEXT: TypeName: image2d_t
623; CHECK-NEXT: - Size: 8
624; CHECK-NEXT: Align: 8
625; CHECK-NEXT: Kind: Image
626; CHECK-NEXT: ValueType: Struct
627; CHECK-NEXT: AccQual: ReadWrite
628; CHECK-NEXT: AddrSpaceQual: Global
629; CHECK-NEXT: TypeName: image3d_t
630; CHECK-NEXT: - Size: 8
631; CHECK-NEXT: Align: 8
632; CHECK-NEXT: Kind: HiddenGlobalOffsetX
633; CHECK-NEXT: ValueType: I64
634; CHECK-NEXT: - Size: 8
635; CHECK-NEXT: Align: 8
636; CHECK-NEXT: Kind: HiddenGlobalOffsetY
637; CHECK-NEXT: ValueType: I64
638; CHECK-NEXT: - Size: 8
639; CHECK-NEXT: Align: 8
640; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
641; CHECK-NEXT: ValueType: I64
642; CHECK-NEXT: - Size: 8
643; CHECK-NEXT: Align: 8
644; CHECK-NEXT: Kind: HiddenPrintfBuffer
645; CHECK-NEXT: ValueType: I8
646; CHECK-NEXT: AddrSpaceQual: Global
647define amdgpu_kernel void @test_access_qual(%opencl.image1d_t addrspace(1)* %ro,
648 %opencl.image2d_t addrspace(1)* %wo,
649 %opencl.image3d_t addrspace(1)* %rw)
650 !kernel_arg_addr_space !60 !kernel_arg_access_qual !61 !kernel_arg_type !62
651 !kernel_arg_base_type !62 !kernel_arg_type_qual !25 {
652 ret void
653}
654
655; CHECK: - Name: test_vec_type_hint_half
656; CHECK-NEXT: Language: OpenCL C
657; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
658; CHECK-NEXT: Attrs:
659; CHECK-NEXT: VecTypeHint: half
660; CHECK-NEXT: Args:
661; CHECK-NEXT: - Size: 4
662; CHECK-NEXT: Align: 4
663; CHECK-NEXT: Kind: ByValue
664; CHECK-NEXT: ValueType: I32
665; CHECK-NEXT: AccQual: Default
666; CHECK-NEXT: TypeName: int
667; CHECK-NEXT: - Size: 8
668; CHECK-NEXT: Align: 8
669; CHECK-NEXT: Kind: HiddenGlobalOffsetX
670; CHECK-NEXT: ValueType: I64
671; CHECK-NEXT: - Size: 8
672; CHECK-NEXT: Align: 8
673; CHECK-NEXT: Kind: HiddenGlobalOffsetY
674; CHECK-NEXT: ValueType: I64
675; CHECK-NEXT: - Size: 8
676; CHECK-NEXT: Align: 8
677; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
678; CHECK-NEXT: ValueType: I64
679; CHECK-NEXT: - Size: 8
680; CHECK-NEXT: Align: 8
681; CHECK-NEXT: Kind: HiddenPrintfBuffer
682; CHECK-NEXT: ValueType: I8
683; CHECK-NEXT: AddrSpaceQual: Global
684define amdgpu_kernel void @test_vec_type_hint_half(i32 %a)
685 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
686 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !26 {
687 ret void
688}
689
690; CHECK: - Name: test_vec_type_hint_float
691; CHECK-NEXT: Language: OpenCL C
692; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
693; CHECK-NEXT: Attrs:
694; CHECK-NEXT: VecTypeHint: float
695; CHECK-NEXT: Args:
696; CHECK-NEXT: - Size: 4
697; CHECK-NEXT: Align: 4
698; CHECK-NEXT: Kind: ByValue
699; CHECK-NEXT: ValueType: I32
700; CHECK-NEXT: AccQual: Default
701; CHECK-NEXT: TypeName: int
702; CHECK-NEXT: - Size: 8
703; CHECK-NEXT: Align: 8
704; CHECK-NEXT: Kind: HiddenGlobalOffsetX
705; CHECK-NEXT: ValueType: I64
706; CHECK-NEXT: - Size: 8
707; CHECK-NEXT: Align: 8
708; CHECK-NEXT: Kind: HiddenGlobalOffsetY
709; CHECK-NEXT: ValueType: I64
710; CHECK-NEXT: - Size: 8
711; CHECK-NEXT: Align: 8
712; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
713; CHECK-NEXT: ValueType: I64
714; CHECK-NEXT: - Size: 8
715; CHECK-NEXT: Align: 8
716; CHECK-NEXT: Kind: HiddenPrintfBuffer
717; CHECK-NEXT: ValueType: I8
718; CHECK-NEXT: AddrSpaceQual: Global
719define amdgpu_kernel void @test_vec_type_hint_float(i32 %a)
720 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
721 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !27 {
722 ret void
723}
724
725; CHECK: - Name: test_vec_type_hint_double
726; CHECK-NEXT: Language: OpenCL C
727; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
728; CHECK-NEXT: Attrs:
729; CHECK-NEXT: VecTypeHint: double
730; CHECK-NEXT: Args:
731; CHECK-NEXT: - Size: 4
732; CHECK-NEXT: Align: 4
733; CHECK-NEXT: Kind: ByValue
734; CHECK-NEXT: ValueType: I32
735; CHECK-NEXT: AccQual: Default
736; CHECK-NEXT: TypeName: int
737; CHECK-NEXT: - Size: 8
738; CHECK-NEXT: Align: 8
739; CHECK-NEXT: Kind: HiddenGlobalOffsetX
740; CHECK-NEXT: ValueType: I64
741; CHECK-NEXT: - Size: 8
742; CHECK-NEXT: Align: 8
743; CHECK-NEXT: Kind: HiddenGlobalOffsetY
744; CHECK-NEXT: ValueType: I64
745; CHECK-NEXT: - Size: 8
746; CHECK-NEXT: Align: 8
747; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
748; CHECK-NEXT: ValueType: I64
749; CHECK-NEXT: - Size: 8
750; CHECK-NEXT: Align: 8
751; CHECK-NEXT: Kind: HiddenPrintfBuffer
752; CHECK-NEXT: ValueType: I8
753; CHECK-NEXT: AddrSpaceQual: Global
754define amdgpu_kernel void @test_vec_type_hint_double(i32 %a)
755 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
756 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !28 {
757 ret void
758}
759
760; CHECK: - Name: test_vec_type_hint_char
761; CHECK-NEXT: Language: OpenCL C
762; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
763; CHECK-NEXT: Attrs:
764; CHECK-NEXT: VecTypeHint: char
765; CHECK-NEXT: Args:
766; CHECK-NEXT: - Size: 4
767; CHECK-NEXT: Align: 4
768; CHECK-NEXT: Kind: ByValue
769; CHECK-NEXT: ValueType: I32
770; CHECK-NEXT: AccQual: Default
771; CHECK-NEXT: TypeName: int
772; CHECK-NEXT: - Size: 8
773; CHECK-NEXT: Align: 8
774; CHECK-NEXT: Kind: HiddenGlobalOffsetX
775; CHECK-NEXT: ValueType: I64
776; CHECK-NEXT: - Size: 8
777; CHECK-NEXT: Align: 8
778; CHECK-NEXT: Kind: HiddenGlobalOffsetY
779; CHECK-NEXT: ValueType: I64
780; CHECK-NEXT: - Size: 8
781; CHECK-NEXT: Align: 8
782; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
783; CHECK-NEXT: ValueType: I64
784; CHECK-NEXT: - Size: 8
785; CHECK-NEXT: Align: 8
786; CHECK-NEXT: Kind: HiddenPrintfBuffer
787; CHECK-NEXT: ValueType: I8
788; CHECK-NEXT: AddrSpaceQual: Global
789define amdgpu_kernel void @test_vec_type_hint_char(i32 %a)
790 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
791 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !29 {
792 ret void
793}
794
795; CHECK: - Name: test_vec_type_hint_short
796; CHECK-NEXT: Language: OpenCL C
797; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
798; CHECK-NEXT: Attrs:
799; CHECK-NEXT: VecTypeHint: short
800; CHECK-NEXT: Args:
801; CHECK-NEXT: - Size: 4
802; CHECK-NEXT: Align: 4
803; CHECK-NEXT: Kind: ByValue
804; CHECK-NEXT: ValueType: I32
805; CHECK-NEXT: AccQual: Default
806; CHECK-NEXT: TypeName: int
807; CHECK-NEXT: - Size: 8
808; CHECK-NEXT: Align: 8
809; CHECK-NEXT: Kind: HiddenGlobalOffsetX
810; CHECK-NEXT: ValueType: I64
811; CHECK-NEXT: - Size: 8
812; CHECK-NEXT: Align: 8
813; CHECK-NEXT: Kind: HiddenGlobalOffsetY
814; CHECK-NEXT: ValueType: I64
815; CHECK-NEXT: - Size: 8
816; CHECK-NEXT: Align: 8
817; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
818; CHECK-NEXT: ValueType: I64
819; CHECK-NEXT: - Size: 8
820; CHECK-NEXT: Align: 8
821; CHECK-NEXT: Kind: HiddenPrintfBuffer
822; CHECK-NEXT: ValueType: I8
823; CHECK-NEXT: AddrSpaceQual: Global
824define amdgpu_kernel void @test_vec_type_hint_short(i32 %a)
825 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
826 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !30 {
827 ret void
828}
829
830; CHECK: - Name: test_vec_type_hint_long
831; CHECK-NEXT: Language: OpenCL C
832; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
833; CHECK-NEXT: Attrs:
834; CHECK-NEXT: VecTypeHint: long
835; CHECK-NEXT: Args:
836; CHECK-NEXT: - Size: 4
837; CHECK-NEXT: Align: 4
838; CHECK-NEXT: Kind: ByValue
839; CHECK-NEXT: ValueType: I32
840; CHECK-NEXT: AccQual: Default
841; CHECK-NEXT: TypeName: int
842; CHECK-NEXT: - Size: 8
843; CHECK-NEXT: Align: 8
844; CHECK-NEXT: Kind: HiddenGlobalOffsetX
845; CHECK-NEXT: ValueType: I64
846; CHECK-NEXT: - Size: 8
847; CHECK-NEXT: Align: 8
848; CHECK-NEXT: Kind: HiddenGlobalOffsetY
849; CHECK-NEXT: ValueType: I64
850; CHECK-NEXT: - Size: 8
851; CHECK-NEXT: Align: 8
852; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
853; CHECK-NEXT: ValueType: I64
854; CHECK-NEXT: - Size: 8
855; CHECK-NEXT: Align: 8
856; CHECK-NEXT: Kind: HiddenPrintfBuffer
857; CHECK-NEXT: ValueType: I8
858; CHECK-NEXT: AddrSpaceQual: Global
859define amdgpu_kernel void @test_vec_type_hint_long(i32 %a)
860 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
861 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !31 {
862 ret void
863}
864
865; CHECK: - Name: test_vec_type_hint_unknown
866; CHECK-NEXT: Language: OpenCL C
867; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
868; CHECK-NEXT: Attrs:
869; CHECK-NEXT: VecTypeHint: unknown
870; CHECK-NEXT: Args:
871; CHECK-NEXT: - Size: 4
872; CHECK-NEXT: Align: 4
873; CHECK-NEXT: Kind: ByValue
874; CHECK-NEXT: ValueType: I32
875; CHECK-NEXT: AccQual: Default
876; CHECK-NEXT: TypeName: int
877; CHECK-NEXT: - Size: 8
878; CHECK-NEXT: Align: 8
879; CHECK-NEXT: Kind: HiddenGlobalOffsetX
880; CHECK-NEXT: ValueType: I64
881; CHECK-NEXT: - Size: 8
882; CHECK-NEXT: Align: 8
883; CHECK-NEXT: Kind: HiddenGlobalOffsetY
884; CHECK-NEXT: ValueType: I64
885; CHECK-NEXT: - Size: 8
886; CHECK-NEXT: Align: 8
887; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
888; CHECK-NEXT: ValueType: I64
889; CHECK-NEXT: - Size: 8
890; CHECK-NEXT: Align: 8
891; CHECK-NEXT: Kind: HiddenPrintfBuffer
892; CHECK-NEXT: ValueType: I8
893; CHECK-NEXT: AddrSpaceQual: Global
894define amdgpu_kernel void @test_vec_type_hint_unknown(i32 %a)
895 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
896 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !32 {
897 ret void
898}
899
900; CHECK: - Name: test_reqd_wgs_vec_type_hint
901; CHECK-NEXT: Language: OpenCL C
902; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
903; CHECK-NEXT: Attrs:
904; CHECK-NEXT: ReqdWorkGroupSize: [ 1, 2, 4 ]
905; CHECK-NEXT: VecTypeHint: int
906; CHECK-NEXT: Args:
907; CHECK-NEXT: - Size: 4
908; CHECK-NEXT: Align: 4
909; CHECK-NEXT: Kind: ByValue
910; CHECK-NEXT: ValueType: I32
911; CHECK-NEXT: AccQual: Default
912; CHECK-NEXT: TypeName: int
913; CHECK-NEXT: - Size: 8
914; CHECK-NEXT: Align: 8
915; CHECK-NEXT: Kind: HiddenGlobalOffsetX
916; CHECK-NEXT: ValueType: I64
917; CHECK-NEXT: - Size: 8
918; CHECK-NEXT: Align: 8
919; CHECK-NEXT: Kind: HiddenGlobalOffsetY
920; CHECK-NEXT: ValueType: I64
921; CHECK-NEXT: - Size: 8
922; CHECK-NEXT: Align: 8
923; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
924; CHECK-NEXT: ValueType: I64
925; CHECK-NEXT: - Size: 8
926; CHECK-NEXT: Align: 8
927; CHECK-NEXT: Kind: HiddenPrintfBuffer
928; CHECK-NEXT: ValueType: I8
929; CHECK-NEXT: AddrSpaceQual: Global
930define amdgpu_kernel void @test_reqd_wgs_vec_type_hint(i32 %a)
931 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
932 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !5
933 !reqd_work_group_size !6 {
934 ret void
935}
936
937; CHECK: - Name: test_wgs_hint_vec_type_hint
938; CHECK-NEXT: Language: OpenCL C
939; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
940; CHECK-NEXT: Attrs:
941; CHECK-NEXT: WorkGroupSizeHint: [ 8, 16, 32 ]
942; CHECK-NEXT: VecTypeHint: uint4
943; CHECK-NEXT: Args:
944; CHECK-NEXT: - Size: 4
945; CHECK-NEXT: Align: 4
946; CHECK-NEXT: Kind: ByValue
947; CHECK-NEXT: ValueType: I32
948; CHECK-NEXT: AccQual: Default
949; CHECK-NEXT: TypeName: int
950; CHECK-NEXT: - Size: 8
951; CHECK-NEXT: Align: 8
952; CHECK-NEXT: Kind: HiddenGlobalOffsetX
953; CHECK-NEXT: ValueType: I64
954; CHECK-NEXT: - Size: 8
955; CHECK-NEXT: Align: 8
956; CHECK-NEXT: Kind: HiddenGlobalOffsetY
957; CHECK-NEXT: ValueType: I64
958; CHECK-NEXT: - Size: 8
959; CHECK-NEXT: Align: 8
960; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
961; CHECK-NEXT: ValueType: I64
962; CHECK-NEXT: - Size: 8
963; CHECK-NEXT: Align: 8
964; CHECK-NEXT: Kind: HiddenPrintfBuffer
965; CHECK-NEXT: ValueType: I8
966; CHECK-NEXT: AddrSpaceQual: Global
967define amdgpu_kernel void @test_wgs_hint_vec_type_hint(i32 %a)
968 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3
969 !kernel_arg_base_type !3 !kernel_arg_type_qual !4 !vec_type_hint !7
970 !work_group_size_hint !8 {
971 ret void
972}
973
974; CHECK: - Name: test_arg_ptr_to_ptr
975; CHECK-NEXT: Language: OpenCL C
976; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
977; CHECK-NEXT: Args:
978; CHECK-NEXT: - Size: 8
979; CHECK-NEXT: Align: 8
980; CHECK-NEXT: Kind: GlobalBuffer
981; CHECK-NEXT: ValueType: I32
982; CHECK-NEXT: AccQual: Default
983; CHECK-NEXT: AddrSpaceQual: Global
984; CHECK-NEXT: TypeName: 'int **'
985; CHECK-NEXT: - Size: 8
986; CHECK-NEXT: Align: 8
987; CHECK-NEXT: Kind: HiddenGlobalOffsetX
988; CHECK-NEXT: ValueType: I64
989; CHECK-NEXT: - Size: 8
990; CHECK-NEXT: Align: 8
991; CHECK-NEXT: Kind: HiddenGlobalOffsetY
992; CHECK-NEXT: ValueType: I64
993; CHECK-NEXT: - Size: 8
994; CHECK-NEXT: Align: 8
995; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
996; CHECK-NEXT: ValueType: I64
997; CHECK-NEXT: - Size: 8
998; CHECK-NEXT: Align: 8
999; CHECK-NEXT: Kind: HiddenPrintfBuffer
1000; CHECK-NEXT: ValueType: I8
1001; CHECK-NEXT: AddrSpaceQual: Global
1002define amdgpu_kernel void @test_arg_ptr_to_ptr(i32* addrspace(1)* %a)
1003 !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !80
1004 !kernel_arg_base_type !80 !kernel_arg_type_qual !4 {
1005 ret void
1006}
1007
1008; CHECK: - Name: test_arg_struct_contains_ptr
1009; CHECK-NEXT: Language: OpenCL C
1010; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
1011; CHECK-NEXT: Args:
1012; CHECK-NEXT: - Size: 4
1013; CHECK-NEXT: Align: 4
1014; CHECK-NEXT: Kind: GlobalBuffer
1015; CHECK-NEXT: ValueType: Struct
1016; CHECK-NEXT: AccQual: Default
1017; CHECK-NEXT: AddrSpaceQual: Private
1018; CHECK-NEXT: TypeName: struct B
1019; CHECK-NEXT: - Size: 8
1020; CHECK-NEXT: Align: 8
1021; CHECK-NEXT: Kind: HiddenGlobalOffsetX
1022; CHECK-NEXT: ValueType: I64
1023; CHECK-NEXT: - Size: 8
1024; CHECK-NEXT: Align: 8
1025; CHECK-NEXT: Kind: HiddenGlobalOffsetY
1026; CHECK-NEXT: ValueType: I64
1027; CHECK-NEXT: - Size: 8
1028; CHECK-NEXT: Align: 8
1029; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
1030; CHECK-NEXT: ValueType: I64
1031; CHECK-NEXT: - Size: 8
1032; CHECK-NEXT: Align: 8
1033; CHECK-NEXT: Kind: HiddenPrintfBuffer
1034; CHECK-NEXT: ValueType: I8
1035; CHECK-NEXT: AddrSpaceQual: Global
1036define amdgpu_kernel void @test_arg_struct_contains_ptr(%struct.B* byval %a)
1037 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !82
1038 !kernel_arg_base_type !82 !kernel_arg_type_qual !4 {
1039 ret void
1040}
1041
1042; CHECK: - Name: test_arg_vector_of_ptr
1043; CHECK-NEXT: Language: OpenCL C
1044; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
1045; CHECK-NEXT: Args:
1046; CHECK-NEXT: - Size: 16
1047; CHECK-NEXT: Align: 16
1048; CHECK-NEXT: Kind: ByValue
1049; CHECK-NEXT: ValueType: I32
1050; CHECK-NEXT: AccQual: Default
1051; CHECK-NEXT: TypeName: 'global int* __attribute__((ext_vector_type(2)))'
1052; CHECK-NEXT: - Size: 8
1053; CHECK-NEXT: Align: 8
1054; CHECK-NEXT: Kind: HiddenGlobalOffsetX
1055; CHECK-NEXT: ValueType: I64
1056; CHECK-NEXT: - Size: 8
1057; CHECK-NEXT: Align: 8
1058; CHECK-NEXT: Kind: HiddenGlobalOffsetY
1059; CHECK-NEXT: ValueType: I64
1060; CHECK-NEXT: - Size: 8
1061; CHECK-NEXT: Align: 8
1062; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
1063; CHECK-NEXT: ValueType: I64
1064; CHECK-NEXT: - Size: 8
1065; CHECK-NEXT: Align: 8
1066; CHECK-NEXT: Kind: HiddenPrintfBuffer
1067; CHECK-NEXT: ValueType: I8
1068; CHECK-NEXT: AddrSpaceQual: Global
1069define amdgpu_kernel void @test_arg_vector_of_ptr(<2 x i32 addrspace(1)*> %a)
1070 !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !83
1071 !kernel_arg_base_type !83 !kernel_arg_type_qual !4 {
1072 ret void
1073}
1074
1075; CHECK: - Name: test_arg_unknown_builtin_type
1076; CHECK-NEXT: Language: OpenCL C
1077; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
1078; CHECK-NEXT: Args:
1079; CHECK-NEXT: - Size: 8
1080; CHECK-NEXT: Align: 8
1081; CHECK-NEXT: Kind: GlobalBuffer
1082; CHECK-NEXT: ValueType: Struct
1083; CHECK-NEXT: AccQual: Default
1084; CHECK-NEXT: AddrSpaceQual: Global
1085; CHECK-NEXT: TypeName: clk_event_t
1086; CHECK-NEXT: - Size: 8
1087; CHECK-NEXT: Align: 8
1088; CHECK-NEXT: Kind: HiddenGlobalOffsetX
1089; CHECK-NEXT: ValueType: I64
1090; CHECK-NEXT: - Size: 8
1091; CHECK-NEXT: Align: 8
1092; CHECK-NEXT: Kind: HiddenGlobalOffsetY
1093; CHECK-NEXT: ValueType: I64
1094; CHECK-NEXT: - Size: 8
1095; CHECK-NEXT: Align: 8
1096; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
1097; CHECK-NEXT: ValueType: I64
1098; CHECK-NEXT: - Size: 8
1099; CHECK-NEXT: Align: 8
1100; CHECK-NEXT: Kind: HiddenPrintfBuffer
1101; CHECK-NEXT: ValueType: I8
1102; CHECK-NEXT: AddrSpaceQual: Global
1103define amdgpu_kernel void @test_arg_unknown_builtin_type(
1104 %opencl.clk_event_t addrspace(1)* %a)
1105 !kernel_arg_addr_space !81 !kernel_arg_access_qual !2 !kernel_arg_type !84
1106 !kernel_arg_base_type !84 !kernel_arg_type_qual !4 {
1107 ret void
1108}
1109
1110; CHECK: - Name: test_pointee_align
1111; CHECK-NEXT: Language: OpenCL C
1112; CHECK-NEXT: LanguageVersion: [ 2, 0 ]
1113; CHECK-NEXT: Args:
1114; CHECK-NEXT: - Size: 8
1115; CHECK-NEXT: Align: 8
1116; CHECK-NEXT: Kind: GlobalBuffer
1117; CHECK-NEXT: ValueType: I64
1118; CHECK-NEXT: AccQual: Default
1119; CHECK-NEXT: AddrSpaceQual: Global
1120; CHECK-NEXT: TypeName: 'long *'
1121; CHECK-NEXT: - Size: 4
1122; CHECK-NEXT: Align: 4
1123; CHECK-NEXT: Kind: DynamicSharedPointer
1124; CHECK-NEXT: ValueType: I8
1125; CHECK-NEXT: PointeeAlign: 1
1126; CHECK-NEXT: AccQual: Default
1127; CHECK-NEXT: AddrSpaceQual: Local
1128; CHECK-NEXT: TypeName: 'char *'
1129; CHECK-NEXT: - Size: 4
1130; CHECK-NEXT: Align: 4
1131; CHECK-NEXT: Kind: DynamicSharedPointer
1132; CHECK-NEXT: ValueType: I8
1133; CHECK-NEXT: PointeeAlign: 2
1134; CHECK-NEXT: AccQual: Default
1135; CHECK-NEXT: AddrSpaceQual: Local
1136; CHECK-NEXT: TypeName: 'char2 *'
1137; CHECK-NEXT: - Size: 4
1138; CHECK-NEXT: Align: 4
1139; CHECK-NEXT: Kind: DynamicSharedPointer
1140; CHECK-NEXT: ValueType: I8
1141; CHECK-NEXT: PointeeAlign: 4
1142; CHECK-NEXT: AccQual: Default
1143; CHECK-NEXT: AddrSpaceQual: Local
1144; CHECK-NEXT: TypeName: 'char3 *'
1145; CHECK-NEXT: - Size: 4
1146; CHECK-NEXT: Align: 4
1147; CHECK-NEXT: Kind: DynamicSharedPointer
1148; CHECK-NEXT: ValueType: I8
1149; CHECK-NEXT: PointeeAlign: 4
1150; CHECK-NEXT: AccQual: Default
1151; CHECK-NEXT: AddrSpaceQual: Local
1152; CHECK-NEXT: TypeName: 'char4 *'
1153; CHECK-NEXT: - Size: 4
1154; CHECK-NEXT: Align: 4
1155; CHECK-NEXT: Kind: DynamicSharedPointer
1156; CHECK-NEXT: ValueType: I8
1157; CHECK-NEXT: PointeeAlign: 8
1158; CHECK-NEXT: AccQual: Default
1159; CHECK-NEXT: AddrSpaceQual: Local
1160; CHECK-NEXT: TypeName: 'char8 *'
1161; CHECK-NEXT: - Size: 4
1162; CHECK-NEXT: Align: 4
1163; CHECK-NEXT: Kind: DynamicSharedPointer
1164; CHECK-NEXT: ValueType: I8
1165; CHECK-NEXT: PointeeAlign: 16
1166; CHECK-NEXT: AccQual: Default
1167; CHECK-NEXT: AddrSpaceQual: Local
1168; CHECK-NEXT: TypeName: 'char16 *'
1169; CHECK-NEXT: - Size: 8
1170; CHECK-NEXT: Align: 8
1171; CHECK-NEXT: Kind: HiddenGlobalOffsetX
1172; CHECK-NEXT: ValueType: I64
1173; CHECK-NEXT: - Size: 8
1174; CHECK-NEXT: Align: 8
1175; CHECK-NEXT: Kind: HiddenGlobalOffsetY
1176; CHECK-NEXT: ValueType: I64
1177; CHECK-NEXT: - Size: 8
1178; CHECK-NEXT: Align: 8
1179; CHECK-NEXT: Kind: HiddenGlobalOffsetZ
1180; CHECK-NEXT: ValueType: I64
1181; CHECK-NEXT: - Size: 8
1182; CHECK-NEXT: Align: 8
1183; CHECK-NEXT: Kind: HiddenPrintfBuffer
1184; CHECK-NEXT: ValueType: I8
1185; CHECK-NEXT: AddrSpaceQual: Global
1186define amdgpu_kernel void @test_pointee_align(i64 addrspace(1)* %a,
1187 i8 addrspace(3)* %b,
1188 <2 x i8> addrspace(3)* %c,
1189 <3 x i8> addrspace(3)* %d,
1190 <4 x i8> addrspace(3)* %e,
1191 <8 x i8> addrspace(3)* %f,
1192 <16 x i8> addrspace(3)* %g)
1193 !kernel_arg_addr_space !91 !kernel_arg_access_qual !92 !kernel_arg_type !93
1194 !kernel_arg_base_type !93 !kernel_arg_type_qual !94 {
1195 ret void
1196}
1197
1198!llvm.printf.fmts = !{!100, !101}
1199
1200!1 = !{i32 0}
1201!2 = !{!"none"}
1202!3 = !{!"int"}
1203!4 = !{!""}
1204!5 = !{i32 undef, i32 1}
1205!6 = !{i32 1, i32 2, i32 4}
1206!7 = !{<4 x i32> undef, i32 0}
1207!8 = !{i32 8, i32 16, i32 32}
1208!9 = !{!"char"}
1209!10 = !{!"ushort2"}
1210!11 = !{!"int3"}
1211!12 = !{!"ulong4"}
1212!13 = !{!"half8"}
1213!14 = !{!"float16"}
1214!15 = !{!"double16"}
1215!16 = !{!"int *"}
1216!17 = !{!"image2d_t"}
1217!18 = !{!"sampler_t"}
1218!19 = !{!"queue_t"}
1219!20 = !{!"struct A"}
1220!21 = !{!"i128"}
1221!22 = !{i32 0, i32 0, i32 0}
1222!23 = !{!"none", !"none", !"none"}
1223!24 = !{!"int", !"short2", !"char3"}
1224!25 = !{!"", !"", !""}
1225!26 = !{half undef, i32 1}
1226!27 = !{float undef, i32 1}
1227!28 = !{double undef, i32 1}
1228!29 = !{i8 undef, i32 1}
1229!30 = !{i16 undef, i32 1}
1230!31 = !{i64 undef, i32 1}
1231!32 = !{i32 *undef, i32 1}
1232!50 = !{i32 1, i32 2, i32 3}
1233!51 = !{!"int *", !"int *", !"int *"}
1234!60 = !{i32 1, i32 1, i32 1}
1235!61 = !{!"read_only", !"write_only", !"read_write"}
1236!62 = !{!"image1d_t", !"image2d_t", !"image3d_t"}
1237!70 = !{!"volatile", !"const restrict", !"pipe"}
1238!80 = !{!"int **"}
1239!81 = !{i32 1}
1240!82 = !{!"struct B"}
1241!83 = !{!"global int* __attribute__((ext_vector_type(2)))"}
1242!84 = !{!"clk_event_t"}
1243!opencl.ocl.version = !{!90}
1244!90 = !{i32 2, i32 0}
1245!91 = !{i32 0, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3}
1246!92 = !{!"none", !"none", !"none", !"none", !"none", !"none", !"none"}
1247!93 = !{!"long *", !"char *", !"char2 *", !"char3 *", !"char4 *", !"char8 *", !"char16 *"}
1248!94 = !{!"", !"", !"", !"", !"", !"", !""}
1249!100 = !{!"1:1:4:%d\5Cn"}
1250!101 = !{!"2:1:8:%g\5Cn"}
1251
1252; NOTES: Displaying notes found at file offset 0x{{[0-9]+}}
1253; NOTES-NEXT: Owner Data size Description
1254; NOTES-NEXT: AMD 0x00000008 Unknown note type: (0x00000001)
1255; NOTES-NEXT: AMD 0x0000001b Unknown note type: (0x00000003)
Konstantin Zhuravlyov4cbb6892017-03-22 23:27:09 +00001256; GFX700: AMD 0x00009171 Unknown note type: (0x0000000a)
1257; GFX800: AMD 0x00009190 Unknown note type: (0x0000000a)
1258; GFX900: AMD 0x00009171 Unknown note type: (0x0000000a)
Konstantin Zhuravlyov7498cd62017-03-22 22:32:22 +00001259
1260; PARSER: AMDGPU Code Object Metadata Parser Test: PASS