@@ -9042,30 +9042,6 @@ multiclass sve_float_dot_indexed<bit bf, bits<2> opc, ZPRRegOp src1_ty,
90429042 def : SVE_4_Op_Imm_Pat<nxv4f32, op, nxv4f32, InVT, InVT, i32, VectorIndexS32b_timm, !cast<Instruction>(NAME)>;
90439043}
90449044
9045- class sve_bfloat_matmul<string asm>
9046- : I<(outs ZPR32:$Zda), (ins ZPR32:$_Zda, ZPR16:$Zn, ZPR16:$Zm),
9047- asm, "\t$Zda, $Zn, $Zm", "", []>, Sched<[]> {
9048- bits<5> Zm;
9049- bits<5> Zda;
9050- bits<5> Zn;
9051- let Inst{31-21} = 0b01100100011;
9052- let Inst{20-16} = Zm;
9053- let Inst{15-10} = 0b111001;
9054- let Inst{9-5} = Zn;
9055- let Inst{4-0} = Zda;
9056-
9057- let Constraints = "$Zda = $_Zda";
9058- let DestructiveInstType = DestructiveOther;
9059- let ElementSize = ElementSizeH;
9060- let hasSideEffects = 0;
9061- let mayRaiseFPException = 1;
9062- }
9063-
9064- multiclass sve_bfloat_matmul<string asm, SDPatternOperator op> {
9065- def NAME : sve_bfloat_matmul<asm>;
9066- def : SVE_3_Op_Pat<nxv4f32, op, nxv4f32, nxv8bf16, nxv8bf16 ,!cast<Instruction>(NAME)>;
9067- }
9068-
90699045class sve_bfloat_convert<bit N, string asm>
90709046: I<(outs ZPR16:$Zd), (ins ZPR16:$_Zd, PPR3bAny:$Pg, ZPR32:$Zn),
90719047 asm, "\t$Zd, $Pg/m, $Zn", "", []>, Sched<[]> {
@@ -9188,14 +9164,14 @@ multiclass sve_int_dot_mixed_indexed<bit U, string asm, SDPatternOperator op> {
91889164// SVE Floating Point Matrix Multiply Accumulate Group
91899165//===----------------------------------------------------------------------===//
91909166
9191- class sve_fp_matrix_mla<bit sz , string asm, ZPRRegOp zprty >
9192- : I<(outs zprty :$Zda), (ins zprty :$_Zda, zprty :$Zn, zprty :$Zm),
9167+ class sve_fp_matrix_mla<bits<2> opc , string asm, ZPRRegOp zda_ty, ZPRRegOp reg_ty >
9168+ : I<(outs zda_ty :$Zda), (ins zda_ty :$_Zda, reg_ty :$Zn, reg_ty :$Zm),
91939169 asm, "\t$Zda, $Zn, $Zm", "", []>, Sched<[]> {
91949170 bits<5> Zda;
91959171 bits<5> Zn;
91969172 bits<5> Zm;
9197- let Inst{31-23 } = 0b011001001 ;
9198- let Inst{22} = sz ;
9173+ let Inst{31-24 } = 0b01100100 ;
9174+ let Inst{23- 22} = opc ;
91999175 let Inst{21} = 1;
92009176 let Inst{20-16} = Zm;
92019177 let Inst{15-10} = 0b111001;
@@ -9204,15 +9180,14 @@ class sve_fp_matrix_mla<bit sz, string asm, ZPRRegOp zprty>
92049180
92059181 let Constraints = "$Zda = $_Zda";
92069182 let DestructiveInstType = DestructiveOther;
9207- let ElementSize = zprty.ElementSize;
92089183 let hasSideEffects = 0;
92099184 let mayRaiseFPException = 1;
92109185}
92119186
9212- multiclass sve_fp_matrix_mla<bit sz , string asm, ZPRRegOp zprty, SDPatternOperator op, ValueType vt > {
9213- def NAME : sve_fp_matrix_mla<sz , asm, zprty >;
9187+ multiclass sve_fp_matrix_mla<bits<2> opc , string asm, ZPRRegOp zda_ty, ZPRRegOp reg_ty, SDPatternOperator op, ValueType zda_vt, ValueType reg_vt > {
9188+ def NAME : sve_fp_matrix_mla<opc , asm, zda_ty, reg_ty >;
92149189
9215- def : SVE_3_Op_Pat<vt , op , vt, vt, vt , !cast<Instruction>(NAME)>;
9190+ def : SVE_3_Op_Pat<zda_vt , op , zda_vt, reg_vt, reg_vt , !cast<Instruction>(NAME)>;
92169191}
92179192
92189193//===----------------------------------------------------------------------===//
@@ -10632,6 +10607,28 @@ class sve2_fp8_mla_long_long_by_indexed_elem<bits<2> TT, string mnemonic>
1063210607 let Uses = [FPMR, FPCR];
1063310608}
1063410609
10610+ // FP8 Matrix Multiply-accumulate Group
10611+ class sve2_fp8_mmla<bit opc, ZPRRegOp dst_ty, string mnemonic>
10612+ : I<(outs dst_ty:$Zda),
10613+ (ins dst_ty:$_Zda, ZPR8:$Zn, ZPR8:$Zm),
10614+ mnemonic, "\t$Zda, $Zn, $Zm",
10615+ "", []>, Sched<[]>{
10616+ bits<5> Zda;
10617+ bits<5> Zn;
10618+ bits<5> Zm;
10619+ let Inst{31-23} = 0b011001000;
10620+ let Inst{22} = opc;
10621+ let Inst{21} = 0b1;
10622+ let Inst{20-16} = Zm;
10623+ let Inst{15-10} = 0b111000;
10624+ let Inst{9-5} = Zn;
10625+ let Inst{4-0} = Zda;
10626+ let Constraints = "$Zda = $_Zda";
10627+ let DestructiveInstType = DestructiveOther;
10628+ let ElementSize = dst_ty.ElementSize;
10629+ let Uses = [FPMR, FPCR];
10630+ }
10631+
1063510632class sve_fp8_dot_indexed<bits<4> opc, ZPRRegOp dst_ty, Operand iop_ty, string mnemonic>
1063610633: I<(outs dst_ty:$Zda), (ins dst_ty:$_Zda, ZPR8:$Zn, ZPR3b8:$Zm, iop_ty:$iop),
1063710634 mnemonic, "\t$Zda, $Zn, $Zm$iop", "", []>, Sched<[]> {
0 commit comments