================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits