================
@@ -721,16 +733,26 @@ generateAssignInstrs(MachineFunction &MF, 
SPIRVGlobalRegistry *GR,
         Register Reg = MI.getOperand(1).getReg();
         MIB.setInsertPt(*MI.getParent(), MI.getIterator());
         Type *ElementTy = getMDOperandAsType(MI.getOperand(2).getMetadata(), 
0);
-        SPIRVTypeInst AssignedPtrType = GR->getOrCreateSPIRVPointerType(
-            ElementTy, MI,
-            addressSpaceToStorageClass(MI.getOperand(3).getImm(), *ST));
+        auto SC = addressSpaceToStorageClass(MI.getOperand(3).getImm(), *ST);
+        SPIRVTypeInst AssignedPtrType =
+            GR->getOrCreateSPIRVPointerType(ElementTy, MI, SC);
+
+        // For untyped pointers, store the element type for later use.
+        if (ST->canUseExtension(SPIRV::Extension::SPV_KHR_untyped_pointers) &&
+            !ST->isShader()) {
+          SPIRVTypeInst ElemSpvType = GR->getOrCreateSPIRVType(
+              ElementTy, MIB, SPIRV::AccessQualifier::ReadWrite, true);
+          GR->setUntypedPtrElementType(Reg, ElemSpvType);
+        }
+
         // The intrinsic also carries vector-of-pointer values produced by
         // scalarized vector GEPs; wrap the pointer in OpTypeVector to match
         // the vreg's LLT.
         LLT RegTy = MRI.getType(Reg);
         if (RegTy.isValid() && RegTy.isVector())
           AssignedPtrType = GR->getOrCreateSPIRVVectorType(
               AssignedPtrType, RegTy.getNumElements(), MIB, true);
+
----------------
MrSidims wrote:

fixed

https://github.com/llvm/llvm-project/pull/201233
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to