[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