[clang] [llvm] [mlir] [NVPTX] Add support for Shared Cluster Memory address space. (PR #135444)

via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 15 15:19:43 PDT 2025


================
@@ -4704,6 +4754,43 @@ void llvm::UpgradeIntrinsicCall(CallBase *CI, Function *NewFn) {
     CI->eraseFromParent();
     return;
   }
+  case Intrinsic::nvvm_mapa_shared_cluster: {
+    // Create a new call with the correct address space.
+    NewCall =
+        Builder.CreateCall(NewFn, {CI->getArgOperand(0), CI->getArgOperand(1)});
+    Value *Res = NewCall;
+    Res = Builder.CreateAddrSpaceCast(
+        Res, Builder.getPtrTy(NVPTXAS::ADDRESS_SPACE_GENERIC));
+    Res = Builder.CreateAddrSpaceCast(
+        Res, Builder.getPtrTy(NVPTXAS::ADDRESS_SPACE_SHARED));
----------------
modiking wrote:

Not in this case. `nvvm_mapa_shared_cluster` when upgraded returns a `shared_cluster` pointer but the original IR expects a `shared` pointer so the casts are done accordingly

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


More information about the cfe-commits mailing list