[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