[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