aboutsummaryrefslogtreecommitdiff
path: root/src/arm/linux/aarch32-isa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arm/linux/aarch32-isa.c')
-rw-r--r--src/arm/linux/aarch32-isa.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/arm/linux/aarch32-isa.c b/src/arm/linux/aarch32-isa.c
index 41f9972..df68aa1 100644
--- a/src/arm/linux/aarch32-isa.c
+++ b/src/arm/linux/aarch32-isa.c
@@ -56,24 +56,37 @@ void cpuinfo_arm_linux_decode_isa_from_proc_cpuinfo(
/*
* NEON FP16 compute extension and VQRDMLAH/VQRDMLSH instructions are not indicated in /proc/cpuinfo.
* Use a MIDR-based heuristic to whitelist processors known to support it:
- * - Processors with Qualcomm-modified Cortex-A55 cores
- * - Processors with Qualcomm-modified Cortex-A75 cores
- * - Processors with Qualcomm-modified Cortex-A76 cores
- * - Kirin 980 processor
+ * - Processors with Cortex-A55 cores
+ * - Processors with Cortex-A65 cores
+ * - Processors with Cortex-A75 cores
+ * - Processors with Cortex-A76 cores
+ * - Processors with Cortex-A77 cores
+ * - Processors with Exynos M4 cores
+ * - Processors with Exynos M5 cores
+ * - Neoverse N1 cores
*/
- switch (midr & (CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK)) {
- case UINT32_C(0x51008020): /* Kryo 385 Gold (Cortex-A75) */
- case UINT32_C(0x51008030): /* Kryo 385 Silver (Cortex-A55) */
- case UINT32_C(0x51008040): /* Kryo 485 Gold (Cortex-A76) */
- isa->fp16arith = true;
- isa->rdm = true;
- break;
- default:
- if (chipset->series == cpuinfo_arm_chipset_series_hisilicon_kirin && chipset->model == 980) {
+ if (chipset->series == cpuinfo_arm_chipset_series_samsung_exynos && chipset->model == 9810) {
+ /* Only little cores of Exynos 9810 support FP16 & RDM */
+ cpuinfo_log_warning("FP16 arithmetics and RDM disabled: only little cores in Exynos 9810 support these extensions");
+ } else {
+ switch (midr & (CPUINFO_ARM_MIDR_IMPLEMENTER_MASK | CPUINFO_ARM_MIDR_PART_MASK)) {
+ case UINT32_C(0x4100D050): /* Cortex-A55 */
+ case UINT32_C(0x4100D060): /* Cortex-A65 */
+ case UINT32_C(0x4100D0B0): /* Cortex-A76 */
+ case UINT32_C(0x4100D0C0): /* Neoverse N1 */
+ case UINT32_C(0x4100D0D0): /* Cortex-A77 */
+ case UINT32_C(0x4100D0E0): /* Cortex-A76AE */
+ case UINT32_C(0x4800D400): /* Cortex-A76 (HiSilicon) */
+ case UINT32_C(0x51008020): /* Kryo 385 Gold (Cortex-A75) */
+ case UINT32_C(0x51008030): /* Kryo 385 Silver (Cortex-A55) */
+ case UINT32_C(0x51008040): /* Kryo 485 Gold (Cortex-A76) */
+ case UINT32_C(0x51008050): /* Kryo 485 Silver (Cortex-A55) */
+ case UINT32_C(0x53000030): /* Exynos M4 */
+ case UINT32_C(0x53000040): /* Exynos M5 */
isa->fp16arith = true;
isa->rdm = true;
- }
- break;
+ break;
+ }
}
/*