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.






Reply via email to