Commit fbdf817d by Uros Bizjak

re PR target/37197 (-msse4 ICE on __builtin_parityl)

	PR target/37197
	* config/i386/driver-i386.c (processor_signatures): New enum.
	(SIG_GEODE): Move from vendor_signatures to processor_signatures.
	(host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
	processor signature to detect geode processor.

From-SVN: r147429
parent 5e8d1826
...@@ -336,7 +336,11 @@ detect_caches_intel (bool xeon_mp, unsigned max_level, unsigned max_ext_level) ...@@ -336,7 +336,11 @@ detect_caches_intel (bool xeon_mp, unsigned max_level, unsigned max_ext_level)
enum vendor_signatures enum vendor_signatures
{ {
SIG_INTEL = 0x756e6547 /* Genu */, SIG_INTEL = 0x756e6547 /* Genu */,
SIG_AMD = 0x68747541 /* Auth */, SIG_AMD = 0x68747541 /* Auth */
};
enum processor_signatures
{
SIG_GEODE = 0x646f6547 /* Geod */ SIG_GEODE = 0x646f6547 /* Geod */
}; };
...@@ -433,19 +437,27 @@ const char *host_detect_local_cpu (int argc, const char **argv) ...@@ -433,19 +437,27 @@ const char *host_detect_local_cpu (int argc, const char **argv)
if (vendor == SIG_AMD) if (vendor == SIG_AMD)
{ {
processor = PROCESSOR_PENTIUM; unsigned int name;
if (has_mmx) /* Detect geode processor by its processor signature. */
processor = PROCESSOR_K6; if (ext_level > 0x80000001)
if (has_3dnowp) __cpuid (0x80000002, name, ebx, ecx, edx);
processor = PROCESSOR_ATHLON; else
if (has_sse2 || has_longmode) name = 0;
processor = PROCESSOR_K8;
if (has_sse4a) if (name == SIG_GEODE)
processor = PROCESSOR_GEODE;
else if (has_sse4a)
processor = PROCESSOR_AMDFAM10; processor = PROCESSOR_AMDFAM10;
else if (has_sse2 || has_longmode)
processor = PROCESSOR_K8;
else if (has_3dnowp)
processor = PROCESSOR_ATHLON;
else if (has_mmx)
processor = PROCESSOR_K6;
else
processor = PROCESSOR_PENTIUM;
} }
else if (vendor == SIG_GEODE)
processor = PROCESSOR_GEODE;
else else
{ {
switch (family) switch (family)
......
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