[llvm] [LLVM][NVPTX] Add support for TMA prefetch Rubin extensions (PR #217630)
Durgadoss R via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 21 04:59:54 PDT 2026
================
@@ -3123,6 +3261,59 @@ let IntrProperties = [IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<
: DefaultAttrsIntrinsic<[], [llvm_ptr_ty, llvm_i64_ty]>;
}
+// Aapplypriority bulk variants.
+def int_nvvm_applypriority_async_bulk_evict_priority
+ : DefaultAttrsIntrinsic<[],
+ [llvm_global_ptr_ty, // global_ptr
+ llvm_i32_ty, // size (byte length; must be a multiple of 16)
+ llvm_i32_ty], // evict_policy
+ !listconcat([IntrConvergent, IntrArgMemOnly,
+ ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>],
+ NVVM_EVICT_POLICY_ARGPROP<2, 1>.Prop)>;
+
+// Applypriority TMA variants.
+foreach dim = 1...5 in {
+ foreach mode = !if(!ge(dim, 3),
+ ["tile", "im2col", "im2col_w", "im2col_w_128"], ["tile"]) in {
+ foreach ap_tensor =
+ [APPLYPRIORITY_BULK_TENSOR_INTR<dim, mode>] in
+ def ap_tensor.Name : DefaultAttrsIntrinsic<[], ap_tensor.ArgsTy,
+ ap_tensor.IntrProp>;
+ }
+}
+// Applypriority TMA variants for tile::gather4.
+def int_nvvm_applypriority_async_bulk_tensor_evict_priority_tile_gather4_2d
+ : DefaultAttrsIntrinsic<[],
+ !listconcat([llvm_ptr_ty], // tensormap_ptr
+ !listsplat(llvm_i32_ty, 5), // co-ordinates (d0..d4)
+ [llvm_i32_ty]), // evict_policy
+ !listconcat([IntrConvergent, ReadOnly<ArgIndex<0>>],
+ NVVM_EVICT_POLICY_ARGPROP<6, 1>.Prop)>;
+
+// Applypriority TMA variants with override global address.
+foreach dim = 1...5 in {
+ foreach mode = !if(!ge(dim, 3),
+ ["tile", "im2col", "im2col_w", "im2col_w_128"], ["tile"]) in {
----------------
durga4github wrote:
nit: as a separate NFC, seems we should move this also to the TMA_UTILS base class..
https://github.com/llvm/llvm-project/pull/217630
More information about the llvm-commits
mailing list