aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Zsoldos <54321620+tamaszarm@users.noreply.github.com>2023-11-27 09:58:26 +0100
committerGitHub <noreply@github.com>2023-11-27 09:58:26 +0100
commit104602c8ae1dbaa250782e25449c6874809b6e12 (patch)
treeee29cb1c9616f3a047d544e989905a435ecb1cf5
parent8cfb520efb8a73c86aac71e5c86099a6e40f377a (diff)
downloadcpu_features-upstream-main.tar.gz
Update AArch64 features to Linux 6.6. (#347)upstream-main
-rw-r--r--include/cpuinfo_aarch64.h4
-rw-r--r--include/internal/hwcaps.h2
-rw-r--r--src/impl_aarch64__base_implementation.inl5
-rw-r--r--test/cpuinfo_aarch64_test.cc2
4 files changed, 12 insertions, 1 deletions
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) {