Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/pytorch/cpuinfo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKulin Seth <kulin_seth@apple.com>2022-07-27 04:25:24 +0300
committerGitHub <noreply@github.com>2022-07-27 04:25:24 +0300
commit09d8642de66a7b9b62ea1984b9fae543d75a7da0 (patch)
treebe06d026ad6513b8bdb9aeb34da9e1437df59c89 /src
parent503937b094c01144945f2fc50f9ea4cc81e6bc60 (diff)
Add support for Arm FHM (#102)
* Add support for Arm FHM Co-authored-by: Developer-Ecosystem-Engineering <65677710+Developer-Ecosystem-Engineering@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/arm/linux/aarch64-isa.c3
-rw-r--r--src/arm/linux/cpuinfo.c4
-rw-r--r--src/arm/mach/init.c11
3 files changed, 18 insertions, 0 deletions
diff --git a/src/arm/linux/aarch64-isa.c b/src/arm/linux/aarch64-isa.c
index 9019949..44a8f4d 100644
--- a/src/arm/linux/aarch64-isa.c
+++ b/src/arm/linux/aarch64-isa.c
@@ -138,5 +138,8 @@ void cpuinfo_arm64_linux_decode_isa_from_proc_cpuinfo(
if (features2 & (CPUINFO_ARM_LINUX_FEATURE2_BF16 | CPUINFO_ARM_LINUX_FEATURE2_SVEBF16)) {
isa->bf16 = true;
}
+ if (features & CPUINFO_ARM_LINUX_FEATURE_ASIMDFHM) {
+ isa->fhm = true;
+ }
}
diff --git a/src/arm/linux/cpuinfo.c b/src/arm/linux/cpuinfo.c
index bc98c14..817da12 100644
--- a/src/arm/linux/cpuinfo.c
+++ b/src/arm/linux/cpuinfo.c
@@ -287,6 +287,10 @@ static void parse_features(
#if CPUINFO_ARCH_ARM64
processor->features |= CPUINFO_ARM_LINUX_FEATURE_ASIMDRDM;
#endif
+ } else if (memcmp(feature_start, "asimdfhm", feature_length) == 0) {
+ #if CPUINFO_ARCH_ARM64
+ processor->features |= CPUINFO_ARM_LINUX_FEATURE_ASIMDFHM;
+ #endif
#if CPUINFO_ARCH_ARM
} else if (memcmp(feature_start, "fastmult", feature_length) == 0) {
processor->features |= CPUINFO_ARM_LINUX_FEATURE_FASTMULT;
diff --git a/src/arm/mach/init.c b/src/arm/mach/init.c
index 3ced773..244d530 100644
--- a/src/arm/mach/init.c
+++ b/src/arm/mach/init.c
@@ -408,6 +408,17 @@ void cpuinfo_arm_mach_init(void) {
cpuinfo_isa.i8mm = true;
}
+ const uint32_t has_feat_fhm = get_sys_info_by_name("hw.optional.arm.FEAT_FHM");
+ if (has_feat_fhm != 0) {
+ cpuinfo_isa.fhm = true;
+ } else {
+ // Prior to iOS 15, use 'hw.optional.armv8_2_fhm'
+ const uint32_t has_feat_fhm_legacy = get_sys_info_by_name("hw.optional.armv8_2_fhm");
+ if (has_feat_fhm_legacy != 0) {
+ cpuinfo_isa.fhm = true;
+ }
+ }
+
uint32_t num_clusters = 1;
for (uint32_t i = 0; i < mach_topology.cores; i++) {
cores[i] = (struct cpuinfo_core) {