@@ -79,6 +79,7 @@ enum class CPU : uint32_t {
79
79
intel_corei7_icelake_client,
80
80
intel_corei7_icelake_server,
81
81
intel_corei7_tigerlake,
82
+ intel_corei7_sapphirerapids,
82
83
intel_knights_landing,
83
84
intel_knights_mill,
84
85
@@ -209,6 +210,9 @@ constexpr auto icelake = cannonlake | get_feature_masks(avx512bitalg, vaes, avx5
209
210
constexpr auto icelake_server = icelake | get_feature_masks(pconfig, wbnoinvd);
210
211
constexpr auto tigerlake = icelake | get_feature_masks(avx512vp2intersect, movdiri,
211
212
movdir64b, shstk);
213
+ constexpr auto sapphirerapids = icelake_server |
214
+ get_feature_masks (amx_tile, amx_int8, amx_bf16, avx512bf16, serialize, cldemote, waitpkg,
215
+ ptwrite, tsxldtrk, enqcmd, shstk, avx512vp2intersect, movdiri, movdir64b);
212
216
213
217
constexpr auto k8_sse3 = get_feature_masks(sse3, cx16);
214
218
constexpr auto amdfam10 = k8_sse3 | get_feature_masks(sse4a, lzcnt, popcnt, sahf);
@@ -260,6 +264,8 @@ static constexpr CPUSpec<CPU, feature_sz> cpus[] = {
260
264
Feature::icelake_server},
261
265
{" tigerlake" , CPU::intel_corei7_tigerlake, CPU::intel_corei7_icelake_client, 100000 ,
262
266
Feature::tigerlake},
267
+ {" sapphirerapids" , CPU::intel_corei7_sapphirerapids, CPU::intel_corei7_icelake_server, 120000 ,
268
+ Feature::sapphirerapids},
263
269
264
270
{" athlon64" , CPU::amd_athlon_64, CPU::generic, 0 , Feature::generic},
265
271
{" athlon-fx" , CPU::amd_athlon_fx, CPU::generic, 0 , Feature::generic},
@@ -419,6 +425,10 @@ static CPU get_intel_processor_name(uint32_t family, uint32_t model, uint32_t br
419
425
case 0x8d :
420
426
return CPU::intel_corei7_tigerlake;
421
427
428
+ // Sapphire Rapids
429
+ case 0x8f :
430
+ return CPU::intel_corei7_sapphirerapids;
431
+
422
432
case 0x1c : // Most 45 nm Intel Atom processors
423
433
case 0x26 : // 45 nm Atom Lincroft
424
434
case 0x27 : // 32 nm Atom Medfield
0 commit comments