aboutsummaryrefslogtreecommitdiff
path: root/include/cpuinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cpuinfo.h')
-rw-r--r--include/cpuinfo.h68
1 files changed, 63 insertions, 5 deletions
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
index cffa299..bcbb3ec 100644
--- a/include/cpuinfo.h
+++ b/include/cpuinfo.h
@@ -426,9 +426,20 @@ enum cpuinfo_uarch {
cpuinfo_uarch_neoverse_n1 = 0x00300400,
/** ARM Neoverse E1. */
cpuinfo_uarch_neoverse_e1 = 0x00300401,
+ /** ARM Neoverse V1. */
+ cpuinfo_uarch_neoverse_v1 = 0x00300402,
+ /** ARM Neoverse N2. */
+ cpuinfo_uarch_neoverse_n2 = 0x00300403,
/** ARM Cortex-X1. */
- cpuinfo_uarch_cortex_x1 = 0x00300500,
+ cpuinfo_uarch_cortex_x1 = 0x00300501,
+ /** ARM Cortex-X2. */
+ cpuinfo_uarch_cortex_x2 = 0x00300502,
+
+ /** ARM Cortex-A510. */
+ cpuinfo_uarch_cortex_a510 = 0x00300551,
+ /** ARM Cortex-A710. */
+ cpuinfo_uarch_cortex_a710 = 0x00300571,
/** Qualcomm Scorpion. */
cpuinfo_uarch_scorpion = 0x00400100,
@@ -489,10 +500,14 @@ enum cpuinfo_uarch {
cpuinfo_uarch_lightning = 0x00700109,
/** Apple A13 processor (little cores). */
cpuinfo_uarch_thunder = 0x0070010A,
- /** Apple M1 processor (big cores). */
+ /** Apple A14 / M1 processor (big cores). */
cpuinfo_uarch_firestorm = 0x0070010B,
- /** Apple M1 processor (little cores). */
+ /** Apple A14 / M1 processor (little cores). */
cpuinfo_uarch_icestorm = 0x0070010C,
+ /** Apple A15 / M2 processor (big cores). */
+ cpuinfo_uarch_avalanche = 0x0070010D,
+ /** Apple A15 / M2 processor (little cores). */
+ cpuinfo_uarch_blizzard = 0x0070010E,
/** Cavium ThunderX. */
cpuinfo_uarch_thunderx = 0x00800100,
@@ -1460,14 +1475,17 @@ static inline bool cpuinfo_has_x86_sha(void) {
#endif
#if CPUINFO_ARCH_ARM64
bool atomics;
+ bool bf16;
bool sve;
bool sve2;
+ bool i8mm;
#endif
bool rdm;
bool fp16arith;
bool dot;
bool jscvt;
bool fcma;
+ bool fhm;
bool aes;
bool sha1;
@@ -1623,6 +1641,22 @@ static inline bool cpuinfo_has_arm_vfpv4_d32(void) {
#endif
}
+static inline bool cpuinfo_has_arm_fp16_arith(void) {
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+ return cpuinfo_isa.fp16arith;
+ #else
+ return false;
+ #endif
+}
+
+static inline bool cpuinfo_has_arm_bf16(void) {
+ #if CPUINFO_ARCH_ARM64
+ return cpuinfo_isa.bf16;
+ #else
+ return false;
+ #endif
+}
+
static inline bool cpuinfo_has_arm_wmmx(void) {
#if CPUINFO_ARCH_ARM
return cpuinfo_isa.wmmx;
@@ -1705,9 +1739,9 @@ static inline bool cpuinfo_has_arm_neon_fp16_arith(void) {
#endif
}
-static inline bool cpuinfo_has_arm_fp16_arith(void) {
+static inline bool cpuinfo_has_arm_fhm(void) {
#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
- return cpuinfo_isa.fp16arith;
+ return cpuinfo_isa.fhm;
#else
return false;
#endif
@@ -1721,6 +1755,14 @@ static inline bool cpuinfo_has_arm_neon_dot(void) {
#endif
}
+static inline bool cpuinfo_has_arm_neon_bf16(void) {
+ #if CPUINFO_ARCH_ARM64
+ return cpuinfo_isa.bf16;
+ #else
+ return false;
+ #endif
+}
+
static inline bool cpuinfo_has_arm_jscvt(void) {
#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
return cpuinfo_isa.jscvt;
@@ -1737,6 +1779,14 @@ static inline bool cpuinfo_has_arm_fcma(void) {
#endif
}
+static inline bool cpuinfo_has_arm_i8mm(void) {
+ #if CPUINFO_ARCH_ARM64
+ return cpuinfo_isa.i8mm;
+ #else
+ return false;
+ #endif
+}
+
static inline bool cpuinfo_has_arm_aes(void) {
#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
return cpuinfo_isa.aes;
@@ -1785,6 +1835,14 @@ static inline bool cpuinfo_has_arm_sve(void) {
#endif
}
+static inline bool cpuinfo_has_arm_sve_bf16(void) {
+ #if CPUINFO_ARCH_ARM64
+ return cpuinfo_isa.sve && cpuinfo_isa.bf16;
+ #else
+ return false;
+ #endif
+}
+
static inline bool cpuinfo_has_arm_sve2(void) {
#if CPUINFO_ARCH_ARM64
return cpuinfo_isa.sve2;