xref: /llvm-project/llvm/test/CodeGen/SPIRV/pointers/getelementptr-base-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:  %[[#FLOAT32:]] = OpTypeFloat 32
5; CHECK:  %[[#PTR:]] = OpTypePointer CrossWorkgroup %[[#FLOAT32]]
6; CHECK:  %[[#ARG:]] = OpFunctionParameter %[[#PTR]]
7; CHECK:  %[[#GEP:]] = OpInBoundsPtrAccessChain %[[#PTR]] %[[#ARG]] %[[#]]
8; CHECK:  %[[#]] = OpLoad %[[#FLOAT32]] %[[#GEP]] Aligned 4
9
10define spir_kernel void @test1(ptr addrspace(1) %arg1) !kernel_arg_addr_space !1 !kernel_arg_access_qual !2 !kernel_arg_type !3 !kernel_arg_type_qual !4 {
11  %a = getelementptr inbounds float, ptr addrspace(1) %arg1, i64 1
12  %b = load float, ptr addrspace(1) %a, align 4
13  ret void
14}
15
16!1 = !{i32 1}
17!2 = !{!"none"}
18!3 = !{!"float*"}
19!4 = !{!""}
20