[llvm] [SPIRV] Added constraint for SPV_INTEL_bindless_image extension (PR #160089)

Dmitry Sidorov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 22 09:01:38 PDT 2025


================
@@ -1738,15 +1738,42 @@ void addInstrRequirements(const MachineInstr &MI,
     break;
   case SPIRV::OpConvertHandleToImageINTEL:
   case SPIRV::OpConvertHandleToSamplerINTEL:
-  case SPIRV::OpConvertHandleToSampledImageINTEL:
+  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);
+    SPIRVGlobalRegistry *GR = ST.getSPIRVGlobalRegistry();
+    SPIRV::AddressingModel::AddressingModel AddrModel;
+    unsigned PointerSize = ST.getPointerSize();
+    AddrModel = PointerSize == 32 ? SPIRV::AddressingModel::Physical32
+                                  : SPIRV::AddressingModel::Physical64;
+    SPIRVType *TyDef = GR->getSPIRVTypeForVReg(MI.getOperand(1).getReg());
+    if (!(TyDef->getOpcode() == SPIRV::OpTypeImage &&
+          MI.getOpcode() == SPIRV::OpConvertHandleToImageINTEL) &&
+        !(TyDef->getOpcode() == SPIRV::OpTypeSampler &&
+          MI.getOpcode() == SPIRV::OpConvertHandleToSamplerINTEL) &&
+        !(TyDef->getOpcode() == SPIRV::OpTypeSampledImage &&
+          MI.getOpcode() == SPIRV::OpConvertHandleToSampledImageINTEL))
+      report_fatal_error("Incorrect return type of the instruction", false);
+    SPIRVType *SpvTy = GR->getSPIRVTypeForVReg(MI.getOperand(2).getReg());
+    if (SpvTy->getOpcode() != SPIRV::OpTypeInt) {
+      SpvTy = GR->getSPIRVTypeForVReg(SpvTy->getOperand(1).getReg());
+    }
----------------
MrSidims wrote:

I don't understand these lines, could you please elaborate what other type it could be?

https://github.com/llvm/llvm-project/pull/160089


More information about the llvm-commits mailing list