diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-05-22 04:18:34 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-05-24 04:28:54 -0700 |
commit | 0055fa9a7b7239c50e6067724f28e64eceadd0fe (patch) | |
tree | c34486399828cabbc073153551ce8d90a6521049 | |
parent | 18ff359bc9bb4cf4ae49004bd214e36e11de41df (diff) | |
download | gcc-0055fa9a7b7239c50e6067724f28e64eceadd0fe.tar.gz |
x86: Handle -mavx512vpopcntdq for -march=native
Add -mavx512vpopcntdq for -march=native if AVX512VPOPCNTDQ is available.
PR target/95258
* config/i386/driver-i386.c (host_detect_local_cpu): Detect
AVX512VPOPCNTDQ.
(cherry picked from commit 808b611bfb4b05703ea174e50874c711dca44c98)
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/driver-i386.c | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a6c2ea8908..956ad8b39fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-05-24 H.J. Lu <hongjiu.lu@intel.com> + + PR target/95258 + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + AVX512VPOPCNTDQ. + 2020-05-21 Martin Liska <mliska@suse.cz> * common/config/aarch64/aarch64-common.c (aarch64_handle_option): diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index 704cadd8fcf..97eaf68442d 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -420,6 +420,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) unsigned int has_avx5124fmaps = 0, has_avx5124vnniw = 0; unsigned int has_gfni = 0, has_avx512vbmi2 = 0; unsigned int has_avx512bitalg = 0; + unsigned int has_avx512vpopcntdq = 0; unsigned int has_shstk = 0; unsigned int has_avx512vnni = 0, has_vaes = 0; unsigned int has_vpclmulqdq = 0; @@ -519,6 +520,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) has_vaes = ecx & bit_VAES; has_vpclmulqdq = ecx & bit_VPCLMULQDQ; has_avx512bitalg = ecx & bit_AVX512BITALG; + has_avx512vpopcntdq = ecx & bit_AVX512VPOPCNTDQ; has_movdiri = ecx & bit_MOVDIRI; has_movdir64b = ecx & bit_MOVDIR64B; @@ -1098,6 +1100,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) const char *vaes = has_vaes ? " -mvaes" : " -mno-vaes"; const char *vpclmulqdq = has_vpclmulqdq ? " -mvpclmulqdq" : " -mno-vpclmulqdq"; const char *avx512bitalg = has_avx512bitalg ? " -mavx512bitalg" : " -mno-avx512bitalg"; + const char *avx512vpopcntdq = has_avx512vpopcntdq ? " -mavx512vpopcntdq" : " -mno-avx512vpopcntdq"; const char *movdiri = has_movdiri ? " -mmovdiri" : " -mno-movdiri"; const char *movdir64b = has_movdir64b ? " -mmovdir64b" : " -mno-movdir64b"; options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3, @@ -1112,7 +1115,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) avx512ifma, avx512vbmi, avx5124fmaps, avx5124vnniw, clwb, mwaitx, clzero, pku, rdpid, gfni, shstk, avx512vbmi2, avx512vnni, vaes, vpclmulqdq, - avx512bitalg, movdiri, movdir64b, NULL); + avx512bitalg, avx512vpopcntdq, movdiri, movdir64b, + NULL); } done: |