xref: /llvm-project/llvm/test/CodeGen/SPIRV/pointers/kernel-argument-pointer-type.ll (revision 67d3ef74b31e1517d4f679e754cc2b3041c95901)
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
3
4; CHECK-DAG:  %[[#FLOAT32:]] = OpTypeFloat 32
5; CHECK-DAG:  %[[#PTR1:]] = OpTypePointer Function %[[#FLOAT32]]
6; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR1]]
7
8define spir_kernel void @test1(ptr %arg) !kernel_arg_type !1 {
9  %a = getelementptr inbounds float, ptr %arg, i64 1
10  ret void
11}
12
13!1 = !{!"float*"}
14
15; CHECK-DAG:  %[[#CHAR:]] = OpTypeInt 8 0
16; CHECK-DAG:  %[[#PTR2:]] = OpTypePointer Function %[[#CHAR]]
17; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR2]]
18
19define spir_kernel void @test2(ptr %arg) !kernel_arg_type !2 {
20  %a = getelementptr inbounds i8, ptr %arg, i64 1
21  ret void
22}
23
24!2 = !{!"char*"}
25
26; CHECK-DAG:  %[[#SHORT:]] = OpTypeInt 16 0
27; CHECK-DAG:  %[[#PTR3:]] = OpTypePointer Function %[[#SHORT]]
28; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR3]]
29
30define spir_kernel void @test3(ptr %arg) !kernel_arg_type !3 {
31  %a = getelementptr inbounds i16, ptr %arg, i64 1
32  ret void
33}
34
35!3 = !{!"short*"}
36
37; CHECK-DAG:  %[[#INT:]] = OpTypeInt 32 0
38; CHECK-DAG:  %[[#PTR4:]] = OpTypePointer Function %[[#INT]]
39; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR4]]
40
41define spir_kernel void @test4(ptr %arg) !kernel_arg_type !4 {
42  %a = getelementptr inbounds i32, ptr %arg, i64 1
43  ret void
44}
45
46!4 = !{!"int*"}
47
48; CHECK-DAG:  %[[#LONG:]] = OpTypeInt 64 0
49; CHECK-DAG:  %[[#PTR5:]] = OpTypePointer Function %[[#LONG]]
50; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR5]]
51
52define spir_kernel void @test5(ptr %arg) !kernel_arg_type !5 {
53  %a = getelementptr inbounds i64, ptr %arg, i64 1
54  ret void
55}
56
57!5 = !{!"long*"}
58
59; CHECK-DAG:  %[[#DOUBLE:]] = OpTypeFloat 64
60; CHECK-DAG:  %[[#PTR6:]] = OpTypePointer Function %[[#DOUBLE]]
61; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR6]]
62
63define spir_kernel void @test6(ptr %arg) !kernel_arg_type !6 {
64  %a = getelementptr inbounds double, ptr %arg, i64 1
65  ret void
66}
67
68!6 = !{!"double*"}
69
70; CHECK-DAG:  %[[#HALF:]] = OpTypeFloat 16
71; CHECK-DAG:  %[[#PTR7:]] = OpTypePointer Function %[[#HALF]]
72; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR7]]
73
74define spir_kernel void @test7(ptr %arg) !kernel_arg_type !7 {
75  %a = getelementptr inbounds half, ptr %arg, i64 1
76  ret void
77}
78
79!7 = !{!"half*"}
80