[clang] [llvm] [SPIR-V] Implement SPV_KHR_untyped_pointers extension (PR #201233)

Dmitry Sidorov via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 4 08:55:24 PDT 2026


================
@@ -2038,14 +2089,23 @@ SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateSPIRVPointerType(
   assert(!storageClassRequiresExplictLayout(SC));
   SPIRVTypeInst R = getOrCreateSPIRVPointerType(LLVMType, MIRBuilder, SC);
   assert(
-      getPointeeType(R) == BaseType &&
+      (R->getOpcode() == SPIRV::OpTypeUntypedPointerKHR ||
+       getPointeeType(R) == BaseType) &&
       "The base type was not correctly laid out for the given storage class.");
   return R;
 }
 
 SPIRVTypeInst SPIRVGlobalRegistry::getOrCreateSPIRVPointerTypeInternal(
     SPIRVTypeInst BaseType, MachineIRBuilder &MIRBuilder,
-    SPIRV::StorageClass::StorageClass SC) {
+    SPIRV::StorageClass::StorageClass SC, bool ForceTyped) {
+  // Check if we should use untyped pointers.
+  const SPIRVSubtarget &ST =
+      cast<SPIRVSubtarget>(MIRBuilder.getMF().getSubtarget());
+  if (!ForceTyped &&
+      ST.canUseExtension(SPIRV::Extension::SPV_KHR_untyped_pointers) &&
+      !ST.isShader() && !isSpecialOpaqueElementType(BaseType))
----------------
MrSidims wrote:

Done

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


More information about the llvm-commits mailing list