Skip to content

Commit 96a794e

Browse files
authored
Merge pull request #2198 from martin-frbg/icelake
Update CPUID recognition for Intel Ice Lake
2 parents 4c153ec + 3d36c45 commit 96a794e

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

cpuid_x86.c

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ int get_cpuname(void){
12111211
return CPUTYPE_CORE2;
12121212
}
12131213
break;
1214-
case 1:
1214+
case 1: // family 6 exmodel 1
12151215
switch (model) {
12161216
case 6:
12171217
return CPUTYPE_CORE2;
@@ -1228,7 +1228,7 @@ int get_cpuname(void){
12281228
return CPUTYPE_DUNNINGTON;
12291229
}
12301230
break;
1231-
case 2:
1231+
case 2: // family 6 exmodel 2
12321232
switch (model) {
12331233
case 5:
12341234
//Intel Core (Clarkdale) / Core (Arrandale)
@@ -1257,7 +1257,7 @@ int get_cpuname(void){
12571257
return CPUTYPE_NEHALEM;
12581258
}
12591259
break;
1260-
case 3:
1260+
case 3: // family 6 exmodel 3
12611261
switch (model) {
12621262
case 7:
12631263
// Bay Trail
@@ -1287,7 +1287,7 @@ int get_cpuname(void){
12871287
return CPUTYPE_NEHALEM;
12881288
}
12891289
break;
1290-
case 4:
1290+
case 4: // family 6 exmodel 4
12911291
switch (model) {
12921292
case 5:
12931293
case 6:
@@ -1321,7 +1321,7 @@ int get_cpuname(void){
13211321
return CPUTYPE_NEHALEM;
13221322
}
13231323
break;
1324-
case 5:
1324+
case 5: // family 6 exmodel 5
13251325
switch (model) {
13261326
case 6:
13271327
//Broadwell
@@ -1364,7 +1364,7 @@ int get_cpuname(void){
13641364
return CPUTYPE_NEHALEM;
13651365
}
13661366
break;
1367-
case 6:
1367+
case 6: // family 6 exmodel 6
13681368
switch (model) {
13691369
case 6: // Cannon Lake
13701370
if(support_avx512())
@@ -1376,7 +1376,20 @@ int get_cpuname(void){
13761376
else
13771377
return CPUTYPE_NEHALEM;
13781378
}
1379-
break;
1379+
break;
1380+
case 7: // family 6 exmodel 7
1381+
switch (model) {
1382+
case 14: // Ice Lake
1383+
if(support_avx512())
1384+
return CPUTYPE_SKYLAKEX;
1385+
if(support_avx2())
1386+
return CPUTYPE_HASWELL;
1387+
if(support_avx())
1388+
return CPUTYPE_SANDYBRIDGE;
1389+
else
1390+
return CPUTYPE_NEHALEM;
1391+
}
1392+
break;
13801393
case 9:
13811394
case 8:
13821395
switch (model) {

driver/others/dynamic.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,9 +585,27 @@ static gotoblas_t *get_coretype(void){
585585
}
586586
}
587587
return NULL;
588+
case 7:
589+
if (model == 14) {
590+
// Ice Lake
591+
if (support_avx512())
592+
return &gotoblas_SKYLAKEX;
593+
if(support_avx2()){
594+
openblas_warning(FALLBACK_VERBOSE, HASWELL_FALLBACK);
595+
return &gotoblas_HASWELL;
596+
}
597+
if(support_avx()) {
598+
openblas_warning(FALLBACK_VERBOSE, SANDYBRIDGE_FALLBACK);
599+
return &gotoblas_SANDYBRIDGE;
600+
} else {
601+
openblas_warning(FALLBACK_VERBOSE, NEHALEM_FALLBACK);
602+
return &gotoblas_NEHALEM;
603+
}
604+
}
605+
return NULL;
588606
case 9:
589607
case 8:
590-
if (model == 14 ) { // Kaby Lake
608+
if (model == 14 ) { // Kaby Lake, Coffee Lake
591609
if(support_avx2())
592610
return &gotoblas_HASWELL;
593611
if(support_avx()) {

0 commit comments

Comments
 (0)