| @@ -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 10: //family 6 exmodel 10 | |||||
| case 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; | |||||
| case 9: | |||||
| switch (model) { | switch (model) { | ||||
| case 5: // Comet Lake H and S | |||||
| case 6: // Comet Lake U | |||||
| case 7: // Alder Lake desktop | |||||
| case 10: // Alder Lake mobile | |||||
| 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; | |||||
| case 7: // Rocket Lake | |||||
| if(support_avx512()) | |||||
| return CPUTYPE_NEHALEM; | |||||
| case 13: // Ice Lake NNPI | |||||
| if(support_avx512()) | |||||
| return CPUTYPE_SKYLAKEX; | 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()) | if(support_avx2()) | ||||
| return CPUTYPE_HASWELL; | return CPUTYPE_HASWELL; | ||||
| if(support_avx()) | if(support_avx()) | ||||
| return CPUTYPE_SANDYBRIDGE; | return CPUTYPE_SANDYBRIDGE; | ||||
| else | |||||
| return CPUTYPE_NEHALEM; | |||||
| } | |||||
| break; | |||||
| } | |||||
| else | |||||
| return CPUTYPE_NEHALEM; | |||||
| } | |||||
| break; | 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,50 @@ 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()) | |||||
| #ifndef NO_AVX2 | |||||
| return CORE_HASWELL; | |||||
| #else | |||||
| return CORE_SANDYBRIDGE; | |||||
| #endif | |||||
| else | |||||
| 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; | |||||
| 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()) | if(support_avx()) | ||||
| #ifndef NO_AVX2 | #ifndef NO_AVX2 | ||||
| return CORE_HASWELL; | return CORE_HASWELL; | ||||
| @@ -2217,12 +2277,39 @@ int get_coretype(void){ | |||||
| else | else | ||||
| 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 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"); | ||||
| } | } | ||||
| //} | |||||