xref: /llvm-project/llvm/test/CodeGen/SPIRV/pointers/kernel-argument-pointer-addressspace.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:  %[[#INT:]] = OpTypeInt 32 0
5; CHECK-DAG:  %[[#PTR1:]] = OpTypePointer Function %[[#INT]]
6; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR1]]
7
8define spir_kernel void @test1(ptr addrspace(0) %arg1) !kernel_arg_addr_space !1 !kernel_arg_type !2 {
9  %a = getelementptr inbounds i32, ptr addrspace(0) %arg1, i32 2
10  ret void
11}
12
13!1 = !{i32 0}
14!2 = !{!"int*"}
15
16; CHECK-DAG:  %[[#PTR2:]] = OpTypePointer CrossWorkgroup %[[#INT]]
17; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR2]]
18
19define spir_kernel void @test2(ptr addrspace(1) %arg1) !kernel_arg_addr_space !3 !kernel_arg_type !2 {
20  %a = getelementptr inbounds i32, ptr addrspace(1) %arg1, i32 2
21  ret void
22}
23
24!3 = !{i32 1}
25
26; CHECK-DAG:  %[[#PTR3:]] = OpTypePointer UniformConstant %[[#INT]]
27; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR3]]
28
29define spir_kernel void @test3(ptr addrspace(2) %arg1) !kernel_arg_addr_space !4 !kernel_arg_type !2 {
30  %a = getelementptr inbounds i32, ptr addrspace(2) %arg1, i32 2
31  ret void
32}
33
34!4 = !{i32 2}
35
36; CHECK-DAG:  %[[#PTR4:]] = OpTypePointer Workgroup %[[#INT]]
37; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR4]]
38
39define spir_kernel void @test4(ptr addrspace(3) %arg1) !kernel_arg_addr_space !5 !kernel_arg_type !2 {
40  %a = getelementptr inbounds i32, ptr addrspace(3) %arg1, i32 2
41  ret void
42}
43
44!5 = !{i32 3}
45
46; CHECK-DAG:  %[[#PTR5:]] = OpTypePointer Generic %[[#INT]]
47; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR5]]
48
49define spir_kernel void @test5(ptr addrspace(4) %arg1) !kernel_arg_addr_space !6 !kernel_arg_type !2 {
50  %a = getelementptr inbounds i32, ptr addrspace(4) %arg1, i32 2
51  ret void
52}
53
54!6 = !{i32 4}
55
56; CHECK-DAG:  %[[#PTR6:]] = OpTypePointer Input %[[#INT]]
57; CHECK-DAG:  %[[#ARG:]] = OpFunctionParameter %[[#PTR6]]
58
59define spir_kernel void @test6(ptr addrspace(7) %arg1) !kernel_arg_addr_space !7 !kernel_arg_type !2 {
60  %a = getelementptr inbounds i32, ptr addrspace(7) %arg1, i32 2
61  ret void
62}
63
64!7 = !{i32 7}
65