diff options
author | Dmitry Sidorov <dmitry.sidorov@intel.com> | 2025-02-20 10:27:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-20 10:27:15 +0100 |
commit | 55fa2fa3480928d2ce6e06336842f673ac92f9d3 (patch) | |
tree | 3bcfa76c8bf34d172f5e53e08d39dc9a111d7833 /llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp | |
parent | e264317b45163f5c3ba7fc5375dcdecd827fce95 (diff) | |
download | llvm-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.cpp | 11 |
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; |