@@ -1302,16 +1302,17 @@ static const char *getAMDProcessorTypeAndSubtype(unsigned Family,
1302
1302
case 26 :
1303
1303
CPU = " znver5" ;
1304
1304
*Type = X86::AMDFAM1AH;
1305
- if (Model <= 0x77 ) {
1305
+ if (Model <= 0x4f || (Model >= 0x60 && Model <= 0x77 ) ||
1306
+ (Model >= 0xd0 && Model <= 0xd7 )) {
1306
1307
// Models 00h-0Fh (Breithorn).
1307
1308
// Models 10h-1Fh (Breithorn-Dense).
1308
1309
// Models 20h-2Fh (Strix 1).
1309
1310
// Models 30h-37h (Strix 2).
1310
1311
// Models 38h-3Fh (Strix 3).
1311
1312
// Models 40h-4Fh (Granite Ridge).
1312
- // Models 50h-5Fh (Weisshorn).
1313
1313
// Models 60h-6Fh (Krackan1).
1314
1314
// Models 70h-77h (Sarlak).
1315
+ // Models D0h-D7h (Annapurna).
1315
1316
CPU = " znver5" ;
1316
1317
*Subtype = X86::AMDFAM1AH_ZNVER5;
1317
1318
break ; // "znver5"
@@ -2049,6 +2050,11 @@ StringMap<bool> sys::getHostCPUFeatures() {
2049
2050
Features[" rdpru" ] = HasExtLeaf8 && ((EBX >> 4 ) & 1 );
2050
2051
Features[" wbnoinvd" ] = HasExtLeaf8 && ((EBX >> 9 ) & 1 );
2051
2052
2053
+ bool HasExtLeaf21 = MaxExtLevel >= 0x80000021 &&
2054
+ !getX86CpuIDAndInfo (0x80000021 , &EAX, &EBX, &ECX, &EDX);
2055
+ // AMD cpuid bit for prefetchi is different from Intel
2056
+ Features[" prefetchi" ] = HasExtLeaf21 && ((EAX >> 20 ) & 1 );
2057
+
2052
2058
bool HasLeaf7 =
2053
2059
MaxLevel >= 7 && !getX86CpuIDAndInfoEx (0x7 , 0x0 , &EAX, &EBX, &ECX, &EDX);
2054
2060
@@ -2131,7 +2137,7 @@ StringMap<bool> sys::getHostCPUFeatures() {
2131
2137
Features[" avxneconvert" ] = HasLeaf7Subleaf1 && ((EDX >> 5 ) & 1 ) && HasAVXSave;
2132
2138
Features[" amx-complex" ] = HasLeaf7Subleaf1 && ((EDX >> 8 ) & 1 ) && HasAMXSave;
2133
2139
Features[" avxvnniint16" ] = HasLeaf7Subleaf1 && ((EDX >> 10 ) & 1 ) && HasAVXSave;
2134
- Features[" prefetchi" ] = HasLeaf7Subleaf1 && ((EDX >> 14 ) & 1 );
2140
+ Features[" prefetchi" ] | = HasLeaf7Subleaf1 && ((EDX >> 14 ) & 1 );
2135
2141
Features[" usermsr" ] = HasLeaf7Subleaf1 && ((EDX >> 15 ) & 1 );
2136
2142
bool HasAVX10 = HasLeaf7Subleaf1 && ((EDX >> 19 ) & 1 );
2137
2143
bool HasAPXF = HasLeaf7Subleaf1 && ((EDX >> 21 ) & 1 );
0 commit comments