This patch fixes cpu family model numbers for znver5 and uses the
correct cpuid bit for prefetchi which is different from Intel
(https://docs.amd.com/v/u/en-US/24594_3.37).
2025-09-29 Umesh Kalvakuntla <Umesh.Kalvakuntla@amd.com>
* common/config/i386/cpuinfo.h (get_amd_cpu): Fix znver5 family
model numbers.
(get_available_features): Set FEATURE_PREFETCHI for bit_AMD_PREFETCHI.
* config/i386/cpuid.h (bit_AMD_PREFETCHI): New Macro.
break;
case 0x1a:
cpu_model->__cpu_type = AMDFAM1AH;
- if (model <= 0x77)
+ if (model <= 0x4f || (model >= 0x60 && model <= 0x77) ||
+ (model >= 0xd0 && model <= 0xd7))
{
cpu = "znver5";
CHECK___builtin_cpu_is ("znver5");
set_feature (FEATURE_WBNOINVD);
}
+ if (ext_level >= 0x80000021)
+ {
+ __cpuid (0x80000021, eax, ebx, ecx, edx);
+ if (eax & bit_AMD_PREFETCHI)
+ {
+ set_feature (FEATURE_PREFETCHI);
+ }
+ }
+
#undef set_feature
}
#define bit_CLZERO (1 << 0)
#define bit_WBNOINVD (1 << 9)
+/* Extended Features (%eax == 0x80000021) */
+/* %eax */
+#define bit_AMD_PREFETCHI (1 << 20)
+
/* Extended Features Leaf (%eax == 7, %ecx == 0) */
/* %ebx */
#define bit_FSGSBASE (1 << 0)