[llvm] [SPIR-V] Implement SPV_KHR_untyped_pointers extension (PR #201233)
Arseniy Obolenskiy via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 9 08:49:49 PDT 2026
================
@@ -1252,6 +1253,38 @@ static bool generateExtInst(const SPIRV::IncomingCall *Call,
: SPIRV::OpenCLExtInst::fmax;
}
+ // ExtInst prefetch cannot take an untyped pointer, so emit
+ // OpUntypedPrefetchKHR with Num Bytes = num elements * element byte size.
+ if (Number == SPIRV::OpenCLExtInst::prefetch && Call->Arguments.size() >= 2) {
+ Register PtrReg = Call->Arguments[0];
+ SPIRVTypeInst PtrTy = GR->getSPIRVTypeForVReg(PtrReg);
+ if (PtrTy && PtrTy->getOpcode() == SPIRV::OpTypeUntypedPointerKHR) {
+ MachineRegisterInfo *MRI = MIRBuilder.getMRI();
+ Register NumElems = Call->Arguments[1];
+ SPIRVTypeInst SizeTy = GR->getSPIRVTypeForVReg(NumElems);
+ unsigned ElemBytes = GR->getDeducedPointeeByteSize(CB.getArgOperand(0));
+ Register NumBytes = NumElems;
+ if (ElemBytes > 1 && SizeTy) {
+ Register ElemBytesReg = GR->buildConstantInt(ElemBytes, MIRBuilder,
+ SizeTy, /*EmitIR=*/true);
----------------
aobolensk wrote:
is outstanding EmitIR == true intentional here?
https://github.com/llvm/llvm-project/pull/201233
More information about the llvm-commits
mailing list