Skip to content

Commit 16684b1

Browse files
committed
fixup! [AArch64] Add intrinsics for SME FP8 FDOT LANE instructions
1 parent 605157d commit 16684b1

File tree

2 files changed

+21
-25
lines changed

2 files changed

+21
-25
lines changed

llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -986,8 +986,8 @@ def LUTI4_S_4ZZT2Z : sme2_luti4_vector_vg4_strided<0b00, 0b00, "luti4">;
986986

987987
let Predicates = [HasSMEF8F16] in {
988988
defm FVDOT_VG2_M2ZZI_BtoH : sme2p1_multi_vec_array_vg2_index_f8f16<"fvdot", 0b11, 0b110, ZZ_b_mul_r, ZPR4b8>;
989-
defm FDOT_VG2_M2ZZI_BtoH : sme2_fp8_fdot_index_za16_vg1x2<"fdot", ZZ_b_mul_r, int_aarch64_sme_fp8_fdot_lane_za16_vg1x2>;
990-
defm FDOT_VG4_M4ZZI_BtoH : sme2_fp8_fdot_index_za16_vg1x4<"fdot", ZZZZ_b_mul_r, int_aarch64_sme_fp8_fdot_lane_za16_vg1x4>;
989+
defm FDOT_VG2_M2ZZI_BtoH : sme2_fp8_fdot_index_za16_vg1x2<"fdot", int_aarch64_sme_fp8_fdot_lane_za16_vg1x2>;
990+
defm FDOT_VG4_M4ZZI_BtoH : sme2_fp8_fdot_index_za16_vg1x4<"fdot", int_aarch64_sme_fp8_fdot_lane_za16_vg1x4>;
991991
defm FDOT_VG2_M2ZZ_BtoH : sme2_dot_mla_add_sub_array_vg24_single<"fdot", 0b0010001, MatrixOp16, ZZ_b, ZPR4b8>;
992992
defm FDOT_VG4_M4ZZ_BtoH : sme2_dot_mla_add_sub_array_vg24_single<"fdot", 0b0110001, MatrixOp16, ZZZZ_b, ZPR4b8>;
993993
// TODO: Replace nxv16i8 by nxv16f8
@@ -1010,8 +1010,8 @@ defm FMOPA_MPPZZ_BtoH : sme2p1_fmop_tile_f8f16<"fmopa", 0b1, 0b0, 0b01>;
10101010

10111011
let Predicates = [HasSMEF8F32] in {
10121012
// TODO : Replace nxv16i8 by nxv16f8
1013-
defm FDOT_VG2_M2ZZI_BtoS : sme2_fp8_fdot_index_za32_vg1x2<"fdot", ZZ_b_mul_r, int_aarch64_sme_fp8_fdot_lane_za32_vg1x2>;
1014-
defm FDOT_VG4_M4ZZI_BtoS : sme2_fp8_fdot_index_za32_vg1x4<"fdot", ZZZZ_b_mul_r, int_aarch64_sme_fp8_fdot_lane_za32_vg1x4>;
1013+
defm FDOT_VG2_M2ZZI_BtoS : sme2_fp8_fdot_index_za32_vg1x2<"fdot", int_aarch64_sme_fp8_fdot_lane_za32_vg1x2>;
1014+
defm FDOT_VG4_M4ZZI_BtoS : sme2_fp8_fdot_index_za32_vg1x4<"fdot", int_aarch64_sme_fp8_fdot_lane_za32_vg1x4>;
10151015
defm FDOT_VG2_M2ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"fdot", 0b0010011, MatrixOp32, ZZ_b, ZPR4b8>;
10161016
defm FDOT_VG4_M4ZZ_BtoS : sme2_dot_mla_add_sub_array_vg24_single<"fdot", 0b0110011, MatrixOp32, ZZZZ_b, ZPR4b8>;
10171017
// TODO : Replace nxv16i8 by nxv16f8

llvm/lib/Target/AArch64/SMEInstrFormats.td

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5741,14 +5741,13 @@ multiclass sme2_fmop4a_fp8_fp16_2way<string mnemonic> {
57415741

57425742
// FP8 SME FDOT instructions
57435743

5744-
multiclass sme2_fp8_fdot_index_za16_vg1x2<string mnemonic, RegisterOperand multi_vector_ty,
5744+
multiclass sme2_fp8_fdot_index_za16_vg1x2<string mnemonic,
57455745
SDPatternOperator intrinsic> {
57465746
def NAME : sme2_multi_vec_array_vg2_index<0b11, {0b0,?,?,0b10,?}, MatrixOp16,
5747-
multi_vector_ty, ZPR4b8,
5747+
ZZ_b_mul_r, ZPR4b8,
57485748
VectorIndexH32b_timm, mnemonic>,
57495749
SMEPseudo2Instr<NAME, 1>{
57505750
let Uses=[FPMR, FPCR];
5751-
let mayLoad = 1;
57525751

57535752
bits<3> i;
57545753
let Inst{11-10} = i{2-1};
@@ -5757,76 +5756,73 @@ multiclass sme2_fp8_fdot_index_za16_vg1x2<string mnemonic, RegisterOperand multi
57575756

57585757
def : InstAlias<mnemonic # "\t$ZAda[$Rv, $imm3], $Zn, $Zm$i",
57595758
(!cast<Instruction>(NAME) MatrixOp16:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3,
5760-
multi_vector_ty:$Zn, ZPR4b8:$Zm, VectorIndexH32b_timm:$i), 0>;
5759+
ZZ_b_mul_r:$Zn, ZPR4b8:$Zm, VectorIndexH32b_timm:$i), 0>;
57615760

57625761

57635762
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZ_b_mul_r, ZPR4b8, VectorIndexH32b_timm, SMEMatrixArray>;
57645763

57655764
def : SME2_ZA_TwoOp_VG2_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexH32b_timm, tileslice16>;
57665765
}
57675766

5768-
multiclass sme2_fp8_fdot_index_za16_vg1x4<string mnemonic, RegisterOperand multi_vector_ty,
5767+
multiclass sme2_fp8_fdot_index_za16_vg1x4<string mnemonic,
57695768
SDPatternOperator intrinsic> {
57705769
def NAME : sme2_multi_vec_array_vg4_index<0b0, {0b1,?,?,0b100,?}, MatrixOp16,
5771-
multi_vector_ty, ZPR4b8,
5770+
ZZZZ_b_mul_r, ZPR4b8,
57725771
VectorIndexH32b_timm, mnemonic>,
57735772
SMEPseudo2Instr<NAME, 1> {
57745773
let Uses=[FPMR, FPCR];
5775-
let mayLoad = 1;
57765774

57775775
bits<3> i;
57785776
let Inst{11-10} = i{2-1};
57795777
let Inst{3} = i{0};
57805778
}
57815779

57825780
def : InstAlias<mnemonic # "\t$ZAda[$Rv, $imm3], $Zn, $Zm$i",
5783-
(!cast<Instruction>(NAME) MatrixOp16:$ZAda, MatrixIndexGPR32Op8_11:$Rv,
5784-
sme_elm_idx0_7:$imm3, multi_vector_ty:$Zn, ZPR4b8:$Zm, VectorIndexH32b_timm:$i), 0>;
5781+
(!cast<Instruction>(NAME) MatrixOp16:$ZAda, MatrixIndexGPR32Op8_11:$Rv,
5782+
sme_elm_idx0_7:$imm3, ZZZZ_b_mul_r:$Zn, ZPR4b8:$Zm, VectorIndexH32b_timm:$i), 0>;
57855783

57865784

57875785
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZZZ_b_mul_r, ZPR4b8, VectorIndexH32b_timm, SMEMatrixArray>;
57885786

57895787
def : SME2_ZA_TwoOp_VG4_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexH32b_timm, tileslice16>;
57905788
}
57915789

5792-
multiclass sme2_fp8_fdot_index_za32_vg1x2<string mnemonic, RegisterOperand multi_vector_ty,
5790+
multiclass sme2_fp8_fdot_index_za32_vg1x2<string mnemonic,
57935791
SDPatternOperator intrinsic> {
5794-
def NAME : sme2_multi_vec_array_vg2_index<0b01, {0b0,?,?,0b111}, MatrixOp32, multi_vector_ty, ZPR4b8,
5792+
def NAME : sme2_multi_vec_array_vg2_index<0b01, {0b0,?,?,0b111}, MatrixOp32, ZZ_b_mul_r, ZPR4b8,
57955793
VectorIndexS32b_timm, mnemonic>,
57965794
SMEPseudo2Instr<NAME, 1> {
57975795
let Uses=[FPMR, FPCR];
5798-
let mayLoad = 1;
57995796

58005797
bits<2> i;
58015798
let Inst{11-10} = i;
58025799
}
58035800

58045801
def : InstAlias<mnemonic # "\t$ZAda[$Rv, $imm3], $Zn, $Zm$i",
58055802
(!cast<Instruction>(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3,
5806-
multi_vector_ty:$Zn, ZPR4b8:$Zm, VectorIndexS32b_timm:$i), 0>;
5803+
ZZ_b_mul_r:$Zn, ZPR4b8:$Zm, VectorIndexS32b_timm:$i), 0>;
58075804

5808-
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZ_b_mul_r, ZPR4b8, VectorIndexH32b_timm, SMEMatrixArray>;
5805+
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZ_b_mul_r, ZPR4b8, VectorIndexS32b_timm, SMEMatrixArray>;
58095806

5810-
def : SME2_ZA_TwoOp_VG2_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexH32b_timm, tileslice16>;
5807+
def : SME2_ZA_TwoOp_VG2_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexS32b_timm, tileslice16>;
58115808
}
58125809

5813-
multiclass sme2_fp8_fdot_index_za32_vg1x4<string mnemonic, RegisterOperand multi_vector_ty,
5810+
multiclass sme2_fp8_fdot_index_za32_vg1x4<string mnemonic,
58145811
SDPatternOperator intrinsic> {
5815-
def NAME : sme2_multi_vec_array_vg4_index<0b1, {0b0,?,?,0b0,0b001}, MatrixOp32, multi_vector_ty,
5812+
def NAME : sme2_multi_vec_array_vg4_index<0b1, {0b0,?,?,0b0,0b001}, MatrixOp32, ZZZZ_b_mul_r,
58165813
ZPR4b8, VectorIndexS32b_timm, mnemonic>,
58175814
SMEPseudo2Instr<NAME, 1> {
58185815
let Uses=[FPMR, FPCR];
5819-
let mayLoad = 1;
58205816

58215817
bits<2> i;
58225818
let Inst{11-10} = i;
58235819
}
58245820

58255821
def : InstAlias<mnemonic # "\t$ZAda[$Rv, $imm3], $Zn, $Zm$i",
58265822
(!cast<Instruction>(NAME) MatrixOp32:$ZAda, MatrixIndexGPR32Op8_11:$Rv, sme_elm_idx0_7:$imm3,
5827-
multi_vector_ty:$Zn, ZPR4b8:$Zm, VectorIndexS32b_timm:$i), 0>;
5823+
ZZZZ_b_mul_r:$Zn, ZPR4b8:$Zm, VectorIndexS32b_timm:$i), 0>;
58285824

5829-
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZZZ_b_mul_r, ZPR4b8, VectorIndexH32b_timm, SMEMatrixArray>;
5825+
def _PSEUDO : sme2_za_array_2op_multi_index_pseudo<NAME, sme_elm_idx0_7, ZZZZ_b_mul_r, ZPR4b8, VectorIndexS32b_timm, SMEMatrixArray>;
58305826

5831-
def : SME2_ZA_TwoOp_VG4_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexH32b_timm, tileslice16>;
5827+
def : SME2_ZA_TwoOp_VG4_Multi_Index_Pat<NAME, intrinsic, sme_elm_idx0_7, ZPR4b8, nxv16i8, VectorIndexS32b_timm, tileslice16>;
58325828
}

0 commit comments

Comments
 (0)