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

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: r147913
This commit is contained in:
H.J. Lu 2009-05-27 14:39:23 +00:00 committed by H.J. Lu
parent f80735f6d4
commit 634fa334d3
2 changed files with 28 additions and 2 deletions

View file

@ -1,3 +1,9 @@
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-27 Diego Novillo <dnovillo@google.com>
* tree-pretty-print.c (dump_location): New.

View file

@ -378,7 +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_movbe = 0;
unsigned int has_movbe = 0, 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;
@ -415,8 +417,14 @@ 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_movbe = ecx & bit_MOVBE;
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;
@ -604,7 +612,19 @@ const char *host_detect_local_cpu (int argc, const char **argv)
if (has_lahf_lm)
options = concat (options, "-msahf ", NULL);
if (has_movbe)
options = concat (options, "-mmovbe", NULL);
options = concat (options, "-mmovbe ", 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: