Add CPUIDs for Alder Lake and some other recent Intel cpus
This commit is contained in:
parent
4ea9a14567
commit
faae86fba2
184
cpuid_x86.c
184
cpuid_x86.c
|
@ -1,3 +1,4 @@
|
||||||
|
//{
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
/* Copyright 2009, 2010 The University of Texas at Austin. */
|
/* Copyright 2009, 2010 The University of Texas at Austin. */
|
||||||
/* All rights reserved. */
|
/* All rights reserved. */
|
||||||
|
@ -1455,7 +1456,6 @@ int get_cpuname(void){
|
||||||
return CPUTYPE_NEHALEM;
|
return CPUTYPE_NEHALEM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
|
||||||
case 8:
|
case 8:
|
||||||
switch (model) {
|
switch (model) {
|
||||||
case 12: // Tiger Lake
|
case 12: // Tiger Lake
|
||||||
|
@ -1475,19 +1475,10 @@ int get_cpuname(void){
|
||||||
return CPUTYPE_SANDYBRIDGE;
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
else
|
else
|
||||||
return CPUTYPE_NEHALEM;
|
return CPUTYPE_NEHALEM;
|
||||||
}
|
case 15: // Sapphire Rapids
|
||||||
case 10: //family 6 exmodel 10
|
if(support_avx512_bf16())
|
||||||
switch (model) {
|
return CPUTYPE_COOPERLAKE;
|
||||||
case 5: // Comet Lake H and S
|
if(support_avx512())
|
||||||
case 6: // Comet Lake U
|
|
||||||
if(support_avx2())
|
|
||||||
return CPUTYPE_HASWELL;
|
|
||||||
if(support_avx())
|
|
||||||
return CPUTYPE_SANDYBRIDGE;
|
|
||||||
else
|
|
||||||
return CPUTYPE_NEHALEM;
|
|
||||||
case 7: // Rocket Lake
|
|
||||||
if(support_avx512())
|
|
||||||
return CPUTYPE_SKYLAKEX;
|
return CPUTYPE_SKYLAKEX;
|
||||||
if(support_avx2())
|
if(support_avx2())
|
||||||
return CPUTYPE_HASWELL;
|
return CPUTYPE_HASWELL;
|
||||||
|
@ -1495,8 +1486,57 @@ int get_cpuname(void){
|
||||||
return CPUTYPE_SANDYBRIDGE;
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
else
|
else
|
||||||
return CPUTYPE_NEHALEM;
|
return CPUTYPE_NEHALEM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 9:
|
||||||
|
switch (model) {
|
||||||
|
case 7: // Alder Lake desktop
|
||||||
|
case 10: // Alder Lake mobile
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
case 13: // Ice Lake NNPI
|
||||||
|
if(support_avx512())
|
||||||
|
return CPUTYPE_SKYLAKEX;
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
case 14: // Kaby Lake and refreshes
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10: //family 6 exmodel 10
|
||||||
|
switch (model) {
|
||||||
|
case 5: // Comet Lake H and S
|
||||||
|
case 6: // Comet Lake U
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
case 7: // Rocket Lake
|
||||||
|
if(support_avx512())
|
||||||
|
return CPUTYPE_SKYLAKEX;
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x7:
|
case 0x7:
|
||||||
|
@ -2069,32 +2109,7 @@ int get_coretype(void){
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 10:
|
|
||||||
switch (model) {
|
|
||||||
case 5: // Comet Lake H and S
|
|
||||||
case 6: // Comet Lake U
|
|
||||||
if(support_avx())
|
|
||||||
#ifndef NO_AVX2
|
|
||||||
return CORE_HASWELL;
|
|
||||||
#else
|
|
||||||
return CORE_SANDYBRIDGE;
|
|
||||||
#endif
|
|
||||||
else
|
|
||||||
return CORE_NEHALEM;
|
|
||||||
case 7:// Rocket Lake
|
|
||||||
#ifndef NO_AVX512
|
|
||||||
if(support_avx512())
|
|
||||||
return CORE_SKYLAKEX;
|
|
||||||
#endif
|
|
||||||
#ifndef NO_AVX2
|
|
||||||
if(support_avx2())
|
|
||||||
return CORE_HASWELL;
|
|
||||||
#endif
|
|
||||||
if(support_avx())
|
|
||||||
return CORE_SANDYBRIDGE;
|
|
||||||
else
|
|
||||||
return CORE_NEHALEM;
|
|
||||||
}
|
|
||||||
case 5:
|
case 5:
|
||||||
switch (model) {
|
switch (model) {
|
||||||
case 6:
|
case 6:
|
||||||
|
@ -2148,6 +2163,7 @@ int get_coretype(void){
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
if (model == 6)
|
if (model == 6)
|
||||||
#ifndef NO_AVX512
|
#ifndef NO_AVX512
|
||||||
|
@ -2162,7 +2178,7 @@ int get_coretype(void){
|
||||||
else
|
else
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
#endif
|
#endif
|
||||||
if (model == 10)
|
if (model == 10 || model == 12)
|
||||||
#ifndef NO_AVX512
|
#ifndef NO_AVX512
|
||||||
if(support_avx512_bf16())
|
if(support_avx512_bf16())
|
||||||
return CORE_COOPERLAKE;
|
return CORE_COOPERLAKE;
|
||||||
|
@ -2178,10 +2194,11 @@ int get_coretype(void){
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
if (model == 10)
|
if (model == 10)
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
if (model == 14)
|
if (model == 13 || model == 14) // Ice Lake
|
||||||
#ifndef NO_AVX512
|
#ifndef NO_AVX512
|
||||||
return CORE_SKYLAKEX;
|
return CORE_SKYLAKEX;
|
||||||
#else
|
#else
|
||||||
|
@ -2195,9 +2212,9 @@ int get_coretype(void){
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 9:
|
|
||||||
case 8:
|
case 8:
|
||||||
if (model == 12 || model == 13) { // Tiger Lake
|
if (model == 12 || model == 13) { // Tiger Lake
|
||||||
if(support_avx512())
|
if(support_avx512())
|
||||||
return CORE_SKYLAKEX;
|
return CORE_SKYLAKEX;
|
||||||
if(support_avx2())
|
if(support_avx2())
|
||||||
|
@ -2207,7 +2224,7 @@ int get_coretype(void){
|
||||||
else
|
else
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
}
|
}
|
||||||
if (model == 14) { // Kaby Lake
|
if (model == 14) { // Kaby Lake mobile
|
||||||
if(support_avx())
|
if(support_avx())
|
||||||
#ifndef NO_AVX2
|
#ifndef NO_AVX2
|
||||||
return CORE_HASWELL;
|
return CORE_HASWELL;
|
||||||
|
@ -2217,12 +2234,82 @@ int get_coretype(void){
|
||||||
else
|
else
|
||||||
return CORE_NEHALEM;
|
return CORE_NEHALEM;
|
||||||
}
|
}
|
||||||
}
|
if (model == 15) { // Sapphire Rapids
|
||||||
|
if(support_avx512_bf16())
|
||||||
|
return CPUTYPE_COOPERLAKE;
|
||||||
|
if(support_avx512())
|
||||||
|
return CPUTYPE_SKYLAKEX;
|
||||||
|
if(support_avx2())
|
||||||
|
return CPUTYPE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CPUTYPE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CPUTYPE_NEHALEM;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 9:
|
||||||
|
if (model == 7 || model == 10) { // Alder Lake
|
||||||
|
if(support_avx2())
|
||||||
|
return CORE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CORE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CORE_NEHALEM;
|
||||||
|
}
|
||||||
|
if (model == 13) { // Ice Lake NNPI
|
||||||
|
if(support_avx512())
|
||||||
|
return CORE_SKYLAKEX;
|
||||||
|
if(support_avx2())
|
||||||
|
return CORE_HASWELL;
|
||||||
|
if(support_avx())
|
||||||
|
return CORE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CORE_NEHALEM;
|
||||||
|
}
|
||||||
|
if (model == 14) { // Kaby Lake desktop
|
||||||
|
if(support_avx())
|
||||||
|
#ifndef NO_AVX2
|
||||||
|
return CORE_HASWELL;
|
||||||
|
#else
|
||||||
|
return CORE_SANDYBRIDGE;
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
return CORE_NEHALEM;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
switch (model) {
|
||||||
|
case 5: // Comet Lake H and S
|
||||||
|
case 6: // Comet Lake U
|
||||||
|
if(support_avx())
|
||||||
|
#ifndef NO_AVX2
|
||||||
|
return CORE_HASWELL;
|
||||||
|
#else
|
||||||
|
return CORE_SANDYBRIDGE;
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
return CORE_NEHALEM;
|
||||||
|
case 7:// Rocket Lake
|
||||||
|
#ifndef NO_AVX512
|
||||||
|
if(support_avx512())
|
||||||
|
return CORE_SKYLAKEX;
|
||||||
|
#endif
|
||||||
|
#ifndef NO_AVX2
|
||||||
|
if(support_avx2())
|
||||||
|
return CORE_HASWELL;
|
||||||
|
#endif
|
||||||
|
if(support_avx())
|
||||||
|
return CORE_SANDYBRIDGE;
|
||||||
|
else
|
||||||
|
return CORE_NEHALEM;
|
||||||
|
}
|
||||||
|
|
||||||
case 15:
|
case 15:
|
||||||
if (model <= 0x2) return CORE_NORTHWOOD;
|
if (model <= 0x2) return CORE_NORTHWOOD;
|
||||||
else return CORE_PRESCOTT;
|
else return CORE_PRESCOTT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2495,3 +2582,4 @@ void get_sse(void){
|
||||||
if (features & HAVE_FMA3 ) printf("HAVE_FMA3=1\n");
|
if (features & HAVE_FMA3 ) printf("HAVE_FMA3=1\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//}
|
Loading…
Reference in New Issue