backport: re PR target/40266 (march-native gives -mno-sse4, but cpuinfo sse4_1)

2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline:
	2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/40266
	* config/i386/driver-i386.c (host_detect_local_cpu): Support
	AVX, SSE4, AES, PCLMUL and POPCNT.

From-SVN: r147914
This commit is contained in:
H.J. Lu 2009-05-27 14:54:00 +00:00 committed by H.J. Lu
parent a9d74213ce
commit 887d3aea9f
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline:
2009-05-27 H.J. Lu <hongjiu.lu@intel.com>
PR target/40266
* config/i386/driver-i386.c (host_detect_local_cpu): Support
AVX, SSE4, AES, PCLMUL and POPCNT.
2009-05-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
PR bootstrap/40027

View File

@ -378,6 +378,9 @@ const char *host_detect_local_cpu (int argc, const char **argv)
/* Extended features */
unsigned int has_lahf_lm = 0, has_sse4a = 0;
unsigned int has_longmode = 0, has_3dnowp = 0, has_3dnow = 0;
unsigned int has_sse4_1 = 0, has_sse4_2 = 0;
unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0;
unsigned int has_pclmul = 0;
bool arch;
@ -401,7 +404,13 @@ const char *host_detect_local_cpu (int argc, const char **argv)
has_sse3 = ecx & bit_SSE3;
has_ssse3 = ecx & bit_SSSE3;
has_sse4_1 = ecx & bit_SSE4_1;
has_sse4_2 = ecx & bit_SSE4_2;
has_avx = ecx & bit_AVX;
has_cmpxchg16b = ecx & bit_CMPXCHG16B;
has_popcnt = ecx & bit_POPCNT;
has_aes = ecx & bit_AES;
has_pclmul = ecx & bit_PCLMUL;
has_cmpxchg8b = edx & bit_CMPXCHG8B;
has_cmov = edx & bit_CMOV;
@ -588,6 +597,18 @@ const char *host_detect_local_cpu (int argc, const char **argv)
options = concat (options, "-mcx16 ", NULL);
if (has_lahf_lm)
options = concat (options, "-msahf ", NULL);
if (has_aes)
options = concat (options, "-maes ", NULL);
if (has_pclmul)
options = concat (options, "-mpclmul ", NULL);
if (has_popcnt)
options = concat (options, "-mpopcnt ", NULL);
if (has_avx)
options = concat (options, "-mavx ", NULL);
else if (has_sse4_2)
options = concat (options, "-msse4.2 ", NULL);
else if (has_sse4_1)
options = concat (options, "-msse4.1 ", NULL);
}
done: