Commit 44f276c6 by H.J. Lu Committed by H.J. Lu

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
parent d6205185
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> 2010-05-09 Richard Guenther <rguenther@suse.de>
* gcc.c (store_arg): Handle temporary file deletion for * gcc.c (store_arg): Handle temporary file deletion for
......
...@@ -538,34 +538,61 @@ const char *host_detect_local_cpu (int argc, const char **argv) ...@@ -538,34 +538,61 @@ const char *host_detect_local_cpu (int argc, const char **argv)
cpu = "pentium"; cpu = "pentium";
break; break;
case PROCESSOR_PENTIUMPRO: case PROCESSOR_PENTIUMPRO:
if (model == 28) switch (model)
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)
{ {
if (has_sse3) case 0x1c:
/* It is Core Duo. */ case 0x26:
cpu = "pentium-m"; /* Atom. */
else if (has_sse2) cpu = "atom";
/* It is Pentium M. */ break;
cpu = "pentium-m"; case 0x1a:
else if (has_sse) case 0x1e:
/* It is Pentium III. */ case 0x1f:
cpu = "pentium3"; case 0x2e:
else if (has_mmx) /* FIXME: Optimize for Nehalem. */
/* It is Pentium II. */ cpu = "core2";
cpu = "pentium2"; 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 else
/* Default to Pentium Pro. */ /* For -mtune, we default to -mtune=generic. */
cpu = "pentiumpro"; cpu = "generic";
break;
} }
else
/* For -mtune, we default to -mtune=generic. */
cpu = "generic";
break; break;
case PROCESSOR_PENTIUM4: case PROCESSOR_PENTIUM4:
if (has_sse3) if (has_sse3)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment