[clang] [llvm] [AArch64][clang][llvm] Add structured sparsity outer product (TMOP) intrinsics (PR #135145)

Jonathan Thackray via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 16 01:53:20 PDT 2025


================
@@ -104,6 +104,16 @@ class sme_outer_product_pseudo<ZPRRegOp zpr_ty, SMEMatrixTypeEnum za_flag>
   let usesCustomInserter = 1;
 }
 
+class sme_sparse_outer_product_pseudo<RegisterOperand zn_ty, RegisterOperand zm_ty, SMEMatrixTypeEnum za_flag>
+    : Pseudo<(outs), (ins i32imm:$tile, zn_ty:$zn, zm_ty:$zm, ZK:$zk, i32imm:$idx), []>,
+      Sched<[]> {
+  // Translated to the actual instructions in AArch64ISelLowering.cpp
+  let SMEMatrixType = za_flag;
+  let usesCustomInserter = 1;
+  let mayLoad = 1;
----------------
jthackray wrote:

As mentioned we are modelling ZA accesses as inaccessible memory accesses, therefore instructions to which these intrinsics are lowered need to be marked as reading and writing to memory.


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


More information about the llvm-commits mailing list