https://gcc.gnu.org/g:578c322e7d6a6b5e392d7b587179e3031b7a8daa
commit r16-4367-g578c322e7d6a6b5e392d7b587179e3031b7a8daa Author: Umesh Kalvakuntla <[email protected]> Date: Wed Oct 8 18:50:37 2025 +0200 x86: Fixes for AMD znver5 enablement 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 <[email protected]> * 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. Diff: --- gcc/common/config/i386/cpuinfo.h | 12 +++++++++++- gcc/config/i386/cpuid.h | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index c93ea07239ad..3f29f17e2a59 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -312,7 +312,8 @@ get_amd_cpu (struct __processor_model *cpu_model, 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"); @@ -1102,6 +1103,15 @@ get_available_features (struct __processor_model *cpu_model, 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 } diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index afd4ef06e9f7..25e28352f596 100644 --- a/gcc/config/i386/cpuid.h +++ b/gcc/config/i386/cpuid.h @@ -72,6 +72,10 @@ #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)
