The SPIRV backend has a special type named `spirv.Image`. This type is meant to correspond to the OpTypeImage instruction in SPIR-V, but there is one difference. The access qualifier operand in OpTypeImage is optional. On top of that, the access qualifiers are only valid for kernels, and not for shaders. We want to reuse this type when generating shader from HLSL, but we can't use the access qualifier. This commit make the access qualifer optional in the target extension type. The same is done for `spirv.SampledImage`. Contributes to #81036
22 lines
1.1 KiB
LLVM
22 lines
1.1 KiB
LLVM
; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-vulkan-library %s -o - | FileCheck %s
|
|
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-library %s -o - -filetype=obj | spirv-val %}
|
|
|
|
; CHECK-DAG: [[Float:%[0-9]+]] = OpTypeFloat 32
|
|
; CHECK-DAG: [[Void:%[0-9]+]] = OpTypeVoid
|
|
; CHECK-DAG: [[ImageType:%[0-9]+]] = OpTypeImage [[Float]] Buffer 2 0 0 1 R32i {{$}}
|
|
; CHECK-DAG: [[ImageFuncType:%[0-9]+]] = OpTypeFunction [[Void]] [[ImageType]]
|
|
; CHECK-DAG: [[SampledImageType:%[0-9]+]] = OpTypeSampledImage [[ImageType]]
|
|
; CHECK-DAG: [[SampledImageFuncType:%[0-9]+]] = OpTypeFunction [[Void]] [[SampledImageType]]
|
|
|
|
; CHECK: {{%[0-9]+}} = OpFunction [[Void]] DontInline [[ImageFuncType]]
|
|
define void @ImageWithNoAccessQualifier(target("spirv.Image", float, 5, 2, 0, 0, 1, 24) %img) #0 {
|
|
ret void
|
|
}
|
|
|
|
; CHECK: {{%[0-9]+}} = OpFunction [[Void]] DontInline [[SampledImageFuncType]]
|
|
define void @SampledImageWithNoAccessQualifier(target("spirv.SampledImage", float, 5, 2, 0, 0, 1, 24) %img) #0 {
|
|
ret void
|
|
}
|
|
|
|
attributes #0 = { convergent noinline norecurse "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
|