re PR target/37179 (gcc emits bad opcode 'ffreep')

PR target/37179
	* 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: r147469
This commit is contained in:
Uros Bizjak 2009-05-13 12:05:48 +02:00 committed by Uros Bizjak
parent 461b23e38e
commit edc702bfe7
2 changed files with 31 additions and 11 deletions

View File

@ -1,3 +1,11 @@
2009-05-13 Uros Bizjak <ubizjak@gmail.com>
PR target/37179
* 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.
2009-05-12 Jakub Jelinek <jakub@redhat.com>
Backport from mainline:

View File

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