aboutsummaryrefslogtreecommitdiff
path: root/src/arm
diff options
context:
space:
mode:
authorAshkan Aliabadi <ashkan.aliabadi@gmail.com>2020-06-01 18:23:11 -0700
committerAshkan Aliabadi <ashkan.aliabadi@gmail.com>2020-06-01 18:23:11 -0700
commit7e4c0099cc84b744d3844c9811f2470c50d6dcbf (patch)
treeda7192694f1b9b98b599b7e385a55bfd72d50e8e /src/arm
parent5cefcd6293e6881754c2c53f99e95b159d2d8aa5 (diff)
downloadcpuinfo-7e4c0099cc84b744d3844c9811f2470c50d6dcbf.tar.gz
Upstream cpuinfo updates as of XNNPACK:5d67652eb23c2e94ffeeafd3e82a41745eb3ce41
Diffstat (limited to 'src/arm')
-rw-r--r--src/arm/cache.c1
-rw-r--r--src/arm/mach/init.c9
-rw-r--r--src/arm/midr.h6
-rw-r--r--src/arm/uarch.c4
4 files changed, 17 insertions, 3 deletions
diff --git a/src/arm/cache.c b/src/arm/cache.c
index 666ad78..446b02b 100644
--- a/src/arm/cache.c
+++ b/src/arm/cache.c
@@ -1115,7 +1115,6 @@ void cpuinfo_arm_decode_cache(
break;
}
case cpuinfo_uarch_cortex_a76:
- case cpuinfo_uarch_cortex_a76ae:
{
/*
* ARM Cortex-A76 Core Technical Reference Manual
diff --git a/src/arm/mach/init.c b/src/arm/mach/init.c
index bd27259..058cfc2 100644
--- a/src/arm/mach/init.c
+++ b/src/arm/mach/init.c
@@ -347,6 +347,15 @@ void cpuinfo_arm_mach_init(void) {
cpuinfo_isa.fp16arith = true;
}
+ /*
+ * There does not yet seem to exist an OS mechanism to detect support for
+ * ARMv8.2 optional dot-product instructions, so we currently whitelist CPUs
+ * known to support these instruction.
+ */
+ if (cpu_family == CPUFAMILY_ARM_LIGHTNING_THUNDER) {
+ cpuinfo_isa.dot = true;
+ }
+
uint32_t num_clusters = 1;
for (uint32_t i = 0; i < mach_topology.cores; i++) {
cores[i] = (struct cpuinfo_core) {
diff --git a/src/arm/midr.h b/src/arm/midr.h
index d5a28e3..34d7780 100644
--- a/src/arm/midr.h
+++ b/src/arm/midr.h
@@ -189,22 +189,28 @@ inline static uint32_t midr_score_core(uint32_t midr) {
case UINT32_C(0x4100D0A0): /* Cortex-A75 */
case UINT32_C(0x4100D090): /* Cortex-A73 */
case UINT32_C(0x4100D080): /* Cortex-A72 */
+#if CPUINFO_ARCH_ARM
case UINT32_C(0x4100C0F0): /* Cortex-A15 */
case UINT32_C(0x4100C0E0): /* Cortex-A17 */
case UINT32_C(0x4100C0D0): /* Rockchip RK3288 cores */
case UINT32_C(0x4100C0C0): /* Cortex-A12 */
+#endif /* CPUINFO_ARCH_ARM */
/* These cores are always in big role */
return 5;
case UINT32_C(0x4100D070): /* Cortex-A57 */
/* Cortex-A57 can be in LITTLE role w.r.t. Denver 2, or in big role w.r.t. Cortex-A53 */
return 4;
+#if CPUINFO_ARCH_ARM64
case UINT32_C(0x4100D060): /* Cortex-A65 */
+#endif /* CPUINFO_ARCH_ARM64 */
case UINT32_C(0x4100D050): /* Cortex-A55 */
case UINT32_C(0x4100D030): /* Cortex-A53 */
/* Cortex-A53 is usually in LITTLE role, but can be in big role w.r.t. Cortex-A35 */
return 2;
case UINT32_C(0x4100D040): /* Cortex-A35 */
+#if CPUINFO_ARCH_ARM
case UINT32_C(0x4100C070): /* Cortex-A7 */
+#endif /* CPUINFO_ARCH_ARM */
case UINT32_C(0x51008050): /* Kryo 485 Silver */
case UINT32_C(0x51008030): /* Kryo 385 Silver */
case UINT32_C(0x51008010): /* Kryo 260 / 280 Silver */
diff --git a/src/arm/uarch.c b/src/arm/uarch.c
index 63b1a55..55b61df 100644
--- a/src/arm/uarch.c
+++ b/src/arm/uarch.c
@@ -88,8 +88,8 @@ void cpuinfo_arm_decode_vendor_uarch(
case 0xD0D:
*uarch = cpuinfo_uarch_cortex_a77;
break;
- case 0xD0E:
- *uarch = cpuinfo_uarch_cortex_a76ae;
+ case 0xD0E: /* Cortex-A76AE */
+ *uarch = cpuinfo_uarch_cortex_a76;
break;
#if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__)
case 0xD4A: