aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
diff options
context:
space:
mode:
authorDmitry Sidorov <dmitry.sidorov@intel.com>2025-02-20 10:27:15 +0100
committerGitHub <noreply@github.com>2025-02-20 10:27:15 +0100
commit55fa2fa3480928d2ce6e06336842f673ac92f9d3 (patch)
tree3bcfa76c8bf34d172f5e53e08d39dc9a111d7833 /llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
parente264317b45163f5c3ba7fc5375dcdecd827fce95 (diff)
downloadllvm-55fa2fa3480928d2ce6e06336842f673ac92f9d3.zip
llvm-55fa2fa3480928d2ce6e06336842f673ac92f9d3.tar.gz
llvm-55fa2fa3480928d2ce6e06336842f673ac92f9d3.tar.bz2
[SPIR-V] Add SPV_INTEL_bindless_images extension (#127737)
Adds instructions to convert convert unsigned integer handles to images, samplers and sampled images. Spec: https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_bindless_images.asciidoc --------- Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp')
-rw-r--r--llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
index a7a5ece..4070347 100644
--- a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
@@ -1677,6 +1677,17 @@ void addInstrRequirements(const MachineInstr &MI,
Reqs.addCapability(
SPIRV::Capability::CooperativeMatrixInvocationInstructionsINTEL);
break;
+ case SPIRV::OpConvertHandleToImageINTEL:
+ case SPIRV::OpConvertHandleToSamplerINTEL:
+ case SPIRV::OpConvertHandleToSampledImageINTEL:
+ if (!ST.canUseExtension(SPIRV::Extension::SPV_INTEL_bindless_images))
+ report_fatal_error("OpConvertHandleTo[Image/Sampler/SampledImage]INTEL "
+ "instructions require the following SPIR-V extension: "
+ "SPV_INTEL_bindless_images",
+ false);
+ Reqs.addExtension(SPIRV::Extension::SPV_INTEL_bindless_images);
+ Reqs.addCapability(SPIRV::Capability::BindlessImagesINTEL);
+ break;
case SPIRV::OpKill: {
Reqs.addCapability(SPIRV::Capability::Shader);
} break;