[Mlir-commits] [llvm] [mlir] [LLVM][NVPTX] Add Rubin extensions for G2S Tensor intrinsics (PR #220029)

Rajat Bajpai llvmlistbot at llvm.org
Sat Sep 5 03:40:22 PDT 2026


================
@@ -677,58 +677,94 @@ def CTAGroupFlags : Operand<i32> {
 def tma_cta_group_imm0 : TImmLeaf<i32, [{return Imm == 0;}]>;
 def tma_cta_group_imm_any : TImmLeaf<i32, [{return Imm >= 0;}]>;
 
+def TMAValidateDataFlags : Operand<i32> {
+  let PrintMethod = "printTMAValidateDataFlags";
+}
+
+// Matches validate pattern values 0-5. The 1-5 values are Rubin-only
+// validate patterns. 0 denotes disabled validate pattern (default).
+def tma_validate_data_imm : TImmLeaf<i32, [{
+  return Imm == 0 || (Imm >= 1 && Imm <= 5 &&
+                      Subtarget->hasFeature(NVPTX::SM107f));
+}]>;
+
 multiclass TMA_TENSOR_G2S_INTR<int dim, string mode, list<Predicate> pred,
                                TImmLeaf cta_group_type = tma_cta_group_imm_any> {
   defvar dims_dag = TMA_DIMS_DAG_UTIL<dim>.ins_dag;
   defvar dims_str = TMA_DIMS_DAG_UTIL<dim>.base_str;
-  defvar asm_str_base = "$cg [$dst], [$tmap, {{" # dims_str # "}}], [$mbar]";
-
+  defvar asm_str_base = " [$dst], [$tmap, {{" # dims_str # "}}], [$mbar]";
   defvar im2col_dag = TMA_IM2COL_UTIL<dim, mode>.ins_dag;
   defvar im2col_str = TMA_IM2COL_UTIL<dim, mode>.base_str;
-  defvar asm_str = !if(!empty(im2col_str),
-                       asm_str_base,
-                       asm_str_base # ", {{" # im2col_str # "}}");
-
+  defvar asm_str = !if(!empty(im2col_str), asm_str_base, asm_str_base # ", {{" # im2col_str # "}}");
   defvar dim_val = TMA_DIMS_UTIL<dim, mode>.num_dims;
+
   defvar inst_name = "cp.async.bulk.tensor"
                      # "." # dim_val # "d"
                      # "." # "shared::cluster.global"
                      # "." # !subst("_", "::", mode)
-                     # "." # "mbarrier::complete_tx::bytes";
+                     # "." # "mbarrier::complete_tx::bytes"
+                     # "$validate" # "$cg";
+
+  defvar ins_dag_base = !con(
+                          (ins ADDR:$dst, ADDR:$mbar, B64:$tmap),
+                          dims_dag, im2col_dag);
+  defvar ins_tail = (ins TMAValidateDataFlags:$validate, CTAGroupFlags:$cg);
----------------
rajatbajpai wrote:

sure, fine with me.

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


More information about the Mlir-commits mailing list