Re: [PATCH][x86] Add clwb,pcommit,avx512avbmi,avx512ifma.
On 20 Nov 09:43, Uros Bizjak wrote: On Wed, Nov 19, 2014 at 6:32 PM, Ilya Tocar tocarip.in...@gmail.com wrote: Hi, New revision of Intel ISA reference [1] has new instructions: Clwb, pcommit and new flavors of AVX512. Patch bellow adds them. I understand that stage 1 is closed, however those changes shouldn't affect anything outside if i386 backend. And are extremely unlikely to break existing functionality, and I personally think it's desirable for newest GCC to support newest spec. Bootstrapped/regtestsed on x86_64-unknown-linux-gnu. Ok for trunk? Please split the patch into patch series, like it was done previously for AVX512F patches. Uros. [1]:https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf This part adds pcommit. Bootstrapps/passes make check. Ok for trunk? gcc/ * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCOMMIT_UNSET, OPTION_MASK_ISA_PCOMMIT_SET): New. (ix86_handle_option): Handle OPT_mpcommit. * config.gcc: Add pcommitintrin.h * config/i386/pcommitintrin.h: New file. * config/i386/cpuid.h (bit_PCOMMIT): Define. * config/i386/driver-i386.c (host_detect_local_cpu): Detect pcommit. * config/i386/i386-c.c (ix86_target_macros_internal): Define __PCOMMIT__. * config/i386/i386.c (ix86_target_string): Add -mpcommit. (PTA_PCOMMIT): Define. (ix86_option_override_internal): Handle new option. (ix86_valid_target_attribute_inner_p): Add pcommit. (ix86_builtins): Add IX86_BUILTIN_PCOMMIT. (bdesc_special_args): Add __builtin_ia32_pcommit. * config/i386/i386.h (TARGET_PCOMMIT, TARGET_PCOMMIT_P): Define. * config/i386/i386.md (unspecv): Add UNSPECV_PCOMMIT. (pcommit): New instruction. * config/i386/i386.opt: Add mpcommit. * config/i386/x86intrin.h: Include pcommitintrin.h. --- gcc/common/config/i386/i386-common.c | 15 ++ gcc/config.gcc| 4 +-- gcc/config/i386/cpuid.h | 1 + gcc/config/i386/driver-i386.c | 5 +++- gcc/config/i386/i386-c.c | 2 ++ gcc/config/i386/i386.c| 12 gcc/config/i386/i386.h| 2 ++ gcc/config/i386/i386.md | 10 +++ gcc/config/i386/i386.opt | 4 +++ gcc/config/i386/pcommitintrin.h | 49 +++ gcc/config/i386/x86intrin.h | 2 ++ gcc/testsuite/g++.dg/other/i386-2.C | 2 +- gcc/testsuite/g++.dg/other/i386-3.C | 2 +- gcc/testsuite/gcc.target/i386/pcommit-1.c | 11 +++ gcc/testsuite/gcc.target/i386/sse-12.c| 2 +- gcc/testsuite/gcc.target/i386/sse-13.c| 2 +- gcc/testsuite/gcc.target/i386/sse-14.c| 2 +- gcc/testsuite/gcc.target/i386/sse-22.c| 2 +- gcc/testsuite/gcc.target/i386/sse-23.c| 2 +- 19 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 gcc/config/i386/pcommitintrin.h create mode 100644 gcc/testsuite/gcc.target/i386/pcommit-1.c diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c index bad0988..2e09d77 100644 --- a/gcc/common/config/i386/i386-common.c +++ b/gcc/common/config/i386/i386-common.c @@ -86,6 +86,7 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_XSAVEC_SET \ (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE) #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB +#define OPTION_MASK_ISA_PCOMMIT_SET OPTION_MASK_ISA_PCOMMIT /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same as -msse4.2. */ @@ -182,6 +183,7 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES +#define OPTION_MASK_ISA_PCOMMIT_UNSET OPTION_MASK_ISA_PCOMMIT #define OPTION_MASK_ISA_CLWB_UNSET OPTION_MASK_ISA_CLWB /* SSE4 includes both SSE4.1 and SSE4.2. -mno-sse4 should the same @@ -903,6 +905,19 @@ ix86_handle_option (struct gcc_options *opts, } return true; +case OPT_mpcommit: + if (value) + { + opts-x_ix86_isa_flags |= OPTION_MASK_ISA_PCOMMIT_SET; + opts-x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_SET; + } + else + { + opts-x_ix86_isa_flags = ~OPTION_MASK_ISA_PCOMMIT_UNSET; + opts-x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_UNSET; + } + return true; + case OPT_mclwb: if (value) { diff --git a/gcc/config.gcc b/gcc/config.gcc index 766f13b..fa3e1fc 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -369,7 +369,7 @@ i[34567]86-*-*) xsavesintrin.h avx512dqintrin.h avx512bwintrin.h avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
Re: [PATCH][x86] Add clwb,pcommit,avx512avbmi,avx512ifma.
On Fri, Nov 21, 2014 at 12:50 PM, Ilya Tocar tocarip.in...@gmail.com wrote: On 20 Nov 09:43, Uros Bizjak wrote: On Wed, Nov 19, 2014 at 6:32 PM, Ilya Tocar tocarip.in...@gmail.com wrote: Hi, New revision of Intel ISA reference [1] has new instructions: Clwb, pcommit and new flavors of AVX512. Patch bellow adds them. I understand that stage 1 is closed, however those changes shouldn't affect anything outside if i386 backend. And are extremely unlikely to break existing functionality, and I personally think it's desirable for newest GCC to support newest spec. Bootstrapped/regtestsed on x86_64-unknown-linux-gnu. Ok for trunk? Please split the patch into patch series, like it was done previously for AVX512F patches. Uros. [1]:https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf This part adds pcommit. Bootstrapps/passes make check. Ok for trunk? gcc/ * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCOMMIT_UNSET, OPTION_MASK_ISA_PCOMMIT_SET): New. (ix86_handle_option): Handle OPT_mpcommit. * config.gcc: Add pcommitintrin.h * config/i386/pcommitintrin.h: New file. * config/i386/cpuid.h (bit_PCOMMIT): Define. * config/i386/driver-i386.c (host_detect_local_cpu): Detect pcommit. * config/i386/i386-c.c (ix86_target_macros_internal): Define __PCOMMIT__. * config/i386/i386.c (ix86_target_string): Add -mpcommit. (PTA_PCOMMIT): Define. (ix86_option_override_internal): Handle new option. (ix86_valid_target_attribute_inner_p): Add pcommit. (ix86_builtins): Add IX86_BUILTIN_PCOMMIT. (bdesc_special_args): Add __builtin_ia32_pcommit. * config/i386/i386.h (TARGET_PCOMMIT, TARGET_PCOMMIT_P): Define. * config/i386/i386.md (unspecv): Add UNSPECV_PCOMMIT. (pcommit): New instruction. * config/i386/i386.opt: Add mpcommit. * config/i386/x86intrin.h: Include pcommitintrin.h. OK with a small typo fix below. Thanks, Uros. --- gcc/common/config/i386/i386-common.c | 15 ++ gcc/config.gcc| 4 +-- gcc/config/i386/cpuid.h | 1 + gcc/config/i386/driver-i386.c | 5 +++- gcc/config/i386/i386-c.c | 2 ++ gcc/config/i386/i386.c| 12 gcc/config/i386/i386.h| 2 ++ gcc/config/i386/i386.md | 10 +++ gcc/config/i386/i386.opt | 4 +++ gcc/config/i386/pcommitintrin.h | 49 +++ gcc/config/i386/x86intrin.h | 2 ++ gcc/testsuite/g++.dg/other/i386-2.C | 2 +- gcc/testsuite/g++.dg/other/i386-3.C | 2 +- gcc/testsuite/gcc.target/i386/pcommit-1.c | 11 +++ gcc/testsuite/gcc.target/i386/sse-12.c| 2 +- gcc/testsuite/gcc.target/i386/sse-13.c| 2 +- gcc/testsuite/gcc.target/i386/sse-14.c| 2 +- gcc/testsuite/gcc.target/i386/sse-22.c| 2 +- gcc/testsuite/gcc.target/i386/sse-23.c| 2 +- 19 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 gcc/config/i386/pcommitintrin.h create mode 100644 gcc/testsuite/gcc.target/i386/pcommit-1.c diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c index bad0988..2e09d77 100644 --- a/gcc/common/config/i386/i386-common.c +++ b/gcc/common/config/i386/i386-common.c @@ -86,6 +86,7 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_XSAVEC_SET \ (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE) #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB +#define OPTION_MASK_ISA_PCOMMIT_SET OPTION_MASK_ISA_PCOMMIT /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same as -msse4.2. */ @@ -182,6 +183,7 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES +#define OPTION_MASK_ISA_PCOMMIT_UNSET OPTION_MASK_ISA_PCOMMIT #define OPTION_MASK_ISA_CLWB_UNSET OPTION_MASK_ISA_CLWB /* SSE4 includes both SSE4.1 and SSE4.2. -mno-sse4 should the same @@ -903,6 +905,19 @@ ix86_handle_option (struct gcc_options *opts, } return true; +case OPT_mpcommit: + if (value) + { + opts-x_ix86_isa_flags |= OPTION_MASK_ISA_PCOMMIT_SET; + opts-x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_SET; + } + else + { + opts-x_ix86_isa_flags = ~OPTION_MASK_ISA_PCOMMIT_UNSET; + opts-x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCOMMIT_UNSET; + } + return true; + case OPT_mclwb: if (value) { diff --git a/gcc/config.gcc b/gcc/config.gcc index 766f13b..fa3e1fc 100644 ---
Re: [PATCH][x86] Add clwb,pcommit,avx512avbmi,avx512ifma.
On Wed, Nov 19, 2014 at 6:32 PM, Ilya Tocar tocarip.in...@gmail.com wrote: Hi, New revision of Intel ISA reference [1] has new instructions: Clwb, pcommit and new flavors of AVX512. Patch bellow adds them. I understand that stage 1 is closed, however those changes shouldn't affect anything outside if i386 backend. And are extremely unlikely to break existing functionality, and I personally think it's desirable for newest GCC to support newest spec. Bootstrapped/regtestsed on x86_64-unknown-linux-gnu. Ok for trunk? Please split the patch into patch series, like it was done previously for AVX512F patches. Uros. [1]:https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf gcc/ 2014-11-19 Ilya Tocar ilya.to...@intel.com * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512IFMA_SET, OPTION_MASK_ISA_AVX512VBMI_SET, OPTION_MASK_ISA_AVX512IFMA_UNSET, OPTION_MASK_ISA_AVX512VBMI_UNSET, OPTION_MASK_ISA_PCOMMIT_UNSET, OPTION_MASK_ISA_CLWB_UNSET, OPTION_MASK_ISA_CLWB_SET, OPTION_MASK_ISA_PCOMMIT_SET): New. (ix86_handle_option): Handle OPT_mavx512ifma, OPT_mavx512vbmi, OPT_mpcommit, OPT_mclwb. * config.gcc: Add avx512ifmaintrin.h, avx512ifmavlintrin.h, avx512vbmiintrin.h, avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h * config/i386/avx512ifmaintrin.h: New file. * config/i386/avx512ifmaivlntrin.h: Ditto. * config/i386/avx512vbmiintrin.h: Ditto. * config/i386/avx512vbmivlintrin.h: Ditto. * config/i386/clwbintrin.h: Ditto. * config/i386/pcommitintrin.h: Ditto. * config/i386/cpuid.h (bit_AVX512IFMA, bit_PCOMMIT, bit_CLWB, bit_AVX512VBMI): New. * config/i386/driver-i386.c (host_detect_local_cpu): Detect pcommit, clwb, avx512ifma, avx512vbmi. * config/i386/i386-c.c (ix86_target_macros_internal): Define __AVX512VBMI__, __AVX512IFMA__, __PCOMMIT__, __CLWB__. * config/i386/i386.c (ix86_target_string): Add -mavx512ifma, -mavx512vbmi, -mclwb, -mpcommit. (PTA_AVX512VBMI, PTA_AVX512IFMA, PTA_CLWB, PTA_PCOMMIT): Define. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add avx512vbmi, avx512ifma, clwb, pcommit. (ix86_builtins): Add IX86_BUILTIN_VPMADD52LUQ512, IX86_BUILTIN_VPMADD52HUQ512, IX86_BUILTIN_VPMADD52LUQ256, IX86_BUILTIN_VPMADD52HUQ256, IX86_BUILTIN_VPMADD52LUQ128, IX86_BUILTIN_VPMADD52HUQ128, IX86_BUILTIN_VPMADD52LUQ512_MASKZ, IX86_BUILTIN_VPMADD52HUQ512_MASKZ, IX86_BUILTIN_VPMADD52LUQ256_MASKZ, IX86_BUILTIN_VPMADD52HUQ256_MASKZ, IX86_BUILTIN_VPMADD52LUQ128_MASKZ, IX86_BUILTIN_VPMADD52HUQ128_MASKZ, IX86_BUILTIN_VPMULTISHIFTQB512, IX86_BUILTIN_VPMULTISHIFTQB256, IX86_BUILTIN_VPMULTISHIFTQB128, IX86_BUILTIN_VPERMVARQI512_MASK, IX86_BUILTIN_VPERMT2VARQI512, IX86_BUILTIN_VPERMT2VARQI512_MASKZ, IX86_BUILTIN_VPERMI2VARQI512, IX86_BUILTIN_VPERMVARQI256_MASK, IX86_BUILTIN_VPERMVARQI128_MASK, IX86_BUILTIN_VPERMT2VARQI256, IX86_BUILTIN_VPERMT2VARQI256_MASKZ, IX86_BUILTIN_VPERMT2VARQI128, IX86_BUILTIN_VPERMI2VARQI256, IX86_BUILTIN_VPERMI2VARQI128, IX86_BUILTIN_CLWB, IX86_BUILTIN_PCOMMIT. (bdesc_special_args): Add __builtin_ia32_pcommit, __builtin_ia32_vpmadd52luq512_mask, __builtin_ia32_vpmadd52luq512_maskz, __builtin_ia32_vpmadd52huq512_mask, __builtin_ia32_vpmadd52huq512_maskx, __builtin_ia32_vpmadd52luq256_mask, __builtin_ia32_vpmadd52luq256_maskz, __builtin_ia32_vpmadd52huq256_mask, __builtin_ia32_vpmadd52huq256_maskz, __builtin_ia32_vpmadd52luq128_mask, __builtin_ia32_vpmadd52luq128_maskz, __builtin_ia32_vpmadd52huq128_mask, __builtin_ia32_vpmadd52huq128_maskz, __builtin_ia32_vpmultishiftqb512_mask, __builtin_ia32_vpmultishiftqb256_mask, __builtin_ia32_vpmultishiftqb128_mask, __builtin_ia32_permvarqi512_mask, __builtin_ia32_vpermt2varqi512_mask, __builtin_ia32_vpermt2varqi512_maskz, __builtin_ia32_vpermi2varqi512_mask, __builtin_ia32_permvarqi256_mask, __builtin_ia32_permvarqi128_mask, __builtin_ia32_vpermt2varqi256_mask, __builtin_ia32_vpermt2varqi256_maskz, __builtin_ia32_vpermt2varqi128_mask, __builtin_ia32_vpermt2varqi128_maskz, __builtin_ia32_vpermi2varqi256_mask, __builtin_ia32_vpermi2varqi128_mask. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_clwb. (ix86_expand_builtin): Handle IX86_BUILTIN_CLWB. (ix86_hard_regno_mode_ok): Allow big masks for AVX612VBMI. * config/i386/i386.h (TARGET_AVX512VBMI, TARGET_AVX512VBMI_P, TARGET_AVX512IFMA, TARGET_AVX512IFMA_P, TARGET_PCOMMIT, TARGET_PCOMMIT_P,
[PATCH][x86] Add clwb,pcommit,avx512avbmi,avx512ifma.
Hi, New revision of Intel ISA reference [1] has new instructions: Clwb, pcommit and new flavors of AVX512. Patch bellow adds them. I understand that stage 1 is closed, however those changes shouldn't affect anything outside if i386 backend. And are extremely unlikely to break existing functionality, and I personally think it's desirable for newest GCC to support newest spec. Bootstrapped/regtestsed on x86_64-unknown-linux-gnu. Ok for trunk? [1]:https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf gcc/ 2014-11-19 Ilya Tocar ilya.to...@intel.com * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512IFMA_SET, OPTION_MASK_ISA_AVX512VBMI_SET, OPTION_MASK_ISA_AVX512IFMA_UNSET, OPTION_MASK_ISA_AVX512VBMI_UNSET, OPTION_MASK_ISA_PCOMMIT_UNSET, OPTION_MASK_ISA_CLWB_UNSET, OPTION_MASK_ISA_CLWB_SET, OPTION_MASK_ISA_PCOMMIT_SET): New. (ix86_handle_option): Handle OPT_mavx512ifma, OPT_mavx512vbmi, OPT_mpcommit, OPT_mclwb. * config.gcc: Add avx512ifmaintrin.h, avx512ifmavlintrin.h, avx512vbmiintrin.h, avx512vbmivlintrin.h clwbintrin.h pcommitintrin.h * config/i386/avx512ifmaintrin.h: New file. * config/i386/avx512ifmaivlntrin.h: Ditto. * config/i386/avx512vbmiintrin.h: Ditto. * config/i386/avx512vbmivlintrin.h: Ditto. * config/i386/clwbintrin.h: Ditto. * config/i386/pcommitintrin.h: Ditto. * config/i386/cpuid.h (bit_AVX512IFMA, bit_PCOMMIT, bit_CLWB, bit_AVX512VBMI): New. * config/i386/driver-i386.c (host_detect_local_cpu): Detect pcommit, clwb, avx512ifma, avx512vbmi. * config/i386/i386-c.c (ix86_target_macros_internal): Define __AVX512VBMI__, __AVX512IFMA__, __PCOMMIT__, __CLWB__. * config/i386/i386.c (ix86_target_string): Add -mavx512ifma, -mavx512vbmi, -mclwb, -mpcommit. (PTA_AVX512VBMI, PTA_AVX512IFMA, PTA_CLWB, PTA_PCOMMIT): Define. (ix86_option_override_internal): Handle new options. (ix86_valid_target_attribute_inner_p): Add avx512vbmi, avx512ifma, clwb, pcommit. (ix86_builtins): Add IX86_BUILTIN_VPMADD52LUQ512, IX86_BUILTIN_VPMADD52HUQ512, IX86_BUILTIN_VPMADD52LUQ256, IX86_BUILTIN_VPMADD52HUQ256, IX86_BUILTIN_VPMADD52LUQ128, IX86_BUILTIN_VPMADD52HUQ128, IX86_BUILTIN_VPMADD52LUQ512_MASKZ, IX86_BUILTIN_VPMADD52HUQ512_MASKZ, IX86_BUILTIN_VPMADD52LUQ256_MASKZ, IX86_BUILTIN_VPMADD52HUQ256_MASKZ, IX86_BUILTIN_VPMADD52LUQ128_MASKZ, IX86_BUILTIN_VPMADD52HUQ128_MASKZ, IX86_BUILTIN_VPMULTISHIFTQB512, IX86_BUILTIN_VPMULTISHIFTQB256, IX86_BUILTIN_VPMULTISHIFTQB128, IX86_BUILTIN_VPERMVARQI512_MASK, IX86_BUILTIN_VPERMT2VARQI512, IX86_BUILTIN_VPERMT2VARQI512_MASKZ, IX86_BUILTIN_VPERMI2VARQI512, IX86_BUILTIN_VPERMVARQI256_MASK, IX86_BUILTIN_VPERMVARQI128_MASK, IX86_BUILTIN_VPERMT2VARQI256, IX86_BUILTIN_VPERMT2VARQI256_MASKZ, IX86_BUILTIN_VPERMT2VARQI128, IX86_BUILTIN_VPERMI2VARQI256, IX86_BUILTIN_VPERMI2VARQI128, IX86_BUILTIN_CLWB, IX86_BUILTIN_PCOMMIT. (bdesc_special_args): Add __builtin_ia32_pcommit, __builtin_ia32_vpmadd52luq512_mask, __builtin_ia32_vpmadd52luq512_maskz, __builtin_ia32_vpmadd52huq512_mask, __builtin_ia32_vpmadd52huq512_maskx, __builtin_ia32_vpmadd52luq256_mask, __builtin_ia32_vpmadd52luq256_maskz, __builtin_ia32_vpmadd52huq256_mask, __builtin_ia32_vpmadd52huq256_maskz, __builtin_ia32_vpmadd52luq128_mask, __builtin_ia32_vpmadd52luq128_maskz, __builtin_ia32_vpmadd52huq128_mask, __builtin_ia32_vpmadd52huq128_maskz, __builtin_ia32_vpmultishiftqb512_mask, __builtin_ia32_vpmultishiftqb256_mask, __builtin_ia32_vpmultishiftqb128_mask, __builtin_ia32_permvarqi512_mask, __builtin_ia32_vpermt2varqi512_mask, __builtin_ia32_vpermt2varqi512_maskz, __builtin_ia32_vpermi2varqi512_mask, __builtin_ia32_permvarqi256_mask, __builtin_ia32_permvarqi128_mask, __builtin_ia32_vpermt2varqi256_mask, __builtin_ia32_vpermt2varqi256_maskz, __builtin_ia32_vpermt2varqi128_mask, __builtin_ia32_vpermt2varqi128_maskz, __builtin_ia32_vpermi2varqi256_mask, __builtin_ia32_vpermi2varqi128_mask. (ix86_init_mmx_sse_builtins): Add __builtin_ia32_clwb. (ix86_expand_builtin): Handle IX86_BUILTIN_CLWB. (ix86_hard_regno_mode_ok): Allow big masks for AVX612VBMI. * config/i386/i386.h (TARGET_AVX512VBMI, TARGET_AVX512VBMI_P, TARGET_AVX512IFMA, TARGET_AVX512IFMA_P, TARGET_PCOMMIT, TARGET_PCOMMIT_P, TARGET_CLWB, TARGET_CLWB_P): Define. * config/i386/i386.md (unspecv): Add UNSPECV_CLWB, UNSPECV_PCOMMIT. (pcommit): New instruction. (clwb): Ditto. * config/i386/i386.opt: Add mavx512ifma, mavx512vbmi, mclwb, mpcommit. *