Add CPUIDs for Alder Lake and some other recent Intel cpus

This commit is contained in:
Martin Kroeker 2021-11-04 20:35:41 +01:00 committed by GitHub
parent 4ea9a14567
commit faae86fba2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 138 additions and 50 deletions

View File

@ -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,30 +1475,70 @@ 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;
if(support_avx()) if(support_avx())
return CPUTYPE_SANDYBRIDGE; return CPUTYPE_SANDYBRIDGE;
else else
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
} }
break;
}
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;
case 0x7: case 0x7:
return CPUTYPE_ITANIUM; return CPUTYPE_ITANIUM;
case 0xf: case 0xf:
@ -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");
} }
//}