From: H.J. Lu Date: Mon, 23 Jun 2014 16:28:36 +0000 (+0000) Subject: Assume x86-64 if a 32-bit processor supports SSE2 and 64-bit X-Git-Tag: releases/gcc-5.1.0~6721 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=228e5d2b0cb64bad4f3f96a0723c14dd6a378c8b;p=thirdparty%2Fgcc.git Assume x86-64 if a 32-bit processor supports SSE2 and 64-bit PR target/61570 * config/i386/driver-i386.c (host_detect_local_cpu): Set arch to x86-64 if a 32-bit processor supports SSE2 and 64-bit. From-SVN: r211901 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32917ef5e4a5..06763f0bcbc0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-23 H.J. Lu + + PR target/61570 + * config/i386/driver-i386.c (host_detect_local_cpu): Set arch + to x86-64 if a 32-bit processor supports SSE2 and 64-bit. + 2014-06-23 James Greenhalgh * config/aarch64/aarch64.md (addsi3_aarch64): Set "simd" attr to diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 3e8a995f2856..4ae9a6ab675b 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -415,6 +415,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) bool arch; unsigned int l2sizekb = 0; + unsigned int arch_64bit = 1; if (argc < 1) return NULL; @@ -656,11 +657,14 @@ const char *host_detect_local_cpu (int argc, const char **argv) { case PROCESSOR_I386: /* Default. */ + arch_64bit = 0; break; case PROCESSOR_I486: + arch_64bit = 0; cpu = "i486"; break; case PROCESSOR_PENTIUM: + arch_64bit = 0; if (arch && has_mmx) cpu = "pentium-mmx"; else @@ -745,21 +749,25 @@ const char *host_detect_local_cpu (int argc, const char **argv) /* 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"; + { + arch_64bit = 0; + 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 /* For -mtune, we default to -mtune=generic. */ @@ -773,21 +781,30 @@ const char *host_detect_local_cpu (int argc, const char **argv) if (has_longmode) cpu = "nocona"; else - cpu = "prescott"; + { + cpu = "prescott"; + arch_64bit = 0; + } } else - cpu = "pentium4"; + { + cpu = "pentium4"; + arch_64bit = 0; + } break; case PROCESSOR_GEODE: + arch_64bit = 0; cpu = "geode"; break; case PROCESSOR_K6: + arch_64bit = 0; if (arch && has_3dnow) cpu = "k6-3"; else cpu = "k6"; break; case PROCESSOR_ATHLON: + arch_64bit = 0; if (arch && has_sse) cpu = "athlon-4"; else @@ -896,6 +913,10 @@ const char *host_detect_local_cpu (int argc, const char **argv) const char *xsavec = has_xsavec ? " -mxsavec" : " -mno-xsavec"; const char *xsaves = has_xsaves ? " -mxsaves" : " -mno-xsaves"; + /* Assume x86-64 if a 32-bit processor supports SSE2 and 64-bit. */ + if (arch_64bit == 0 && has_sse2 && has_longmode) + cpu = "x86-64"; + options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3, sse4a, cx16, sahf, movbe, aes, sha, pclmul, popcnt, abm, lwp, fma, fma4, xop, bmi, bmi2,