Hi Uros, Please find below patch that adds bdver4 target for multi versioning. Also I while computing model, the extended_model is incorrectly left shifted by 4. I have removed it now.
Is below patch Ok for trunk ? GCC bootstrap and regressions passed. diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index bb3a722..8676747 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,8 @@ +2015-10-09 Venkataramanan Kumar <venkataramanan.ku...@amd.com> + + * config/i386/cpuinfo.c (get_amd_cpu): Detect bdver4. + (__cpu_indicator_init): Fix model selection for AMD CPUs. + 2015-10-05 Kirill Yukhin <kirill.yuk...@intel.com> * config/i386/cpuinfo.c (get_intel_cpu): Detect "skylake-avx512". diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c index 0cbbc85..1313ca3 100644 --- a/libgcc/config/i386/cpuinfo.c +++ b/libgcc/config/i386/cpuinfo.c @@ -169,6 +169,9 @@ get_amd_cpu (unsigned int family, unsigned int model) /* Bulldozer version 3 "Steamroller" */ if (model >= 0x30 && model <= 0x4f) __cpu_model.__cpu_subtype = AMDFAM15H_BDVER3; + /* Bulldozer version 4 "Excavator" */ + if (model >= 0x60 && model <= 0x7f) + __cpu_model.__cpu_subtype = AMDFAM15H_BDVER4; break; /* AMD Family 16h "btver2" */ case 0x16: @@ -455,7 +458,7 @@ __cpu_indicator_init (void) if (family == 0x0f) { family += extended_family; - model += (extended_model << 4); + model += extended_model; } /* Get CPU type. */ Regards, Venkat.