mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-26 20:03:54 -06:00
linux-user/aarch64: Update hwcap bits from 6.14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
aa1cc0d74d
commit
a9cd024c58
1 changed files with 72 additions and 3 deletions
|
@ -751,7 +751,23 @@ enum {
|
||||||
ARM_HWCAP_A64_SSBS = 1 << 28,
|
ARM_HWCAP_A64_SSBS = 1 << 28,
|
||||||
ARM_HWCAP_A64_SB = 1 << 29,
|
ARM_HWCAP_A64_SB = 1 << 29,
|
||||||
ARM_HWCAP_A64_PACA = 1 << 30,
|
ARM_HWCAP_A64_PACA = 1 << 30,
|
||||||
ARM_HWCAP_A64_PACG = 1UL << 31,
|
ARM_HWCAP_A64_PACG = 1ULL << 31,
|
||||||
|
ARM_HWCAP_A64_GCS = 1ULL << 32,
|
||||||
|
ARM_HWCAP_A64_CMPBR = 1ULL << 33,
|
||||||
|
ARM_HWCAP_A64_FPRCVT = 1ULL << 34,
|
||||||
|
ARM_HWCAP_A64_F8MM8 = 1ULL << 35,
|
||||||
|
ARM_HWCAP_A64_F8MM4 = 1ULL << 36,
|
||||||
|
ARM_HWCAP_A64_SVE_F16MM = 1ULL << 37,
|
||||||
|
ARM_HWCAP_A64_SVE_ELTPERM = 1ULL << 38,
|
||||||
|
ARM_HWCAP_A64_SVE_AES2 = 1ULL << 39,
|
||||||
|
ARM_HWCAP_A64_SVE_BFSCALE = 1ULL << 40,
|
||||||
|
ARM_HWCAP_A64_SVE2P2 = 1ULL << 41,
|
||||||
|
ARM_HWCAP_A64_SME2P2 = 1ULL << 42,
|
||||||
|
ARM_HWCAP_A64_SME_SBITPERM = 1ULL << 43,
|
||||||
|
ARM_HWCAP_A64_SME_AES = 1ULL << 44,
|
||||||
|
ARM_HWCAP_A64_SME_SFEXPA = 1ULL << 45,
|
||||||
|
ARM_HWCAP_A64_SME_STMOP = 1ULL << 46,
|
||||||
|
ARM_HWCAP_A64_SME_SMOP4 = 1ULL << 47,
|
||||||
|
|
||||||
ARM_HWCAP2_A64_DCPODP = 1 << 0,
|
ARM_HWCAP2_A64_DCPODP = 1 << 0,
|
||||||
ARM_HWCAP2_A64_SVE2 = 1 << 1,
|
ARM_HWCAP2_A64_SVE2 = 1 << 1,
|
||||||
|
@ -798,6 +814,25 @@ enum {
|
||||||
ARM_HWCAP2_A64_SME_F16F16 = 1ULL << 42,
|
ARM_HWCAP2_A64_SME_F16F16 = 1ULL << 42,
|
||||||
ARM_HWCAP2_A64_MOPS = 1ULL << 43,
|
ARM_HWCAP2_A64_MOPS = 1ULL << 43,
|
||||||
ARM_HWCAP2_A64_HBC = 1ULL << 44,
|
ARM_HWCAP2_A64_HBC = 1ULL << 44,
|
||||||
|
ARM_HWCAP2_A64_SVE_B16B16 = 1ULL << 45,
|
||||||
|
ARM_HWCAP2_A64_LRCPC3 = 1ULL << 46,
|
||||||
|
ARM_HWCAP2_A64_LSE128 = 1ULL << 47,
|
||||||
|
ARM_HWCAP2_A64_FPMR = 1ULL << 48,
|
||||||
|
ARM_HWCAP2_A64_LUT = 1ULL << 49,
|
||||||
|
ARM_HWCAP2_A64_FAMINMAX = 1ULL << 50,
|
||||||
|
ARM_HWCAP2_A64_F8CVT = 1ULL << 51,
|
||||||
|
ARM_HWCAP2_A64_F8FMA = 1ULL << 52,
|
||||||
|
ARM_HWCAP2_A64_F8DP4 = 1ULL << 53,
|
||||||
|
ARM_HWCAP2_A64_F8DP2 = 1ULL << 54,
|
||||||
|
ARM_HWCAP2_A64_F8E4M3 = 1ULL << 55,
|
||||||
|
ARM_HWCAP2_A64_F8E5M2 = 1ULL << 56,
|
||||||
|
ARM_HWCAP2_A64_SME_LUTV2 = 1ULL << 57,
|
||||||
|
ARM_HWCAP2_A64_SME_F8F16 = 1ULL << 58,
|
||||||
|
ARM_HWCAP2_A64_SME_F8F32 = 1ULL << 59,
|
||||||
|
ARM_HWCAP2_A64_SME_SF8FMA = 1ULL << 60,
|
||||||
|
ARM_HWCAP2_A64_SME_SF8DP4 = 1ULL << 61,
|
||||||
|
ARM_HWCAP2_A64_SME_SF8DP2 = 1ULL << 62,
|
||||||
|
ARM_HWCAP2_A64_POE = 1ULL << 63,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ELF_HWCAP get_elf_hwcap()
|
#define ELF_HWCAP get_elf_hwcap()
|
||||||
|
@ -886,7 +921,7 @@ uint64_t get_elf_hwcap2(void)
|
||||||
|
|
||||||
const char *elf_hwcap_str(uint32_t bit)
|
const char *elf_hwcap_str(uint32_t bit)
|
||||||
{
|
{
|
||||||
static const char *hwcap_str[] = {
|
static const char * const hwcap_str[] = {
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_FP )] = "fp",
|
[__builtin_ctz(ARM_HWCAP_A64_FP )] = "fp",
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_ASIMD )] = "asimd",
|
[__builtin_ctz(ARM_HWCAP_A64_ASIMD )] = "asimd",
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_EVTSTRM )] = "evtstrm",
|
[__builtin_ctz(ARM_HWCAP_A64_EVTSTRM )] = "evtstrm",
|
||||||
|
@ -919,6 +954,22 @@ const char *elf_hwcap_str(uint32_t bit)
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_SB )] = "sb",
|
[__builtin_ctz(ARM_HWCAP_A64_SB )] = "sb",
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_PACA )] = "paca",
|
[__builtin_ctz(ARM_HWCAP_A64_PACA )] = "paca",
|
||||||
[__builtin_ctz(ARM_HWCAP_A64_PACG )] = "pacg",
|
[__builtin_ctz(ARM_HWCAP_A64_PACG )] = "pacg",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_GCS )] = "gcs",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_CMPBR )] = "cmpbr",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_FPRCVT)] = "fprcvt",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_F8MM8 )] = "f8mm8",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_F8MM4 )] = "f8mm4",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SVE_F16MM)] = "svef16mm",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SVE_ELTPERM)] = "sveeltperm",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SVE_AES2)] = "sveaes2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SVE_BFSCALE)] = "svebfscale",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SVE2P2)] = "sve2p2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME2P2)] = "sme2p2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME_SBITPERM)] = "smesbitperm",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME_AES)] = "smeaes",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME_SFEXPA)] = "smesfexpa",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME_STMOP)] = "smestmop",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP_A64_SME_SMOP4)] = "smesmop4",
|
||||||
};
|
};
|
||||||
|
|
||||||
return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL;
|
return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL;
|
||||||
|
@ -926,7 +977,7 @@ const char *elf_hwcap_str(uint32_t bit)
|
||||||
|
|
||||||
const char *elf_hwcap2_str(uint32_t bit)
|
const char *elf_hwcap2_str(uint32_t bit)
|
||||||
{
|
{
|
||||||
static const char *hwcap_str[] = {
|
static const char * const hwcap_str[] = {
|
||||||
[__builtin_ctz(ARM_HWCAP2_A64_DCPODP )] = "dcpodp",
|
[__builtin_ctz(ARM_HWCAP2_A64_DCPODP )] = "dcpodp",
|
||||||
[__builtin_ctz(ARM_HWCAP2_A64_SVE2 )] = "sve2",
|
[__builtin_ctz(ARM_HWCAP2_A64_SVE2 )] = "sve2",
|
||||||
[__builtin_ctz(ARM_HWCAP2_A64_SVEAES )] = "sveaes",
|
[__builtin_ctz(ARM_HWCAP2_A64_SVEAES )] = "sveaes",
|
||||||
|
@ -972,6 +1023,24 @@ const char *elf_hwcap2_str(uint32_t bit)
|
||||||
[__builtin_ctzll(ARM_HWCAP2_A64_SME_F16F16 )] = "smef16f16",
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_F16F16 )] = "smef16f16",
|
||||||
[__builtin_ctzll(ARM_HWCAP2_A64_MOPS )] = "mops",
|
[__builtin_ctzll(ARM_HWCAP2_A64_MOPS )] = "mops",
|
||||||
[__builtin_ctzll(ARM_HWCAP2_A64_HBC )] = "hbc",
|
[__builtin_ctzll(ARM_HWCAP2_A64_HBC )] = "hbc",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SVE_B16B16 )] = "sveb16b16",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_LRCPC3 )] = "lrcpc3",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_LSE128 )] = "lse128",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_FPMR )] = "fpmr",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_LUT )] = "lut",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_FAMINMAX )] = "faminmax",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8CVT )] = "f8cvt",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8FMA )] = "f8fma",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8DP4 )] = "f8dp4",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8DP2 )] = "f8dp2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8E4M3 )] = "f8e4m3",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_F8E5M2 )] = "f8e5m2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_LUTV2 )] = "smelutv2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F16 )] = "smef8f16",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F32 )] = "smef8f32",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP4 )] = "smesf8dp4",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP2 )] = "smesf8dp2",
|
||||||
|
[__builtin_ctzll(ARM_HWCAP2_A64_POE )] = "poe",
|
||||||
};
|
};
|
||||||
|
|
||||||
return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL;
|
return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue