From 104602c8ae1dbaa250782e25449c6874809b6e12 Mon Sep 17 00:00:00 2001 From: Tamas Zsoldos <54321620+tamaszarm@users.noreply.github.com> Date: Mon, 27 Nov 2023 09:58:26 +0100 Subject: Update AArch64 features to Linux 6.6. (#347) --- include/cpuinfo_aarch64.h | 4 ++++ include/internal/hwcaps.h | 2 ++ src/impl_aarch64__base_implementation.inl | 5 ++++- test/cpuinfo_aarch64_test.cc | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/cpuinfo_aarch64.h b/include/cpuinfo_aarch64.h index 18a3313..5da31f7 100644 --- a/include/cpuinfo_aarch64.h +++ b/include/cpuinfo_aarch64.h @@ -190,6 +190,8 @@ typedef struct { int smebi32i32 : 1; // 1-bit binary to 32-bit integer outer product. int smeb16b16 : 1; // SME2.1 BFloat16 instructions. int smef16f16 : 1; // FP16 to FP16 outer product. + int mops : 1; // Standardized memory operations. + int hbc : 1; // Hinted conditional branches. // Make sure to update Aarch64FeaturesEnum below if you add a field here. } Aarch64Features; @@ -284,6 +286,8 @@ typedef enum { AARCH64_SME_BI32I32, AARCH64_SME_B16B16, AARCH64_SME_F16F16, + AARCH64_MOPS, + AARCH64_HBC, AARCH64_LAST_, } Aarch64FeaturesEnum; diff --git a/include/internal/hwcaps.h b/include/internal/hwcaps.h index 968d600..9d2a8a6 100644 --- a/include/internal/hwcaps.h +++ b/include/internal/hwcaps.h @@ -104,6 +104,8 @@ CPU_FEATURES_START_CPP_NAMESPACE #define AARCH64_HWCAP2_SME_BI32I32 (1UL << 40) #define AARCH64_HWCAP2_SME_B16B16 (1UL << 41) #define AARCH64_HWCAP2_SME_F16F16 (1UL << 42) +#define AARCH64_HWCAP2_MOPS (1UL << 43) +#define AARCH64_HWCAP2_HBC (1UL << 44) // http://elixir.free-electrons.com/linux/latest/source/arch/arm/include/uapi/asm/hwcap.h #define ARM_HWCAP_SWP (1UL << 0) diff --git a/src/impl_aarch64__base_implementation.inl b/src/impl_aarch64__base_implementation.inl index ccc6c11..c55c8e2 100644 --- a/src/impl_aarch64__base_implementation.inl +++ b/src/impl_aarch64__base_implementation.inl @@ -112,7 +112,10 @@ AARCH64_HWCAP2_SME_BI32I32) \ LINE(AARCH64_SME_B16B16, smeb16b16, "smeb16b16", 0, \ AARCH64_HWCAP2_SME_B16B16) \ - LINE(AARCH64_SME_F16F16, smef16f16, "smef16f16", 0, AARCH64_HWCAP2_SME_F16F16) + LINE(AARCH64_SME_F16F16, smef16f16, "smef16f16", 0, \ + AARCH64_HWCAP2_SME_F16F16) \ + LINE(AARCH64_MOPS, mops, "mops", 0, AARCH64_HWCAP2_MOPS) \ + LINE(AARCH64_HBC, hbc, "hbc", 0, AARCH64_HWCAP2_HBC) #define INTROSPECTION_PREFIX Aarch64 #define INTROSPECTION_ENUM_PREFIX AARCH64 #include "define_introspection_and_hwcaps.inl" diff --git a/test/cpuinfo_aarch64_test.cc b/test/cpuinfo_aarch64_test.cc index 7836d94..e191a14 100644 --- a/test/cpuinfo_aarch64_test.cc +++ b/test/cpuinfo_aarch64_test.cc @@ -310,6 +310,8 @@ CPU revision : 3)"); EXPECT_FALSE(info.features.smebi32i32); EXPECT_FALSE(info.features.smeb16b16); EXPECT_FALSE(info.features.smef16f16); + EXPECT_FALSE(info.features.mops); + EXPECT_FALSE(info.features.hbc); } #elif defined(CPU_FEATURES_OS_MACOS) TEST_F(CpuidAarch64Test, FromDarwinSysctlFromName) { -- cgit v1.2.3