[Mlir-commits] [mlir] [ROCDL] Added matrix load-transpose ops for gfx1250+ (PR #165564)
Ravil Dorozhinskii
llvmlistbot at llvm.org
Mon Nov 10 07:13:52 PST 2025
================
@@ -650,6 +649,58 @@ def ROCDL_ds_read_tr8_b64 : ROCDL_LDS_Read_Tr_IntrOp<"ds.read.tr8.b64">;
def ROCDL_ds_read_tr6_b96 : ROCDL_LDS_Read_Tr_IntrOp<"ds.read.tr6.b96">;
def ROCDL_ds_read_tr16_b64 : ROCDL_LDS_Read_Tr_IntrOp<"ds.read.tr16.b64">;
+
+
+//===---------------------------------------------------------------------===//
+// Glb/DS load-transpose intrinsics (available in GFX1250+)
+
+class AddrKind<string n, int s> {
+ string name = n;
+ int space = s;
+}
+def GlobalAddrKind : AddrKind<"global", 1>;
+def DSAddrKind : AddrKind<"ds", 3>;
+
+class ROCDL_TrLoadOpMeta<AddrKind kind, int inElemBits, int outElemBits> {
+ AddrKind addrKind = kind;
+ string inBits = !cast<string>(inElemBits);
+ string outBits = !cast<string>(outElemBits);
+ string inBitsEnc = !if(!eq(addrKind.space, 1),
+ !if(!or(!eq(inElemBits, 8), !eq(inElemBits, 16)), "", inBits), inBits);
+ string mnemonic = addrKind.name # ".load.tr" # inBitsEnc # ".b" # outBits;
+}
+
+class ROCDL_TrLoadOp<ROCDL_TrLoadOpMeta meta> :
+ ROCDL_IntrOp<meta.mnemonic, [1], [], [], 1, 0, 1> {
+
+ dag args = (ins Arg<LLVM_PointerInAddressSpace<meta.addrKind.space>, "", [MemRead]>:$ptr);
+ let arguments = !con(args, baseArgs);
+ let summary = "Loads and transposes a matrix from " # meta.addrKind.name # " memory or ds to registers (available in gfx1250+).";
+ let description = [{
+ Load a matrix of }] # meta.inBits # [{-bit data from the }] # meta.addrKind.name # [{ memory,
+ transpose data between row-major and column-major order,
+ and store the result into a }] # meta.outBits # [{-bit vector register.
----------------
ravil-mobile wrote:
@krzysz00, do you mean in the future, right?
https://github.com/llvm/llvm-project/pull/165564
More information about the Mlir-commits
mailing list