[PATCH 6/6] target/arm: Enable FEAT_SVE2p2 and FEAT_SME2p2 for -cpu max
Richard Henderson <[email protected]>
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
These features are tied together if both SVE and SME are enabled. Signed-off-by: Richard Henderson <[email protected]> --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 5 +++-- docs/system/arm/emulation.rst | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 48be49580a..c086548f7f 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -178,6 +178,8 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); GET_FEATURE_ID(aa64_sme_mop4, ARM_HWCAP_A64_SME_SMOP4); GET_FEATURE_ID(aa64_sme_tmop, ARM_HWCAP_A64_SME_STMOP); + GET_FEATURE_ID(aa64_sve2p2, ARM_HWCAP_A64_SVE2P2); + GET_FEATURE_ID(aa64_sme2p2, ARM_HWCAP_A64_SME2P2); return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 24f34947ec..33eafb467d 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1365,8 +1365,9 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64MMFR4, t); t = GET_IDREG(isar, ID_AA64ZFR0); - t = FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 2); /* FEAT_SVE2p1 */ + t = FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 3); /* FEAT_SVE2p2 */ t = FIELD_DP64(t, ID_AA64ZFR0, AES, 2); /* FEAT_SVE_PMULL128 */ + t = FIELD_DP64(t, ID_AA64ZFR0, ELTPERM, 1); /* FEAT_SVE2p2 */ t = FIELD_DP64(t, ID_AA64ZFR0, BITPERM, 1); /* FEAT_SVE_BitPerm */ t = FIELD_DP64(t, ID_AA64ZFR0, BFLOAT16, 2); /* FEAT_BF16, FEAT_EBF16 */ t = FIELD_DP64(t, ID_AA64ZFR0, B16B16, 1); /* FEAT_SVE_B16B16 */ @@ -1403,7 +1404,7 @@ void aarch64_max_tcg_initfn(Object *obj) t = FIELD_DP64(t, ID_AA64SMFR0, I16I32, 5); /* FEAT_SME2 */ t = FIELD_DP64(t, ID_AA64SMFR0, F64F64, 1); /* FEAT_SME_F64F64 */ t = FIELD_DP64(t, ID_AA64SMFR0, I16I64, 0xf); /* FEAT_SME_I16I64 */ - t = FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 2); /* FEAT_SME2p1 */ + t = FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 3); /* FEAT_SME2p2 */ t = FIELD_DP64(t, ID_AA64SMFR0, LUTv2, 1); /* FEAT_SME_LUTv2 */ t = FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index cc42db9e0b..4d33be615f 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -179,6 +179,7 @@ the following architecture extensions: - FEAT_SME (Scalable Matrix Extension) - FEAT_SME2 (Scalable Matrix Extension version 2) - FEAT_SME2p1 (Scalable Matrix Extension version 2.1) +- FEAT_SME2p2 (Scalable Matrix Extension version 2.2) - FEAT_SME_B16B16 (Non-widening BFloat16 arithmetic for SME2) - FEAT_SME_FA64 (Full A64 instruction set in Streaming SVE mode) - FEAT_SME_F16F16 (Non-widening half-precision FP16 arithmetic for SME2) @@ -203,6 +204,7 @@ the following architecture extensions: - FEAT_SVE_SM4 (Scalable Vector SM4 instructions) - FEAT_SVE2 (Scalable Vector Extension version 2) - FEAT_SVE2p1 (Scalable Vector Extension version 2.1) +- FEAT_SVE2p2 (Scalable Vector Extension version 2.2) - FEAT_SPECRES (Speculation restriction instructions) - FEAT_SSBS (Speculative Store Bypass Safe) - FEAT_SSBS2 (MRS and MSR instructions for SSBS version 2) -- 2.43.0