[llvm] [SPIR-V] Add SPV_INTEL_bindless_images extension (PR #127737)
Dmitry Sidorov via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 19 02:59:31 PST 2025
================
@@ -1043,6 +1043,37 @@ static bool buildExtendedBitOpsInst(const SPIRV::IncomingCall *Call,
return true;
}
+/// Helper function for building Intel's bindless image instructions.
+static bool buildBindlessImageINTELInst(const SPIRV::IncomingCall *Call,
+ unsigned Opcode,
+ MachineIRBuilder &MIRBuilder,
+ SPIRVGlobalRegistry *GR) {
+ const SPIRV::DemangledBuiltin *Builtin = Call->Builtin;
+ const auto *ST =
+ static_cast<const SPIRVSubtarget *>(&MIRBuilder.getMF().getSubtarget());
+ if ((Opcode == SPIRV::OpConvertHandleToImageINTEL ||
+ Opcode == SPIRV::OpConvertHandleToSamplerINTEL ||
+ Opcode == SPIRV::OpConvertHandleToSampledImageINTEL) &&
+ !ST->canUseExtension(SPIRV::Extension::SPV_INTEL_bindless_images)) {
+ std::string DiagMsg = std::string(Builtin->Name) +
+ ": the builtin requires the following SPIR-V "
+ "extension: SPV_INTEL_bindless_images";
+ report_fatal_error(DiagMsg.c_str(), false);
+ }
+
+ // Generate SPIRV instruction accordingly.
+ if (Call->isSpirvOp())
+ return buildOpFromWrapper(MIRBuilder, Opcode, Call,
+ GR->getSPIRVTypeID(Call->ReturnType));
+
+ auto MIB = MIRBuilder.buildInstr(Opcode)
+ .addDef(Call->ReturnRegister)
+ .addUse(GR->getSPIRVTypeID(Call->ReturnType));
+ MIB.addUse(Call->Arguments[0]);
----------------
MrSidims wrote:
Just a copy-paste error due to late hours
https://github.com/llvm/llvm-project/pull/127737
More information about the llvm-commits
mailing list