summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpuid_x86.c27
-rw-r--r--driver/others/dynamic.c20
2 files changed, 39 insertions, 8 deletions
diff --git a/cpuid_x86.c b/cpuid_x86.c
index 884d4b78a..141d6044e 100644
--- a/cpuid_x86.c
+++ b/cpuid_x86.c
@@ -1211,7 +1211,7 @@ int get_cpuname(void){
return CPUTYPE_CORE2;
}
break;
- case 1:
+ case 1: // family 6 exmodel 1
switch (model) {
case 6:
return CPUTYPE_CORE2;
@@ -1228,7 +1228,7 @@ int get_cpuname(void){
return CPUTYPE_DUNNINGTON;
}
break;
- case 2:
+ case 2: // family 6 exmodel 2
switch (model) {
case 5:
//Intel Core (Clarkdale) / Core (Arrandale)
@@ -1257,7 +1257,7 @@ int get_cpuname(void){
return CPUTYPE_NEHALEM;
}
break;
- case 3:
+ case 3: // family 6 exmodel 3
switch (model) {
case 7:
// Bay Trail
@@ -1287,7 +1287,7 @@ int get_cpuname(void){
return CPUTYPE_NEHALEM;
}
break;
- case 4:
+ case 4: // family 6 exmodel 4
switch (model) {
case 5:
case 6:
@@ -1321,7 +1321,7 @@ int get_cpuname(void){
return CPUTYPE_NEHALEM;
}
break;
- case 5:
+ case 5: // family 6 exmodel 5
switch (model) {
case 6:
//Broadwell
@@ -1364,7 +1364,7 @@ int get_cpuname(void){
return CPUTYPE_NEHALEM;
}
break;
- case 6:
+ case 6: // family 6 exmodel 6
switch (model) {
case 6: // Cannon Lake
if(support_avx512())
@@ -1376,7 +1376,20 @@ int get_cpuname(void){
else
return CPUTYPE_NEHALEM;
}
- break;
+ break;
+ case 7: // family 6 exmodel 7
+ switch (model) {
+ case 14: // Ice Lake
+ if(support_avx512())
+ return CPUTYPE_SKYLAKEX;
+ if(support_avx2())
+ return CPUTYPE_HASWELL;
+ if(support_avx())
+ return CPUTYPE_SANDYBRIDGE;
+ else
+ return CPUTYPE_NEHALEM;
+ }
+ break;
case 9:
case 8:
switch (model) {
diff --git a/driver/others/dynamic.c b/driver/others/dynamic.c
index 045fc65b8..f1cd3c6e6 100644
--- a/driver/others/dynamic.c
+++ b/driver/others/dynamic.c
@@ -585,9 +585,27 @@ static gotoblas_t *get_coretype(void){
}
}
return NULL;
+ case 7:
+ if (model == 14) {
+ // Ice Lake
+ if (support_avx512())
+ return &gotoblas_SKYLAKEX;
+ if(support_avx2()){
+ openblas_warning(FALLBACK_VERBOSE, HASWELL_FALLBACK);
+ return &gotoblas_HASWELL;
+ }
+ if(support_avx()) {
+ openblas_warning(FALLBACK_VERBOSE, SANDYBRIDGE_FALLBACK);
+ return &gotoblas_SANDYBRIDGE;
+ } else {
+ openblas_warning(FALLBACK_VERBOSE, NEHALEM_FALLBACK);
+ return &gotoblas_NEHALEM;
+ }
+ }
+ return NULL;
case 9:
case 8:
- if (model == 14 ) { // Kaby Lake
+ if (model == 14 ) { // Kaby Lake, Coffee Lake
if(support_avx2())
return &gotoblas_HASWELL;
if(support_avx()) {