Detect other Intel Skylake cores.
authorZhang Xianyi <traits.zhang@gmail.com>
Wed, 9 Sep 2015 15:47:17 +0000 (10:47 -0500)
committerZhang Xianyi <traits.zhang@gmail.com>
Wed, 9 Sep 2015 15:47:17 +0000 (10:47 -0500)
http://users.atw.hu/instlatx64/

cpuid_x86.c
driver/others/dynamic.c

index 828ecc3..135ac7c 100644 (file)
@@ -1136,6 +1136,16 @@ int get_cpuname(void){
 #endif
           else
            return CPUTYPE_NEHALEM;
+       case 14:
+         //Skylake
+          if(support_avx())
+#ifndef NO_AVX2
+            return CPUTYPE_HASWELL;
+#else
+           return CPUTYPE_SANDYBRIDGE;
+#endif
+          else
+           return CPUTYPE_NEHALEM;
         }
         break;
       case 5:
@@ -1150,6 +1160,7 @@ int get_cpuname(void){
 #endif
           else
            return CPUTYPE_NEHALEM;
+       case 5:
         case 14:
          // Skylake
           if(support_avx())
@@ -1621,6 +1632,16 @@ int get_coretype(void){
 #endif
           else
            return CORE_NEHALEM;
+       case 14:
+         //Skylake
+          if(support_avx())
+#ifndef NO_AVX2
+            return CORE_HASWELL;
+#else
+           return CORE_SANDYBRIDGE;
+#endif
+          else
+           return CORE_NEHALEM;
         }
         break;
       case 5:
@@ -1635,6 +1656,7 @@ int get_coretype(void){
 #endif
           else
            return CORE_NEHALEM;
+       case 5:
        case 14:
          // Skylake
           if(support_avx())
index 1f70b79..c411645 100644 (file)
@@ -252,6 +252,15 @@ static gotoblas_t *get_coretype(void){
            return &gotoblas_NEHALEM; //OS doesn't support AVX. Use old kernels.
          }
        }
+       //Intel Skylake
+       if (model == 14) {
+         if(support_avx())
+           return &gotoblas_HASWELL;
+         else{
+           openblas_warning(FALLBACK_VERBOSE, NEHALEM_FALLBACK);
+           return &gotoblas_NEHALEM; //OS doesn't support AVX. Use old kernels.
+         }
+       }
        return NULL;
       case 5:
        //Intel Broadwell
@@ -264,7 +273,7 @@ static gotoblas_t *get_coretype(void){
          }
        }
        //Intel Skylake
-       if (model == 14) {
+       if (model == 14 || model == 5) {
          if(support_avx())
            return &gotoblas_HASWELL;
          else{