@@ -1302,16 +1302,17 @@ static const char *getAMDProcessorTypeAndSubtype(unsigned Family,
13021302 case 26 :
13031303 CPU = " znver5" ;
13041304 *Type = X86::AMDFAM1AH;
1305- if (Model <= 0x77 ) {
1305+ if (Model <= 0x4f || (Model >= 0x60 && Model <= 0x77 ) ||
1306+ (Model >= 0xd0 && Model <= 0xd7 )) {
13061307 // Models 00h-0Fh (Breithorn).
13071308 // Models 10h-1Fh (Breithorn-Dense).
13081309 // Models 20h-2Fh (Strix 1).
13091310 // Models 30h-37h (Strix 2).
13101311 // Models 38h-3Fh (Strix 3).
13111312 // Models 40h-4Fh (Granite Ridge).
1312- // Models 50h-5Fh (Weisshorn).
13131313 // Models 60h-6Fh (Krackan1).
13141314 // Models 70h-77h (Sarlak).
1315+ // Models D0h-D7h (Annapurna).
13151316 CPU = " znver5" ;
13161317 *Subtype = X86::AMDFAM1AH_ZNVER5;
13171318 break ; // "znver5"
@@ -2049,6 +2050,11 @@ StringMap<bool> sys::getHostCPUFeatures() {
20492050 Features[" rdpru" ] = HasExtLeaf8 && ((EBX >> 4 ) & 1 );
20502051 Features[" wbnoinvd" ] = HasExtLeaf8 && ((EBX >> 9 ) & 1 );
20512052
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+
20522058 bool HasLeaf7 =
20532059 MaxLevel >= 7 && !getX86CpuIDAndInfoEx (0x7 , 0x0 , &EAX, &EBX, &ECX, &EDX);
20542060
@@ -2131,7 +2137,7 @@ StringMap<bool> sys::getHostCPUFeatures() {
21312137 Features[" avxneconvert" ] = HasLeaf7Subleaf1 && ((EDX >> 5 ) & 1 ) && HasAVXSave;
21322138 Features[" amx-complex" ] = HasLeaf7Subleaf1 && ((EDX >> 8 ) & 1 ) && HasAMXSave;
21332139 Features[" avxvnniint16" ] = HasLeaf7Subleaf1 && ((EDX >> 10 ) & 1 ) && HasAVXSave;
2134- Features[" prefetchi" ] = HasLeaf7Subleaf1 && ((EDX >> 14 ) & 1 );
2140+ Features[" prefetchi" ] | = HasLeaf7Subleaf1 && ((EDX >> 14 ) & 1 );
21352141 Features[" usermsr" ] = HasLeaf7Subleaf1 && ((EDX >> 15 ) & 1 );
21362142 bool HasAVX10 = HasLeaf7Subleaf1 && ((EDX >> 19 ) & 1 );
21372143 bool HasAPXF = HasLeaf7Subleaf1 && ((EDX >> 21 ) & 1 );
0 commit comments