@@ -89,7 +89,8 @@ enum class CPU : uint32_t {
89
89
arm_cortex_x1,
90
90
arm_neoverse_e1,
91
91
arm_neoverse_n1,
92
- arm_zeus,
92
+ arm_neoverse_v1,
93
+ arm_neoverse_n2,
93
94
94
95
// Cavium
95
96
// aarch64
@@ -307,7 +308,9 @@ constexpr auto arm_cortex_a78 = armv8_2a | get_feature_masks(dotprod, rcpc, full
307
308
constexpr auto arm_cortex_x1 = armv8_2a | get_feature_masks(dotprod, rcpc, fullfp16, ssbs); // spe
308
309
constexpr auto arm_neoverse_e1 = armv8_2a | get_feature_masks(rcpc, fullfp16, ssbs);
309
310
constexpr auto arm_neoverse_n1 = armv8_2a | get_feature_masks(dotprod, rcpc, fullfp16, ssbs);
310
- constexpr auto arm_zeus = armv8_4a | get_feature_masks(sve, i8mm, bf16 , fullfp16, ssbs, rand);
311
+ constexpr auto arm_neoverse_v1 = armv8_4a | get_feature_masks(sve, i8mm, bf16 , fullfp16, ssbs, rand);
312
+ constexpr auto arm_neoverse_n2 = armv8_5a | get_feature_masks(sve, i8mm, bf16 , fullfp16, sve2,
313
+ sve2_bitperm, rand, mte);
311
314
constexpr auto cavium_thunderx = armv8a_crc_crypto;
312
315
constexpr auto cavium_thunderx88 = armv8a_crc_crypto;
313
316
constexpr auto cavium_thunderx88p1 = armv8a_crc_crypto;
@@ -369,7 +372,8 @@ static constexpr CPUSpec<CPU, feature_sz> cpus[] = {
369
372
{" cortex-x1" , CPU::arm_cortex_x1, CPU::arm_cortex_a78, 110000 , Feature::arm_cortex_x1},
370
373
{" neoverse-e1" , CPU::arm_neoverse_e1, CPU::arm_cortex_a76, 100000 , Feature::arm_neoverse_e1},
371
374
{" neoverse-n1" , CPU::arm_neoverse_n1, CPU::arm_cortex_a76, 100000 , Feature::arm_neoverse_n1},
372
- {" zeus" , CPU::arm_zeus, CPU::arm_neoverse_n1, UINT32_MAX, Feature::arm_zeus},
375
+ {" neoverse-v1" , CPU::arm_neoverse_v1, CPU::arm_neoverse_n1, UINT32_MAX, Feature::arm_neoverse_v1},
376
+ {" neoverse-n2" , CPU::arm_neoverse_n2, CPU::arm_neoverse_n1, UINT32_MAX, Feature::arm_neoverse_n2},
373
377
{" thunderx" , CPU::cavium_thunderx, CPU::generic, 0 , Feature::cavium_thunderx},
374
378
{" thunderxt88" , CPU::cavium_thunderx88, CPU::generic, 0 , Feature::cavium_thunderx88},
375
379
{" thunderxt88p1" , CPU::cavium_thunderx88p1, CPU::cavium_thunderx88, UINT32_MAX,
@@ -560,6 +564,8 @@ constexpr auto arm_cortex_a77 = armv8_2a;
560
564
constexpr auto arm_cortex_a78 = armv8_2a;
561
565
constexpr auto arm_cortex_x1 = armv8_2a;
562
566
constexpr auto arm_neoverse_n1 = armv8_2a;
567
+ constexpr auto arm_neoverse_v1 = armv8_4a;
568
+ constexpr auto arm_neoverse_n2 = armv8_5a;
563
569
constexpr auto nvidia_denver1 = armv8a; // TODO? (crc, crypto)
564
570
constexpr auto nvidia_denver2 = armv8a_crc_crypto;
565
571
constexpr auto apm_xgene1 = armv8a;
@@ -642,6 +648,8 @@ static constexpr CPUSpec<CPU, feature_sz> cpus[] = {
642
648
{" cortex-a78" , CPU::arm_cortex_a78, CPU::arm_cortex_a77, 110000 , Feature::arm_cortex_a78},
643
649
{" cortex-x1" , CPU::arm_cortex_x1, CPU::arm_cortex_a78, 110000 , Feature::arm_cortex_x1},
644
650
{" neoverse-n1" , CPU::arm_neoverse_n1, CPU::arm_cortex_a76, 100000 , Feature::arm_neoverse_n1},
651
+ {" neoverse-v1" , CPU::arm_neoverse_v1, CPU::arm_neoverse_n1, UINT32_MAX, Feature::arm_neoverse_v1},
652
+ {" neoverse-n2" , CPU::arm_neoverse_n2, CPU::arm_neoverse_n1, UINT32_MAX, Feature::arm_neoverse_n2},
645
653
{" denver1" , CPU::nvidia_denver1, CPU::arm_cortex_a53, UINT32_MAX, Feature::nvidia_denver1},
646
654
{" denver2" , CPU::nvidia_denver2, CPU::arm_cortex_a57, UINT32_MAX, Feature::nvidia_denver2},
647
655
{" xgene1" , CPU::apm_xgene1, CPU::armv8_a, UINT32_MAX, Feature::apm_xgene1},
@@ -851,10 +859,11 @@ static CPU get_cpu_name(CPUID cpuid)
851
859
case 0xd20 : return CPU::arm_cortex_m23;
852
860
case 0xd21 : return CPU::arm_cortex_m33;
853
861
// case 0xd22: return CPU::arm_cortex_m55;
854
- case 0xd40 : return CPU::arm_zeus ;
862
+ case 0xd40 : return CPU::arm_neoverse_v1 ;
855
863
case 0xd41 : return CPU::arm_cortex_a78;
856
864
case 0xd43 : return CPU::arm_cortex_a65ae;
857
865
case 0xd44 : return CPU::arm_cortex_x1;
866
+ case 0xd49 : return CPU::arm_neoverse_n2;
858
867
case 0xd4a : return CPU::arm_neoverse_e1;
859
868
default : return CPU::generic;
860
869
}
@@ -1258,6 +1267,8 @@ static NOINLINE std::pair<uint32_t,FeatureList<feature_sz>> _get_host_cpu()
1258
1267
CPU::arm_cortex_a75,
1259
1268
CPU::arm_cortex_a76,
1260
1269
CPU::arm_neoverse_n1,
1270
+ CPU::arm_neoverse_n2,
1271
+ CPU::arm_neoverse_v1,
1261
1272
CPU::nvidia_denver2,
1262
1273
CPU::nvidia_carmel,
1263
1274
CPU::samsung_exynos_m1,
@@ -1344,6 +1355,8 @@ static inline const char *normalize_cpu_name(llvm::StringRef name)
1344
1355
{
1345
1356
if (name == " ares" )
1346
1357
return " neoverse-n1" ;
1358
+ if (name == " zeus" )
1359
+ return " neoverse-v1" ;
1347
1360
if (name == " cyclone" )
1348
1361
return " apple-a7" ;
1349
1362
if (name == " typhoon" )
0 commit comments