[clang] [llvm] [Clang][LLVM] Implement single-multi vectors MOP4{A/S} (PR #128854)
Jonathan Thackray via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 27 14:09:18 PST 2025
================
@@ -600,35 +624,65 @@ class sme_quarter_outer_product_i16_i32<bit u0, bit N, bit M, bit subtr, Registe
let Constraints = "$ZAda = $_ZAda";
}
-multiclass sme_quarter_outer_product_i8_i32<bit zn_u, bit zm_u, bit subtr, string mnemonic>{
+multiclass sme_quarter_outer_product_i8_i32<bit zn_u, bit zm_u, bit subtr, string mnemonic, string op>{
def _MZZ_BToS : sme_quarter_outer_product_i8_i32<{zn_u, 0}, {zm_u, 0}, subtr,
- ZPR8Mul2_Lo, ZPR8Mul2_Hi, mnemonic>;
+ ZPR8Mul2_Lo, ZPR8Mul2_Hi, mnemonic>, SMEPseudo2Instr<NAME # _MZZ_BToS, 1>;
+
+ def NAME # _MZZ_BToS # _PSEUDO : sme2_quarter_tile_outer_product_pseudo_single_single<ZPR8Mul2_Lo, ZPR8Mul2_Hi, SMEMatrixTileS>, SMEPseudo2Instr<NAME # _MZZ_BToS, 0>;
+
+ def : SME2_ZA_Tile_TwoVec_Pat<NAME # _MZZ_BToS, !cast<SDPatternOperator>(op # "_1x1"), timm32_0_3, nxv16i8>;
+
def _M2ZZ_BToS : sme_quarter_outer_product_i8_i32<{zn_u, 1}, {zm_u, 0}, subtr,
ZZ_b_mul_r_Lo, ZPR8Mul2_Hi, mnemonic>;
----------------
jthackray wrote:
Add `// Single and multiple vectors`, similar to lower down, for consistency.
https://github.com/llvm/llvm-project/pull/128854
More information about the cfe-commits
mailing list