1
+ //{
1
2
/*********************************************************************/
2
3
/* Copyright 2009, 2010 The University of Texas at Austin. */
3
4
/* All rights reserved. */
@@ -1455,7 +1456,6 @@ int get_cpuname(void){
1455
1456
return CPUTYPE_NEHALEM ;
1456
1457
}
1457
1458
break ;
1458
- case 9 :
1459
1459
case 8 :
1460
1460
switch (model ) {
1461
1461
case 12 : // Tiger Lake
@@ -1475,30 +1475,70 @@ int get_cpuname(void){
1475
1475
return CPUTYPE_SANDYBRIDGE ;
1476
1476
else
1477
1477
return CPUTYPE_NEHALEM ;
1478
- }
1479
- case 10 : //family 6 exmodel 10
1478
+ case 15 : // Sapphire Rapids
1479
+ if (support_avx512_bf16 ())
1480
+ return CPUTYPE_COOPERLAKE ;
1481
+ if (support_avx512 ())
1482
+ return CPUTYPE_SKYLAKEX ;
1483
+ if (support_avx2 ())
1484
+ return CPUTYPE_HASWELL ;
1485
+ if (support_avx ())
1486
+ return CPUTYPE_SANDYBRIDGE ;
1487
+ else
1488
+ return CPUTYPE_NEHALEM ;
1489
+ }
1490
+ break ;
1491
+ case 9 :
1480
1492
switch (model ) {
1481
- case 5 : // Comet Lake H and S
1482
- case 6 : // Comet Lake U
1493
+ case 7 : // Alder Lake desktop
1494
+ case 10 : // Alder Lake mobile
1483
1495
if (support_avx2 ())
1484
1496
return CPUTYPE_HASWELL ;
1485
1497
if (support_avx ())
1486
- return CPUTYPE_SANDYBRIDGE ;
1498
+ return CPUTYPE_SANDYBRIDGE ;
1487
1499
else
1488
- return CPUTYPE_NEHALEM ;
1489
- case 7 : // Rocket Lake
1490
- if (support_avx512 ())
1500
+ return CPUTYPE_NEHALEM ;
1501
+ case 13 : // Ice Lake NNPI
1502
+ if (support_avx512 ())
1491
1503
return CPUTYPE_SKYLAKEX ;
1504
+ if (support_avx2 ())
1505
+ return CPUTYPE_HASWELL ;
1506
+ if (support_avx ())
1507
+ return CPUTYPE_SANDYBRIDGE ;
1508
+ else
1509
+ return CPUTYPE_NEHALEM ;
1510
+ case 14 : // Kaby Lake and refreshes
1492
1511
if (support_avx2 ())
1493
1512
return CPUTYPE_HASWELL ;
1494
1513
if (support_avx ())
1495
1514
return CPUTYPE_SANDYBRIDGE ;
1496
- else
1497
- return CPUTYPE_NEHALEM ;
1498
- }
1499
- break ;
1500
- }
1515
+ else
1516
+ return CPUTYPE_NEHALEM ;
1517
+ }
1501
1518
break ;
1519
+ case 10 : //family 6 exmodel 10
1520
+ switch (model ) {
1521
+ case 5 : // Comet Lake H and S
1522
+ case 6 : // Comet Lake U
1523
+ if (support_avx2 ())
1524
+ return CPUTYPE_HASWELL ;
1525
+ if (support_avx ())
1526
+ return CPUTYPE_SANDYBRIDGE ;
1527
+ else
1528
+ return CPUTYPE_NEHALEM ;
1529
+ case 7 : // Rocket Lake
1530
+ if (support_avx512 ())
1531
+ return CPUTYPE_SKYLAKEX ;
1532
+ if (support_avx2 ())
1533
+ return CPUTYPE_HASWELL ;
1534
+ if (support_avx ())
1535
+ return CPUTYPE_SANDYBRIDGE ;
1536
+ else
1537
+ return CPUTYPE_NEHALEM ;
1538
+ }
1539
+ break ;
1540
+ }
1541
+ break ;
1502
1542
case 0x7 :
1503
1543
return CPUTYPE_ITANIUM ;
1504
1544
case 0xf :
@@ -2069,32 +2109,7 @@ int get_coretype(void){
2069
2109
return CORE_NEHALEM ;
2070
2110
}
2071
2111
break ;
2072
- case 10 :
2073
- switch (model ) {
2074
- case 5 : // Comet Lake H and S
2075
- case 6 : // Comet Lake U
2076
- if (support_avx ())
2077
- #ifndef NO_AVX2
2078
- return CORE_HASWELL ;
2079
- #else
2080
- return CORE_SANDYBRIDGE ;
2081
- #endif
2082
- else
2083
- return CORE_NEHALEM ;
2084
- case 7 :// Rocket Lake
2085
- #ifndef NO_AVX512
2086
- if (support_avx512 ())
2087
- return CORE_SKYLAKEX ;
2088
- #endif
2089
- #ifndef NO_AVX2
2090
- if (support_avx2 ())
2091
- return CORE_HASWELL ;
2092
- #endif
2093
- if (support_avx ())
2094
- return CORE_SANDYBRIDGE ;
2095
- else
2096
- return CORE_NEHALEM ;
2097
- }
2112
+
2098
2113
case 5 :
2099
2114
switch (model ) {
2100
2115
case 6 :
@@ -2148,6 +2163,7 @@ int get_coretype(void){
2148
2163
return CORE_NEHALEM ;
2149
2164
}
2150
2165
break ;
2166
+
2151
2167
case 6 :
2152
2168
if (model == 6 )
2153
2169
#ifndef NO_AVX512
@@ -2162,7 +2178,7 @@ int get_coretype(void){
2162
2178
else
2163
2179
return CORE_NEHALEM ;
2164
2180
#endif
2165
- if (model == 10 )
2181
+ if (model == 10 || model == 12 )
2166
2182
#ifndef NO_AVX512
2167
2183
if (support_avx512_bf16 ())
2168
2184
return CORE_COOPERLAKE ;
@@ -2178,10 +2194,11 @@ int get_coretype(void){
2178
2194
return CORE_NEHALEM ;
2179
2195
#endif
2180
2196
break ;
2197
+
2181
2198
case 7 :
2182
2199
if (model == 10 )
2183
2200
return CORE_NEHALEM ;
2184
- if (model == 14 )
2201
+ if (model == 13 || model == 14 ) // Ice Lake
2185
2202
#ifndef NO_AVX512
2186
2203
return CORE_SKYLAKEX ;
2187
2204
#else
@@ -2195,9 +2212,9 @@ int get_coretype(void){
2195
2212
return CORE_NEHALEM ;
2196
2213
#endif
2197
2214
break ;
2198
- case 9 :
2215
+
2199
2216
case 8 :
2200
- if (model == 12 || model == 13 ) { // Tiger Lake
2217
+ if (model == 12 || model == 13 ) { // Tiger Lake
2201
2218
if (support_avx512 ())
2202
2219
return CORE_SKYLAKEX ;
2203
2220
if (support_avx2 ())
@@ -2207,7 +2224,50 @@ int get_coretype(void){
2207
2224
else
2208
2225
return CORE_NEHALEM ;
2209
2226
}
2210
- if (model == 14 ) { // Kaby Lake
2227
+ if (model == 14 ) { // Kaby Lake mobile
2228
+ if (support_avx ())
2229
+ #ifndef NO_AVX2
2230
+ return CORE_HASWELL ;
2231
+ #else
2232
+ return CORE_SANDYBRIDGE ;
2233
+ #endif
2234
+ else
2235
+ return CORE_NEHALEM ;
2236
+ }
2237
+ if (model == 15 ) { // Sapphire Rapids
2238
+ if (support_avx512_bf16 ())
2239
+ return CPUTYPE_COOPERLAKE ;
2240
+ if (support_avx512 ())
2241
+ return CPUTYPE_SKYLAKEX ;
2242
+ if (support_avx2 ())
2243
+ return CPUTYPE_HASWELL ;
2244
+ if (support_avx ())
2245
+ return CPUTYPE_SANDYBRIDGE ;
2246
+ else
2247
+ return CPUTYPE_NEHALEM ;
2248
+ }
2249
+ break ;
2250
+
2251
+ case 9 :
2252
+ if (model == 7 || model == 10 ) { // Alder Lake
2253
+ if (support_avx2 ())
2254
+ return CORE_HASWELL ;
2255
+ if (support_avx ())
2256
+ return CORE_SANDYBRIDGE ;
2257
+ else
2258
+ return CORE_NEHALEM ;
2259
+ }
2260
+ if (model == 13 ) { // Ice Lake NNPI
2261
+ if (support_avx512 ())
2262
+ return CORE_SKYLAKEX ;
2263
+ if (support_avx2 ())
2264
+ return CORE_HASWELL ;
2265
+ if (support_avx ())
2266
+ return CORE_SANDYBRIDGE ;
2267
+ else
2268
+ return CORE_NEHALEM ;
2269
+ }
2270
+ if (model == 14 ) { // Kaby Lake desktop
2211
2271
if (support_avx ())
2212
2272
#ifndef NO_AVX2
2213
2273
return CORE_HASWELL ;
@@ -2217,12 +2277,39 @@ int get_coretype(void){
2217
2277
else
2218
2278
return CORE_NEHALEM ;
2219
2279
}
2220
- }
2221
2280
break ;
2222
2281
2282
+ case 10 :
2283
+ switch (model ) {
2284
+ case 5 : // Comet Lake H and S
2285
+ case 6 : // Comet Lake U
2286
+ if (support_avx ())
2287
+ #ifndef NO_AVX2
2288
+ return CORE_HASWELL ;
2289
+ #else
2290
+ return CORE_SANDYBRIDGE ;
2291
+ #endif
2292
+ else
2293
+ return CORE_NEHALEM ;
2294
+ case 7 :// Rocket Lake
2295
+ #ifndef NO_AVX512
2296
+ if (support_avx512 ())
2297
+ return CORE_SKYLAKEX ;
2298
+ #endif
2299
+ #ifndef NO_AVX2
2300
+ if (support_avx2 ())
2301
+ return CORE_HASWELL ;
2302
+ #endif
2303
+ if (support_avx ())
2304
+ return CORE_SANDYBRIDGE ;
2305
+ else
2306
+ return CORE_NEHALEM ;
2307
+ }
2308
+
2223
2309
case 15 :
2224
2310
if (model <= 0x2 ) return CORE_NORTHWOOD ;
2225
2311
else return CORE_PRESCOTT ;
2312
+ }
2226
2313
}
2227
2314
}
2228
2315
@@ -2495,3 +2582,4 @@ void get_sse(void){
2495
2582
if (features & HAVE_FMA3 ) printf ("HAVE_FMA3=1\n" );
2496
2583
2497
2584
}
2585
+ //}
0 commit comments