Fix calculation of x86 CPU family.
authorChristoph Mallon <christoph.mallon@gmx.de>
Sat, 10 Nov 2012 14:26:17 +0000 (15:26 +0100)
committerChristoph Mallon <christoph.mallon@gmx.de>
Sat, 10 Nov 2012 14:26:17 +0000 (15:26 +0100)
It is just the sum of family and extended family.

ir/be/ia32/ia32_architecture.c

index 495ba43..cd86c89 100644 (file)
@@ -583,8 +583,8 @@ static cpu_arch_features auto_detect_Intel(x86_cpu_info_t const *info)
 {
        cpu_arch_features auto_arch = cpu_generic;
 
-       unsigned family = (info->cpu_ext_family << 4) | info->cpu_family;
-       unsigned model  = (info->cpu_ext_model  << 4) | info->cpu_model;
+       unsigned family = info->cpu_ext_family + info->cpu_family;
+       unsigned model  = (info->cpu_ext_model << 4) | info->cpu_model;
 
        switch (family) {
        case 4:
@@ -658,8 +658,8 @@ static cpu_arch_features auto_detect_AMD(x86_cpu_info_t const *info)
        unsigned family, model;
 
        if (info->cpu_family == 0x0F) {
-               family = (info->cpu_ext_family << 4) | info->cpu_family;
-               model  = (info->cpu_ext_model  << 4) | info->cpu_model;
+               family = info->cpu_ext_family + info->cpu_family;
+               model  = (info->cpu_ext_model << 4) | info->cpu_model;
        } else {
                family = info->cpu_family;
                model  = info->cpu_model;
@@ -711,8 +711,8 @@ static cpu_arch_features auto_detect_AMD(x86_cpu_info_t const *info)
        case 0x0F:
                auto_arch = cpu_k8_generic;
                break;
-       case 0x1F:
-       case 0x2F: /* AMD Family 11h */
+       case 0x10:
+       case 0x11: /* AMD Family 11h */
                auto_arch = cpu_k10_generic;
                break;
        default: