[llvm] [SPIRV] Legalize byte-buffer reinterpretation ptrcasts (#192523) (PR #212999)

Tim Corringham via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 25 03:08:43 PDT 2026


================
@@ -222,15 +222,207 @@ class SPIRVLegalizePointerCastImpl {
     return std::make_pair(GEP, CurrentTy);
   }
 
+  static IntrinsicInst *getResourceGetPointer(Value *Ptr) {
+    if (auto *II = dyn_cast<IntrinsicInst>(Ptr))
+      if (II->getIntrinsicID() == Intrinsic::spv_resource_getpointer)
+        return II;
+    return nullptr;
+  }
+
+  Value *gepByteOffset(IRBuilder<> &B, Value *BasePtr, unsigned ByteOffset) {
+    if (ByteOffset == 0)
+      return BasePtr;
+
+    IntrinsicInst *ResourcePtr = getResourceGetPointer(BasePtr);
+    assert(ResourcePtr &&
+           "byte layout pointer must come from spv.resource.getpointer");
----------------
tcorringham wrote:

I've changed it to a guard for a non-null ResourcePtr and a fall through to llvm_unreachable.

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


More information about the llvm-commits mailing list