[Mlir-commits] [mlir] [mlir][ROCDL] Add tensor load and store instructions to ROCDL (PR #165016)
Ravil Dorozhinskii
llvmlistbot at llvm.org
Tue Oct 28 08:20:22 PDT 2025
================
@@ -663,6 +663,70 @@ def ROCDL_GlobalLoadLDSOp :
}];
}
+//===---------------------------------------------------------------------===//
+// Tensor load/store intrinsics (available in GFX1250)
+//===---------------------------------------------------------------------===//
+
+// Base class for tensor load/store operations with 4 descriptor groups.
+class ROCDL_TensorLDSIntrOp<string mnemonic> :
+ ROCDL_IntrOp<mnemonic, [], [], [], 0, 0, 1, 0, [4], ["cachePolicy"]> {
+ dag args = (ins LLVM_VectorOf<I32>:$dgroup0, LLVM_VectorOf<I32>:$dgroup1,
+ LLVM_VectorOf<I32>:$dgroup2, LLVM_VectorOf<I32>:$dgroup3,
+ I32Attr:$cachePolicy);
+ let arguments = !con(args, baseArgs);
+ let summary = "Base class for ROCDL tensor load/store to/from LDS.";
+ let description = [{
+ Moves tiles of tensor data between global memory and LDS. The tile is
+ described by the $dgroup descriptors. 4 $dgroup descriptors allows for
+ movement of up to 5D tensors. $cachePolicy describes the memory scope and an
+ indicator of expected data re-use.
+
+ This op is for gfx1250+ architectures.
+ }];
+ let assemblyFormat = [{
+ $dgroup0 `,` $dgroup1 `,` $dgroup2 `,` $dgroup3 `,` $cachePolicy
+ attr-dict `:` type($dgroup0) `,` type($dgroup1) `,` type($dgroup2) `,` type($dgroup3)
+ }];
----------------
ravil-mobile wrote:
The `assemblyFormat` could be
```
let assemblyFormat = [{
attr-dict operands `cachepolicy` $cachePolicy
}];
```
It is much more concise and `cache policy` becomes an explicit part of the Op.
https://github.com/llvm/llvm-project/pull/165016
More information about the Mlir-commits
mailing list