@@ -5771,66 +5771,6 @@ multiclass sme2_fmop4a_fp8_fp16_2way<string mnemonic> {
5771
5771
5772
5772
// FP8 SME FDOT instructions
5773
5773
5774
- // Selection DAG patterns - map to first level of pseudo-instructions (xxx_PSEUDO)
5775
-
5776
- class SME2_FP8_FDOT_Index_VG1x2_Pat<string name, SDPatternOperator intrinsic,
5777
- ComplexPattern tileslice, Operand offset_ty, Operand imm_ty,
5778
- ValueType vt = nxv16i8>
5779
- : Pat<(intrinsic (i32 (tileslice MatrixIndexGPR32Op8_11:$base, offset_ty:$offset)),
5780
- vt:$Zn1, vt:$Zn2, vt:$Zm, (i32 imm_ty:$i), i64:$fpmr),
5781
- (!cast<Instruction>(name # _PSEUDO) $base, $offset,
5782
- (REG_SEQUENCE ZPR2Mul2, vt:$Zn1, zsub0, vt:$Zn2, zsub1),
5783
- ZPR4b8:$Zm, imm_ty:$i, GPR64:$fpmr)>;
5784
-
5785
- class SME2_FP8_FDOT_Index_VG1x4_Pat<string name, SDPatternOperator intrinsic,
5786
- ComplexPattern tileslice, Operand offset_ty, Operand imm_ty,
5787
- ValueType vt = nxv16i8>
5788
- : Pat<(intrinsic (i32 (tileslice MatrixIndexGPR32Op8_11:$base, offset_ty:$offset)),
5789
- vt:$Zn1, vt:$Zn2, vt:$Zn3, vt:$Zn4,
5790
- vt:$Zm, (i32 imm_ty:$i), i64:$fpmr),
5791
- (!cast<Instruction>(name # _PSEUDO) $base, $offset,
5792
- (REG_SEQUENCE ZPR4Mul4, vt:$Zn1, zsub0, vt:$Zn2, zsub1, vt:$Zn3, zsub2, vt:$Zn4, zsub3),
5793
- ZPR4b8:$Zm, imm_ty:$i, GPR64:$fpmr)>;
5794
-
5795
- // First level pseudo-instructions (xxx_PSEUDO) - transformed to second level pseudo-instructions (xxx_FPMR_PSEUDO)
5796
- // during instruction selection.
5797
- class sme2_fp8_fdot_index_pseudo<string name, Operand offset_ty, RegisterOperand src1_ty, RegisterOperand src2_ty, Operand imm_ty>
5798
- : SMEPseudo2Instr<name, 0>,
5799
- Pseudo<(outs), (ins MatrixIndexGPR32Op8_11:$Rv, offset_ty:$offs, src1_ty:$Zn, src2_ty:$Zm, imm_ty:$i, GPR64:$fpmr), []> {
5800
- let SMEMatrixType = SMEMatrixArray;
5801
- let usesCustomInserter = 1;
5802
- }
5803
-
5804
- class sme2_fp8_fdot_pseudo<string name, Operand offset_ty, RegisterOperand src1_ty, RegisterOperand src2_ty>
5805
- : SMEPseudo2Instr<name, 0>,
5806
- Pseudo<(outs), (ins MatrixIndexGPR32Op8_11:$Rv, offset_ty:$offs, src1_ty:$Zn, src2_ty:$Zm, GPR64:$fpmr), []> {
5807
- let SMEMatrixType = SMEMatrixArray;
5808
- let usesCustomInserter = 1;
5809
- }
5810
-
5811
- // Second level pseudo-instruction - expanded to real instruction by the AArch64 pseudo instruction expansion pass
5812
- class sme2_fp8_fdot_index_fpmr_pseudo<string name, MatrixOperand matrix_ty, Operand offset_ty,
5813
- RegisterOperand src1_ty, RegisterOperand src2_ty,
5814
- Operand imm_ty>
5815
- : Pseudo<(outs matrix_ty:$ZAda),
5816
- (ins matrix_ty:$_ZAda, MatrixIndexGPR32Op8_11:$Rv, offset_ty:$offs,
5817
- src1_ty:$Zn, src2_ty:$Zm, imm_ty:$i, GPR64:$fpmr), []>,
5818
- SMEPseudo2Instr<name, 1> {
5819
- let hasNoSchedulingInfo = 1;
5820
- let Constraints = "$ZAda = $_ZAda";
5821
- }
5822
-
5823
- class sme2_fp8_fdot_fpmr_pseudo<string name, MatrixOperand matrix_ty, Operand offset_ty,
5824
- RegisterOperand src1_ty, RegisterOperand src2_ty>
5825
- : Pseudo<(outs matrix_ty:$ZAda),
5826
- (ins matrix_ty:$_ZAda, MatrixIndexGPR32Op8_11:$Rv, offset_ty:$offs,
5827
- src1_ty:$Zn, src2_ty:$Zm, GPR64:$fpmr), []>,
5828
- SMEPseudo2Instr<name, 1> {
5829
- let hasNoSchedulingInfo = 1;
5830
- let Constraints = "$ZAda = $_ZAda";
5831
- }
5832
-
5833
- // FDOT instructions
5834
5774
multiclass sme2_fp8_fdot_index_za16_vg1x2<string mnemonic, bits<2> sz, bits<3> op,
5835
5775
RegisterOperand multi_vector_ty, SDPatternOperator intrinsic> {
5836
5776
def NAME : sme2_multi_vec_array_vg2_index<sz, {op{2},?,?,op{1-0},?}, MatrixOp16,
0 commit comments