From 9192ba3eb8b588617bafab41d1d92ea12f25bed8 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Thu, 29 Aug 2024 08:11:29 +0100 Subject: [PATCH] [v1.06][ARM] Add (another) cpufamily for M3 and set the ARM version, fixing peak performance wrong result (#230) --- src/arm/midr.c | 1 + src/arm/soc.c | 4 +++- src/arm/uarch.c | 9 +++++++-- src/common/sysctl.h | 7 +++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/arm/midr.c b/src/arm/midr.c index 9f2f971..c4d2e27 100644 --- a/src/arm/midr.c +++ b/src/arm/midr.c @@ -414,6 +414,7 @@ struct cpuInfo* get_cpu_info_mach(struct cpuInfo* cpu) { cpu->peak_performance = get_peak_performance(cpu); } else if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH || + cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_2 || cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO || cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX) { fill_cpu_info_everest_sawtooth(cpu, pcores, ecores); diff --git a/src/arm/soc.c b/src/arm/soc.c index 4d7212a..6466040 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -1123,10 +1123,12 @@ struct system_on_chip* guess_soc_apple(struct system_on_chip* soc) { } } else if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH || + cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_2 || cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO || cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX) { // Check M3 version - if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH) { + if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH || + cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_2) { fill_soc(soc, "M3", SOC_APPLE_M3, 3); } else if(cpu_family == CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO) { diff --git a/src/arm/uarch.c b/src/arm/uarch.c index 08865b9..5c7cde3 100644 --- a/src/arm/uarch.c +++ b/src/arm/uarch.c @@ -33,6 +33,7 @@ enum { ISA_ARMv8_3_A, ISA_ARMv8_4_A, ISA_ARMv8_5_A, + ISA_ARMv8_6_A, ISA_ARMv9_A }; @@ -93,8 +94,10 @@ static const ISA isas_uarch[] = { [UARCH_EXYNOS_M5] = ISA_ARMv8_2_A, [UARCH_ICESTORM] = ISA_ARMv8_5_A, // https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/Support/AArch64TargetParser.def [UARCH_FIRESTORM] = ISA_ARMv8_5_A, - [UARCH_BLIZZARD] = ISA_ARMv8_5_A, // Not confirmed - [UARCH_AVALANCHE] = ISA_ARMv8_5_A, + [UARCH_BLIZZARD] = ISA_ARMv8_6_A, // https://github.com/llvm/llvm-project/blob/main/llvm/unittests/TargetParser/TargetParserTest.cpp + [UARCH_AVALANCHE] = ISA_ARMv8_6_A, // https://github.com/llvm/llvm-project/blob/main/llvm/unittests/TargetParser/TargetParserTest.cpp + [UARCH_SAWTOOTH] = ISA_ARMv8_6_A, // https://github.com/llvm/llvm-project/blob/main/llvm/unittests/TargetParser/TargetParserTest.cpp + [UARCH_EVEREST] = ISA_ARMv8_6_A, // https://github.com/llvm/llvm-project/blob/main/llvm/unittests/TargetParser/TargetParserTest.cpp [UARCH_PJ4] = ISA_ARMv7_A, [UARCH_XIAOMI] = ISA_ARMv8_A, }; @@ -112,6 +115,7 @@ static char* isas_string[] = { [ISA_ARMv8_3_A] = "ARMv8.3", [ISA_ARMv8_4_A] = "ARMv8.4", [ISA_ARMv8_5_A] = "ARMv8.5", + [ISA_ARMv8_6_A] = "ARMv8.6", [ISA_ARMv9_A] = "ARMv9" }; @@ -271,6 +275,7 @@ bool is_ARMv8_or_newer(struct cpuInfo* cpu) { cpu->arch->isa == ISA_ARMv8_3_A || cpu->arch->isa == ISA_ARMv8_4_A || cpu->arch->isa == ISA_ARMv8_5_A || + cpu->arch->isa == ISA_ARMv8_6_A || cpu->arch->isa == ISA_ARMv9_A; } diff --git a/src/common/sysctl.h b/src/common/sysctl.h index 32431dd..63dc7be 100644 --- a/src/common/sysctl.h +++ b/src/common/sysctl.h @@ -21,9 +21,12 @@ #define CPUFAMILY_ARM_AVALANCHE_BLIZZARD 0xDA33D83D #endif // M3 / A16 / A17 -// https://ratfactor.com/zig/stdlib-browseable2/c/darwin.zig.html -// https://github.com/Dr-Noob/cpufetch/issues/210 +// M3: https://ratfactor.com/zig/stdlib-browseable2/c/darwin.zig.html +// M3_2: https://github.com/Dr-Noob/cpufetch/issues/230 +// PRO: https://github.com/Dr-Noob/cpufetch/issues/225 +// MAX: https://github.com/Dr-Noob/cpufetch/issues/210 #define CPUFAMILY_ARM_EVEREST_SAWTOOTH 0x8765EDEA +#define CPUFAMILY_ARM_EVEREST_SAWTOOTH_2 0xFA33415E #define CPUFAMILY_ARM_EVEREST_SAWTOOTH_PRO 0x5F4DEA93 #define CPUFAMILY_ARM_EVEREST_SAWTOOTH_MAX 0x72015832