From: Richard Henderson <[email protected]> These two instructions can be enabled with either FEAT_SME_F8F16 or FEAT_SME_F16F16.
Signed-off-by: Richard Henderson <[email protected]> [PMM: fix && vs || mixup in feature function] Reviewed-by: Peter Maydell <[email protected]> Message-id: [email protected] Signed-off-by: Peter Maydell <[email protected]> --- target/arm/cpu-features.h | 11 +++++++++++ target/arm/tcg/translate-sme.c | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 2e4f22f193..98102d75bf 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1610,6 +1610,11 @@ static inline bool isar_feature_aa64_sme_f8f32(const ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, F8F32); } +static inline bool isar_feature_aa64_sme_f8f16(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, F8F16); +} + static inline bool isar_feature_aa64_sme_f16f16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, F16F16); @@ -1781,6 +1786,12 @@ isar_feature_aa64_sme2_or_sve2_lut(const ARMISARegisters *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_lut(id); } +static inline bool +isar_feature_aa64_sme_f16f16_or_f8f16(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme_f16f16(id) || isar_feature_aa64_sme_f8f16(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index a79b0a9b80..b8dde80c20 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1335,9 +1335,9 @@ static bool do_faddsub(DisasContext *s, arg_az_n *a, ARMFPStatusFlavour fpst, return true; } -TRANS_FEAT(FADD_nn_h, aa64_sme_f16f16, do_faddsub, a, +TRANS_FEAT(FADD_nn_h, aa64_sme_f16f16_or_f8f16, do_faddsub, a, FPST_ZA_F16, gen_helper_gvec_fadd_h) -TRANS_FEAT(FSUB_nn_h, aa64_sme_f16f16, do_faddsub, a, +TRANS_FEAT(FSUB_nn_h, aa64_sme_f16f16_or_f8f16, do_faddsub, a, FPST_ZA_F16, gen_helper_gvec_fsub_h) TRANS_FEAT(FADD_nn_s, aa64_sme2, do_faddsub, a, -- 2.43.0
