Add feature-based fallback for unknown x86_64 cpus
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Thu, 16 Dec 2021 21:02:49 +0000 (22:02 +0100)
committerGitHub <noreply@github.com>
Thu, 16 Dec 2021 21:02:49 +0000 (22:02 +0100)
driver/others/dynamic.c

index 653915a..b12fb06 100644 (file)
@@ -1061,7 +1061,13 @@ void gotoblas_dynamic_init(void) {
 #ifdef ARCH_X86
   if (gotoblas == NULL) gotoblas = &gotoblas_KATMAI;
 #else
-  if (gotoblas == NULL) gotoblas = &gotoblas_PRESCOTT;
+  if (gotoblas == NULL) {
+   if (support_avx512_bf16()) gotoblas = &gotoblas_COOPERLAKE;
+   else if (support_avx512()) gotoblas = &gotoblas_SKYLAKEX;
+   else if   (support_avx2()) gotoblas = &gotoblas_HASWELL;
+   else if    (support_avx()) gotoblas = &gotoblas_SANDYBRIDGE;
+   else                       gotoblas = &gotoblas_PRESCOTT;
+  }
   /* sanity check, if 64bit pointer we can't have a 32 bit cpu */
   if (sizeof(void*) == 8) {
       if (gotoblas == &gotoblas_KATMAI ||