blob: a22fb41da89307b209abb55a4d043374607c434f [file] [edit]
; RUN: llc -mtriple=spirv1.6-unknown-vulkan1.3-compute %s -o - | FileCheck %s
; RUN: %if spirv-tools %{ llc -mtriple=spirv1.6-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %}
; A function-local aggregate containing a storage buffer pointer requires
; VariablePointersStorageBuffer, even when the pointer is nested.
%struct.A = type { target("spirv.VulkanBuffer", [0 x i32], 12, 1) }
define void @main() #0 {
entry:
%a = alloca %struct.A, align 4
store volatile %struct.A zeroinitializer, ptr %a, align 4
ret void
}
; CHECK: OpCapability VariablePointersStorageBuffer
; CHECK: %[[BUFFER:[0-9]+]] = OpTypePointer StorageBuffer
; CHECK: %[[A:[0-9]+]] = OpTypeStruct %[[BUFFER]]
; CHECK: %[[A_PTR:[0-9]+]] = OpTypePointer Function %[[A]]
; CHECK: OpVariable %[[A_PTR]] Function
attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }