[llvm] [NVPTX] Fix and refine prefetch.* intrinsics (PR #126899)

Durgadoss R via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 12 05:59:53 PST 2025


================
@@ -5001,22 +5001,26 @@ foreach dim = [1, 2, 3, 4, 5] in {
 }
 
 // Intrinsics for Prefetch and Prefetchu
-foreach level = ["L1", "L2"] in {
-   foreach addr = ["global", "local", ""] in {
-     foreach evict = !if(!eq(addr, "global"), ["evictlast", "evictnormal"], ["evictnormal"]) in {
-      defvar suffix = "" # !if(!eq(addr, ""), "", addr # "_") # level # "_" # evict;             
-      def int_nvvm_prefetch_ # suffix : Intrinsic<[], 
-                                        !cond(
-                                        !eq(addr, "global") : [llvm_global_ptr_ty],
-                                        !eq(addr, "local") : [llvm_local_ptr_ty],
-                                        !eq(addr, "") : [llvm_ptr_ty]),
-                                        [IntrArgMemOnly, ReadOnly<ArgIndex<0>>,
-                                        NoCapture<ArgIndex<0>>]>;   
-    }
-  }
-}
+def int_nvvm_prefetch_L1 : Intrinsic<[], [llvm_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+def int_nvvm_prefetch_L2 : Intrinsic<[], [llvm_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+def int_nvvm_prefetch_global_L1 :  Intrinsic<[], [llvm_global_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+def int_nvvm_prefetch_global_L2 :  Intrinsic<[], [llvm_global_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+def int_nvvm_prefetch_local_L1 :  Intrinsic<[], [llvm_local_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+def int_nvvm_prefetch_local_L2 :  Intrinsic<[], [llvm_local_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
+  
+def int_nvvm_prefetch_global_L2_evictnormal: Intrinsic<[], [llvm_global_ptr_ty],
+  [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
----------------
durga4github wrote:

I am wondering if we should name them "evict_normal", "evict_last" like how the instructions are named in the ISA.
This way, if we do string to intrinsic casts, we will not miss the underscores.

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


More information about the llvm-commits mailing list