@@ -6055,6 +6055,15 @@ multiclass SIMDThreeSameVectorFML<bit U, bit b13, bits<3> size, string asm,
60556055 v4f32, v8f16, OpNode>;
60566056}
60576057
6058+ multiclass SIMDThreeSameVectorMLA<bit Q, string asm>{
6059+ def v8f16 : BaseSIMDThreeSameVectorDot<Q, 0b0, 0b11, 0b1111, asm, ".8h", ".16b",
6060+ V128, v8f16, v16i8, null_frag>;
6061+ }
6062+
6063+ multiclass SIMDThreeSameVectorMLAL<bit Q, bits<2> sz, string asm>{
6064+ def v4f32 : BaseSIMDThreeSameVectorDot<Q, 0b0, sz, 0b1000, asm, ".4s", ".16b",
6065+ V128, v4f32, v16i8, null_frag>;
6066+ }
60586067
60596068// FP8 assembly/disassembly classes
60606069
@@ -8521,6 +8530,31 @@ class BF16ToSinglePrecision<string asm>
85218530}
85228531} // End of let mayStore = 0, mayLoad = 0, hasSideEffects = 0
85238532
8533+ //----------------------------------------------------------------------------
8534+ class BaseSIMDThreeSameVectorIndexB<bit Q, bit U, bits<2> sz, bits<4> opc,
8535+ string asm, string dst_kind,
8536+ RegisterOperand RegType,
8537+ RegisterOperand RegType_lo>
8538+ : BaseSIMDIndexedTied<Q, U, 0b0, sz, opc,
8539+ RegType, RegType, RegType_lo, VectorIndexB,
8540+ asm, "", dst_kind, ".16b", ".b", []> {
8541+
8542+ // idx = H:L:M
8543+ bits<4> idx;
8544+ let Inst{11} = idx{3};
8545+ let Inst{21-19} = idx{2-0};
8546+ }
8547+
8548+ multiclass SIMDThreeSameVectorMLAIndex<bit Q, string asm> {
8549+ def v8f16 : BaseSIMDThreeSameVectorIndexB<Q, 0b0, 0b11, 0b0000, asm, ".8h",
8550+ V128, V128_0to7>;
8551+ }
8552+
8553+ multiclass SIMDThreeSameVectorMLALIndex<bit Q, bits<2> sz, string asm> {
8554+ def v4f32 : BaseSIMDThreeSameVectorIndexB<Q, 0b1, sz, 0b1000, asm, ".4s",
8555+ V128, V128_0to7>;
8556+ }
8557+
85248558//----------------------------------------------------------------------------
85258559// Armv8.6 Matrix Multiply Extension
85268560//----------------------------------------------------------------------------
0 commit comments