[llvm] [NVPTX] Add prefetch tensormap variant (PR #146203)

Abhilash Majumder via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 7 08:35:34 PDT 2025


================
@@ -744,35 +750,50 @@ foreach dim = [1, 2, 3, 4, 5] in {
   }
 }
 
-//Prefetch and Prefetchu 
+//Prefetchu and Prefetch
+
+class PREFETCH_CONST_CHK<dag frag>
+          : PatFrag<!setdagop(frag, ops), frag, AS_match.const>;
+class PREFETCH_GENERIC_CHK<dag frag>
+          : PatFrag<!setdagop(frag, ops), frag, AS_match.generic>;
+class PREFETCH_PARAM_CHK<dag frag>
+          : PatFrag<!setdagop(frag, ops), frag, AS_match.param>;
+
+defvar frag_pat = (int_nvvm_prefetch_tensormap node:$addr);
+
+def prefetch_tensormap_const : PREFETCH_CONST_CHK<frag_pat>;
+def prefetch_tensormap_gen   : PREFETCH_GENERIC_CHK<frag_pat>;
+def prefetch_tensormap_param : PREFETCH_PARAM_CHK<frag_pat>;
 
-class PREFETCH_INTRS<string InstName> :
+def PREFETCH_CONST_TENSORMAP : NVPTXInst<(outs), (ins ADDR:$addr),
+          "prefetch.const.tensormap [$addr];",
+          [(prefetch_tensormap_const addr:$addr)]>;
+
+def PREFETCH_GENERIC_TENSORMAP : NVPTXInst<(outs), (ins ADDR:$addr),
+          "prefetch.tensormap [$addr];",
+          [(prefetch_tensormap_gen addr:$addr)]>; 
+
+def PREFETCH_PARAM_TENSORMAP : NVPTXInst<(outs), (ins ADDR:$addr),
+          "prefetch.param.tensormap [$addr];",
+          [(prefetch_tensormap_param addr:$addr)]>; 
+
+  
+class PREFETCH_INTRS<string InstName, Intrinsic Intr> :
           BasicNVPTXInst<(outs), (ins ADDR:$addr),
           InstName,
-          [(!cast<Intrinsic>(!strconcat("int_nvvm_",
-          !subst(".", "_", InstName))) addr:$addr)]>,
-          Requires<[hasPTX<80>, hasSM<90>]>;
----------------
abhilash1910 wrote:

Yes this needs to be added, fixing in progress. Thanks

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


More information about the llvm-commits mailing list