[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