Revision | f8680aaa6e5bfc6022b75157c23db7d2ea98ab11 (tree) |
---|---|
Time | 2021-05-26 00:01:44 |
Author | Richard Henderson <richard.henderson@lina...> |
Commiter | Peter Maydell |
target/arm: Enable SVE2 and related extensions
Disable I8MM again for !have_neon during realize.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210525010358.152808-93-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
@@ -1503,6 +1503,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp) | ||
1503 | 1503 | |
1504 | 1504 | t = cpu->isar.id_aa64isar1; |
1505 | 1505 | t = FIELD_DP64(t, ID_AA64ISAR1, FCMA, 0); |
1506 | + t = FIELD_DP64(t, ID_AA64ISAR1, I8MM, 0); | |
1506 | 1507 | cpu->isar.id_aa64isar1 = t; |
1507 | 1508 | |
1508 | 1509 | t = cpu->isar.id_aa64pfr0; |
@@ -1517,6 +1518,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp) | ||
1517 | 1518 | u = cpu->isar.id_isar6; |
1518 | 1519 | u = FIELD_DP32(u, ID_ISAR6, DP, 0); |
1519 | 1520 | u = FIELD_DP32(u, ID_ISAR6, FHM, 0); |
1521 | + u = FIELD_DP32(u, ID_ISAR6, I8MM, 0); | |
1520 | 1522 | cpu->isar.id_isar6 = u; |
1521 | 1523 | |
1522 | 1524 | if (!arm_feature(env, ARM_FEATURE_M)) { |
@@ -663,6 +663,7 @@ static void aarch64_max_initfn(Object *obj) | ||
663 | 663 | t = FIELD_DP64(t, ID_AA64ISAR1, SPECRES, 1); |
664 | 664 | t = FIELD_DP64(t, ID_AA64ISAR1, FRINTTS, 1); |
665 | 665 | t = FIELD_DP64(t, ID_AA64ISAR1, LRCPC, 2); /* ARMv8.4-RCPC */ |
666 | + t = FIELD_DP64(t, ID_AA64ISAR1, I8MM, 1); | |
666 | 667 | cpu->isar.id_aa64isar1 = t; |
667 | 668 | |
668 | 669 | t = cpu->isar.id_aa64pfr0; |
@@ -703,6 +704,17 @@ static void aarch64_max_initfn(Object *obj) | ||
703 | 704 | t = FIELD_DP64(t, ID_AA64MMFR2, ST, 1); /* TTST */ |
704 | 705 | cpu->isar.id_aa64mmfr2 = t; |
705 | 706 | |
707 | + t = cpu->isar.id_aa64zfr0; | |
708 | + t = FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 1); | |
709 | + t = FIELD_DP64(t, ID_AA64ZFR0, AES, 2); /* PMULL */ | |
710 | + t = FIELD_DP64(t, ID_AA64ZFR0, BITPERM, 1); | |
711 | + t = FIELD_DP64(t, ID_AA64ZFR0, SHA3, 1); | |
712 | + t = FIELD_DP64(t, ID_AA64ZFR0, SM4, 1); | |
713 | + t = FIELD_DP64(t, ID_AA64ZFR0, I8MM, 1); | |
714 | + t = FIELD_DP64(t, ID_AA64ZFR0, F32MM, 1); | |
715 | + t = FIELD_DP64(t, ID_AA64ZFR0, F64MM, 1); | |
716 | + cpu->isar.id_aa64zfr0 = t; | |
717 | + | |
706 | 718 | /* Replicate the same data to the 32-bit id registers. */ |
707 | 719 | u = cpu->isar.id_isar5; |
708 | 720 | u = FIELD_DP32(u, ID_ISAR5, AES, 2); /* AES + PMULL */ |
@@ -719,6 +731,7 @@ static void aarch64_max_initfn(Object *obj) | ||
719 | 731 | u = FIELD_DP32(u, ID_ISAR6, FHM, 1); |
720 | 732 | u = FIELD_DP32(u, ID_ISAR6, SB, 1); |
721 | 733 | u = FIELD_DP32(u, ID_ISAR6, SPECRES, 1); |
734 | + u = FIELD_DP32(u, ID_ISAR6, I8MM, 1); | |
722 | 735 | cpu->isar.id_isar6 = u; |
723 | 736 | |
724 | 737 | u = cpu->isar.id_pfr0; |
@@ -968,6 +968,7 @@ static void arm_max_initfn(Object *obj) | ||
968 | 968 | t = FIELD_DP32(t, ID_ISAR6, FHM, 1); |
969 | 969 | t = FIELD_DP32(t, ID_ISAR6, SB, 1); |
970 | 970 | t = FIELD_DP32(t, ID_ISAR6, SPECRES, 1); |
971 | + t = FIELD_DP32(t, ID_ISAR6, I8MM, 1); | |
971 | 972 | cpu->isar.id_isar6 = t; |
972 | 973 | |
973 | 974 | t = cpu->isar.mvfr1; |