From daca01622b6e3cd558e7f299ab02ac43b2af72f5 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 27 Jul 2022 09:17:43 +0200 Subject: [PATCH] fix detection of Neoverse V1 and user-enforced selection of N2 in ARM64 DYNAMIC_ARCH (#3700) * fix detection of Neoverse V1 and user-enforced selection of N2 --- driver/others/dynamic_arm64.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/driver/others/dynamic_arm64.c b/driver/others/dynamic_arm64.c index f8fc5e540..d88b1da40 100644 --- a/driver/others/dynamic_arm64.c +++ b/driver/others/dynamic_arm64.c @@ -99,6 +99,11 @@ extern gotoblas_t gotoblas_NEOVERSEN1; #else #define gotoblas_NEOVERSEN1 gotoblas_ARMV8 #endif +#ifdef DYN_NEOVERSEV1 +extern gotoblas_t gotoblas_NEOVERSEV1; +#else +#define gotoblas_NEOVERSEV1 gotoblas_ARMV8 +#endif #ifdef DYN_NEOVERSEN2 extern gotoblas_t gotoblas_NEOVERSEN2; #else @@ -120,6 +125,7 @@ extern gotoblas_t gotoblas_THUNDERX2T99; extern gotoblas_t gotoblas_TSV110; extern gotoblas_t gotoblas_EMAG8180; extern gotoblas_t gotoblas_NEOVERSEN1; +extern gotoblas_t gotoblas_NEOVERSEV1; extern gotoblas_t gotoblas_NEOVERSEN2; extern gotoblas_t gotoblas_THUNDERX3T110; extern gotoblas_t gotoblas_CORTEXA55; @@ -172,6 +178,7 @@ char *gotoblas_corename(void) { if (gotoblas == &gotoblas_TSV110) return corename[ 8]; if (gotoblas == &gotoblas_EMAG8180) return corename[ 9]; if (gotoblas == &gotoblas_NEOVERSEN1) return corename[10]; + if (gotoblas == &gotoblas_NEOVERSEV1) return corename[11]; if (gotoblas == &gotoblas_NEOVERSEN2) return corename[12]; if (gotoblas == &gotoblas_THUNDERX3T110) return corename[13]; if (gotoblas == &gotoblas_CORTEXA55) return corename[14]; @@ -205,8 +212,10 @@ static gotoblas_t *force_coretype(char *coretype) { case 8: return (&gotoblas_TSV110); case 9: return (&gotoblas_EMAG8180); case 10: return (&gotoblas_NEOVERSEN1); - case 11: return (&gotoblas_THUNDERX3T110); - case 12: return (&gotoblas_CORTEXA55); + case 11: return (&gotoblas_NEOVERSEV1); + case 12: return (&gotoblas_NEOVERSEN2); + case 13: return (&gotoblas_THUNDERX3T110); + case 14: return (&gotoblas_CORTEXA55); } snprintf(message, 128, "Core not found: %s\n", coretype); openblas_warning(1, message); @@ -267,6 +276,8 @@ static gotoblas_t *get_coretype(void) { return &gotoblas_NEOVERSEN1; case 0xd49: return &gotoblas_NEOVERSEN2; + case 0xd40: + return &gotoblas_NEOVERSEV1; case 0xd05: // Cortex A55 return &gotoblas_CORTEXA55; }