Properly detect Atom, Core 2 and Core i7.

2010-05-09  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/44046
	* config/i386/driver-i386.c (host_detect_local_cpu): Properly
	detect Atom, Core 2 and Core i7.

From-SVN: r159202
This commit is contained in:
H.J. Lu 2010-05-09 14:49:53 +00:00 committed by H.J. Lu
parent d620518576
commit 44f276c65f
2 changed files with 58 additions and 25 deletions

View File

@ -1,3 +1,9 @@
2010-05-09 H.J. Lu <hongjiu.lu@intel.com>
PR target/44046
* config/i386/driver-i386.c (host_detect_local_cpu): Properly
detect Atom, Core 2 and Core i7.
2010-05-09 Richard Guenther <rguenther@suse.de>
* gcc.c (store_arg): Handle temporary file deletion for

View File

@ -538,34 +538,61 @@ const char *host_detect_local_cpu (int argc, const char **argv)
cpu = "pentium";
break;
case PROCESSOR_PENTIUMPRO:
if (model == 28)
cpu = "atom";
else if (model >= 28 && l2sizekb < 2048)
/* Assume it's a small core if there's less than 2MB cache */
cpu = "atom";
else if (has_longmode)
cpu = "core2";
else if (arch)
switch (model)
{
if (has_sse3)
/* It is Core Duo. */
cpu = "pentium-m";
else if (has_sse2)
/* It is Pentium M. */
cpu = "pentium-m";
else if (has_sse)
/* It is Pentium III. */
cpu = "pentium3";
else if (has_mmx)
/* It is Pentium II. */
cpu = "pentium2";
case 0x1c:
case 0x26:
/* Atom. */
cpu = "atom";
break;
case 0x1a:
case 0x1e:
case 0x1f:
case 0x2e:
/* FIXME: Optimize for Nehalem. */
cpu = "core2";
break;
case 0x25:
case 0x2f:
/* FIXME: Optimize for Westmere. */
cpu = "core2";
break;
case 0x17:
case 0x1d:
/* Penryn. FIXME: -mtune=core2 is slower than -mtune=generic */
cpu = "core2";
break;
case 0x0f:
/* Merom. FIXME: -mtune=core2 is slower than -mtune=generic */
cpu = "core2";
break;
default:
if (arch)
{
if (has_ssse3)
/* If it is an unknown CPU with SSSE3, assume Core 2. */
cpu = "core2";
else if (has_sse3)
/* It is Core Duo. */
cpu = "pentium-m";
else if (has_sse2)
/* It is Pentium M. */
cpu = "pentium-m";
else if (has_sse)
/* It is Pentium III. */
cpu = "pentium3";
else if (has_mmx)
/* It is Pentium II. */
cpu = "pentium2";
else
/* Default to Pentium Pro. */
cpu = "pentiumpro";
}
else
/* Default to Pentium Pro. */
cpu = "pentiumpro";
/* For -mtune, we default to -mtune=generic. */
cpu = "generic";
break;
}
else
/* For -mtune, we default to -mtune=generic. */
cpu = "generic";
break;
case PROCESSOR_PENTIUM4:
if (has_sse3)