From: hjl Date: Wed, 20 May 2009 13:32:14 +0000 (+0000) Subject: 2009-05-20 H.J. Lu X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4ec32090fb194ddf6e5eadceade24647ec10e67a;p=thirdparty%2Fgcc.git 2009-05-20 H.J. Lu * config/i386/driver-i386.c (host_detect_local_cpu): Check extended family and model for Intel processors. Support Intel Atom. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147736 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59721f496398..4ac176ddec20 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-05-20 H.J. Lu + + * config/i386/driver-i386.c (host_detect_local_cpu): Check + extended family and model for Intel processors. Support Intel + Atom. + 2009-05-20 Olivier Hainque * gstab.h (stab_code_type): Define, to be used instead of the diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index cb669378a439..d4ba466d225e 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -395,9 +395,22 @@ const char *host_detect_local_cpu (int argc, const char **argv) __cpuid (1, eax, ebx, ecx, edx); - /* We don't care for extended family. */ model = (eax >> 4) & 0x0f; family = (eax >> 8) & 0x0f; + if (vendor == SIG_INTEL) + { + unsigned int extended_model, extended_family; + + extended_model = (eax >> 12) & 0xf0; + extended_family = (eax >> 20) & 0xff; + if (family == 0x0f) + { + family += extended_family; + model += extended_model; + } + else if (family == 0x06) + model += extended_model; + } has_sse3 = ecx & bit_SSE3; has_ssse3 = ecx & bit_SSSE3; @@ -496,8 +509,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) break; case PROCESSOR_PENTIUMPRO: if (has_longmode) - /* It is Core 2 Duo. */ - cpu = "core2"; + /* It is Core 2 or Atom. */ + cpu = (model == 28) ? "atom" : "core2"; else if (arch) { if (has_sse3)