[llvm] [NVVM][NVPTX] Support decompress_b feature for tcgen05.mma intrinsics (PR #216312)

Rajat Bajpai via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 19 03:00:23 PDT 2026


================
@@ -3565,6 +3604,101 @@ foreach sparse = [0, 1] in {
   } // space
 } // sparse
 
+//
+// tcgen05.mma decompress intrinsics
+//
+foreach space = ["tensor", "shared"] in {
+  defvar mma = NVVM_TCGEN05_MMA_DECOMPRESS<space, "f8f6f4">;
+  defvar args = !listconcat(
+                  mma.common_args,
+                  [llvm_tmem_ptr_ty] // decompress_b
+                );
+  defvar flags = [llvm_i32_ty,  // cta_group
+                  llvm_i32_ty,  // collector_usage_a
+                  llvm_i32_ty]; // collector_usage_b
+  defvar nargs = !size(args);
+  defvar cta_group = ArgIndex<nargs>;
+  defvar collector_usage_a = ArgIndex<!add(nargs, 1)>;
+  defvar collector_usage_b = ArgIndex<!add(nargs, 2)>;
+
+  defvar intrinsic_properties = !listconcat(
+      mma.common_intr_props,
+      [Range<cta_group, 1, 3>,
+       Range<collector_usage_a, 0, 4>,
+       Range<collector_usage_b, 0, 4>,
+       ArgInfo<cta_group, [ArgName<"cta_group">]>,
+       ArgInfo<collector_usage_a, [ArgName<"collector_a">, ImmArgPrinter<"printTcgen05CollectorUsageOp">]>,
----------------
rajatbajpai wrote:

should we have a util to provide this property? I see it in multiple ops now. Something along the lines of.

```
class NVVM_COLLECTOR_ARGPROP<int col_idx, string buffer = "a">
list<IntrinsicProperty> Prop = ...

...

NVVM_COLLECTOR_ARGPROP<collector_usage_a>.Prop
NVVM_COLLECTOR_ARGPROP<collector_usage_b, "b">.Prop
```

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


More information about the llvm-commits mailing list