Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR target/83488)

Message ID 20171222184011.GO2353@tucnak
State New
Headers show
Series
  • Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR target/83488)
Related show

Commit Message

Jakub Jelinek Dec. 22, 2017, 6:40 p.m.
On Fri, Dec 22, 2017 at 03:38:03PM +0300, Kirill Yukhin wrote:
> Hello, Julia,

> On 12 Nov 12:51, Koval, Julia wrote:

> > Hi, this patch enables AVX512BITALG and AVX512VPOPCNTDQ instructions from https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf. Ok for trunk?

> OK for trunk. I've checked it in.


Unfortunately, there are various issues in this patch as well as earlier
vbmi2 support.

1) as for various AVX512BITALG and AVX512VPOPCNTDQ builtins we need not just
that ISA, but also AVX512VL or AVX512BW or both, these two ISAs need to be
moved over from ix86_isa_flags2 to ix86_isa_flags.
2) while the PDF doesn't say that explicitly, for builtins that map to
hw insns that don't have AVX512BW listed as CPUID, if they use (or set)
32-bit or 64-bit %k? mask register, we need AVX512BW for the builtin,
because otherwise we get ICEs when LRA is trying to load (or store) the
32-bit or 64-bit %k? mask register.  Most of the intrin*.h headers got the
requirements right (but see below), but not i386-builtins.def, so using
intrin headers was fine, but using builtins directly resulted in numerous
ICEs.
3) some builtins where the define_insns were requiring AVX512VL didn't have
that requirement on the builtins, so again, numerous ICEs when using the
builtins directly.
4) for some builtins the intrin headers were uselessly requiring avx512bw
even when it wasn't needed at all (either when they don't have any mask
argument or when they have an 8-bit or 16-bit only mask).
5) the def_builtin/ix86_expand_builtin stuff didn't handle
OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512BW or
OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW
right (while the VL is handled there as "require the other ISAs and VL",
for BW we don't do that).  There were some hacks for GFNI and VPCLMULQDQ,
but incomplete and I think it is far better to treat BW and F like VL
instead of those 2.  Plus we can improve stuff in def_builtin by only doing
this special handling if the whole mask isn't a single bit mask, then there
is no reason for just not requiring the isa.
6) in i386-common.c I've noticed a major problem, for the new avx512
extensions that live in flags2 rather than flags (after this patch it is
just avx5124fmaps and avx512vnniw), doing say -mavx5124fmaps -mno-avx512f
would properly disable -mavx5124fmaps, but doing -mavx5124fmaps -mno-avx2
or -mavx5124fmaps -mno-sse etc. would not, again leading to numerous ICEs.

Starting bootstrap/regtest on x86_64-linux and i686-linux right now, ok for
trunk if it passes?

Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented
incorrectly, can somebody from Intel handle that?  The inlines in the
intrinsic header look correct, but the builtins aren't and what's even worse
is that the define_insns are wrong too.  According to the documentation
and inline fn, the intrinsics have an __mmask{16,32,64} input mask and
also __mmask{16,32,64} output mask.  The builtins use
UHI_FTYPE_V2DI_V2DI_UHI
USI_FTYPE_V4DI_V4DI_USI
UQI_FTYPE_V8DI_V8DI_UQI
types (first two are correct, the last one is wrong, should have been
UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:
        (set (match_operand:QI 0 ("register_operand") ("=Yk"))
            (and:QI (unspec:QI [
                        (match_operand:V2DI 1 ("register_operand") ("v"))
                        (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))
                    ] 214)
                (match_operand:QI 3 ("register_operand") ("Yk"))))
(incorrect, should use :HI result and :HI mask input),
        (set (match_operand:QI 0 ("register_operand") ("=Yk"))
            (and:QI (unspec:QI [
                        (match_operand:V4DI 1 ("register_operand") ("v"))
                        (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))
                    ] 214)
                (match_operand:QI 3 ("register_operand") ("Yk"))))
(incorrect, should use :SI result and :SI mask input),
        (set (match_operand:QI 0 ("register_operand") ("=Yk"))
            (and:QI (unspec:QI [
                        (match_operand:V8DI 1 ("register_operand") ("v"))
                        (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))
                    ] 214)
                (match_operand:QI 3 ("register_operand") ("Yk"))))
(incorrect, should use :DI result and :DI mask input).  Similarly the
non-masked patterns, where just the result is incorrect, not the operand 3
which doesn't exist).  I'll file a PR to track this.

2017-12-22  Jakub Jelinek  <jakub@redhat.com>

	PR target/83488
	* config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from
	ix86_isa_flags2 to ix86_isa_flags.
	* config/i386/i386-c.c (ix86_target_macros_internal): Test
	OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in
	isa_flags rather than isa_flags2.
	* config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq
	and -mavx512bitalg from isa2_opts to isa_opts.
	(ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ
	in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit
	and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.
	Formatting fixes.
	(def_builtin): Treat OPTION_MASK_ISA_AVX512BW or
	OPTION_MASK_ISA_AVX512F ored with another option similarly to
	OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL don't
	clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.
	(ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and
	OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle
	OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way.
	* config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG
	builtins from bdesc_args2 to bdesc_args section.
	(__builtin_ia32_compressstoreuqi512_mask,
	__builtin_ia32_compressstoreuhi512_mask,
	__builtin_ia32_compressstoreuqi256_mask,
	__builtin_ia32_expandloadqi512_mask,
	__builtin_ia32_expandloadqi512_maskz,
	__builtin_ia32_expandloadhi512_mask,
	__builtin_ia32_expandloadhi512_maskz,
	__builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask,
	__builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask,
	__builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,
	__builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,
	__builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,
	__builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask,
	__builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask,
	__builtin_ia32_vpshldv_v32hi_maskz,
	__builtin_ia32_vpopcountb_v64qi_mask,
	__builtin_ia32_vpopcountw_v32hi_mask,
	__builtin_ia32_vpshufbitqmb512_mask,
	__builtin_ia32_vpshufbitqmb256_mask): Add
	" | OPTION_MASK_ISA_AVX512BW".
	(__builtin_ia32_expandloadqi256_mask,
	__builtin_ia32_expandloadqi256_maskz,
	__builtin_ia32_vpopcountb_v32qi_mask): Add
	" | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".
	(__builtin_ia32_expandloadhi256_mask,
	__builtin_ia32_expandloadhi256_maskz,
	__builtin_ia32_expandloadqi128_mask,
	__builtin_ia32_expandloadqi128_maskz,
	__builtin_ia32_expandloadhi128_mask,
	__builtin_ia32_expandloadhi128_maskz,
	__builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,
	__builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,
	__builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,
	__builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,
	__builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,
	__builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,
	__builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,
	__builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,
	__builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,
	__builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,
	__builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,
	__builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,
	__builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,
	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,
	__builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz,
	__builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,
	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,
	__builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,
	__builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,
	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,
	__builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz,
	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
	__builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,
	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,
	__builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,
	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
	__builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,
	__builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,
	__builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi,
	__builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
	__builtin_ia32_vpopcountw_v8hi_mask): Add
	" | OPTION_MASK_ISA_AVX512VL".
	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
	_mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
	_mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64,
	_mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64,
	_mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32,
	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16,
	_mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32,
	_mm512_shldv_epi64, _mm512_mask_shldv_epi64,
	_mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics.
	* config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,
	_mm_mask_bitshuffle_epi64_mask): Likewise.
	* common/config/i386/i386-common.c
	(OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
	OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET.
	(OPTION_MASK_ISA_AVX512F_UNSET): Or in
	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and
	OPTION_MASK_ISA_AVX512BITALG_UNSET.
	(OPTION_MASK_ISA2_AVX512F_UNSET,
	OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.
	(ix86_handle_option): For -mno-general-regs-only, clear from
	ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than
	just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and
	-mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from
	ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking
	individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust
	for moving from ix86_isa_flags2 to ix86_isa_flags.



	Jakub

Comments

Jakub Jelinek Dec. 22, 2017, 9:20 p.m. | #1
On Fri, Dec 22, 2017 at 07:40:11PM +0100, Jakub Jelinek wrote:
> Starting bootstrap/regtest on x86_64-linux and i686-linux right now, ok for

> trunk if it passes?


Bootstrapped/regtested successfully on both.

	Jakub
Koval, Julia Dec. 25, 2017, noon | #2
Thank you very much for fixing those issues.

Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented
> incorrectly, can somebody from Intel handle that?  The inlines in the

> intrinsic header look correct, but the builtins aren't and what's even worse

> is that the define_insns are wrong too.  According to the documentation

> and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> also __mmask{16,32,64} output mask.  The builtins use

> UHI_FTYPE_V2DI_V2DI_UHI

> USI_FTYPE_V4DI_V4DI_USI

> UQI_FTYPE_V8DI_V8DI_UQI

> types (first two are correct, the last one is wrong, should have been

> UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V2DI 1 ("register_operand") ("v"))

>                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :HI result and :HI mask input),

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V4DI 1 ("register_operand") ("v"))

>                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :SI result and :SI mask input),

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V8DI 1 ("register_operand") ("v"))

>                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :DI result and :DI mask input).  Similarly the

> non-masked patterns, where just the result is incorrect, not the operand 3

> which doesn't exist).  I'll file a PR to track this.


I'll fix that.

Thanks,
Julia

> -----Original Message-----

> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-

> owner@gcc.gnu.org] On Behalf Of Jakub Jelinek

> Sent: Friday, December 22, 2017 7:40 PM

> To: Kirill Yukhin <kirill.yukhin@gmail.com>; Uros Bizjak <ubizjak@gmail.com>

> Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-

> patches@gcc.gnu.org>

> Subject: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR

> target/83488)

> 

> On Fri, Dec 22, 2017 at 03:38:03PM +0300, Kirill Yukhin wrote:

> > Hello, Julia,

> > On 12 Nov 12:51, Koval, Julia wrote:

> > > Hi, this patch enables AVX512BITALG and AVX512VPOPCNTDQ instructions

> from

> https://software.intel.com/sites/default/files/managed/c5/15/architecture-

> instruction-set-extensions-programming-reference.pdf. Ok for trunk?

> > OK for trunk. I've checked it in.

> 

> Unfortunately, there are various issues in this patch as well as earlier

> vbmi2 support.

> 

> 1) as for various AVX512BITALG and AVX512VPOPCNTDQ builtins we need not

> just

> that ISA, but also AVX512VL or AVX512BW or both, these two ISAs need to be

> moved over from ix86_isa_flags2 to ix86_isa_flags.

> 2) while the PDF doesn't say that explicitly, for builtins that map to

> hw insns that don't have AVX512BW listed as CPUID, if they use (or set)

> 32-bit or 64-bit %k? mask register, we need AVX512BW for the builtin,

> because otherwise we get ICEs when LRA is trying to load (or store) the

> 32-bit or 64-bit %k? mask register.  Most of the intrin*.h headers got the

> requirements right (but see below), but not i386-builtins.def, so using

> intrin headers was fine, but using builtins directly resulted in numerous

> ICEs.

> 3) some builtins where the define_insns were requiring AVX512VL didn't have

> that requirement on the builtins, so again, numerous ICEs when using the

> builtins directly.

> 4) for some builtins the intrin headers were uselessly requiring avx512bw

> even when it wasn't needed at all (either when they don't have any mask

> argument or when they have an 8-bit or 16-bit only mask).

> 5) the def_builtin/ix86_expand_builtin stuff didn't handle

> OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512BW or

> OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW

> right (while the VL is handled there as "require the other ISAs and VL",

> for BW we don't do that).  There were some hacks for GFNI and VPCLMULQDQ,

> but incomplete and I think it is far better to treat BW and F like VL

> instead of those 2.  Plus we can improve stuff in def_builtin by only doing

> this special handling if the whole mask isn't a single bit mask, then there

> is no reason for just not requiring the isa.

> 6) in i386-common.c I've noticed a major problem, for the new avx512

> extensions that live in flags2 rather than flags (after this patch it is

> just avx5124fmaps and avx512vnniw), doing say -mavx5124fmaps -mno-avx512f

> would properly disable -mavx5124fmaps, but doing -mavx5124fmaps -mno-avx2

> or -mavx5124fmaps -mno-sse etc. would not, again leading to numerous ICEs.

> 

> Starting bootstrap/regtest on x86_64-linux and i686-linux right now, ok for

> trunk if it passes?

> 

> Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented

> incorrectly, can somebody from Intel handle that?  The inlines in the

> intrinsic header look correct, but the builtins aren't and what's even worse

> is that the define_insns are wrong too.  According to the documentation

> and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> also __mmask{16,32,64} output mask.  The builtins use

> UHI_FTYPE_V2DI_V2DI_UHI

> USI_FTYPE_V4DI_V4DI_USI

> UQI_FTYPE_V8DI_V8DI_UQI

> types (first two are correct, the last one is wrong, should have been

> UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V2DI 1 ("register_operand") ("v"))

>                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :HI result and :HI mask input),

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V4DI 1 ("register_operand") ("v"))

>                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :SI result and :SI mask input),

>         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

>             (and:QI (unspec:QI [

>                         (match_operand:V8DI 1 ("register_operand") ("v"))

>                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

>                     ] 214)

>                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> (incorrect, should use :DI result and :DI mask input).  Similarly the

> non-masked patterns, where just the result is incorrect, not the operand 3

> which doesn't exist).  I'll file a PR to track this.

> 

> 2017-12-22  Jakub Jelinek  <jakub@redhat.com>

> 

> 	PR target/83488

> 	* config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move

> from

> 	ix86_isa_flags2 to ix86_isa_flags.

> 	* config/i386/i386-c.c (ix86_target_macros_internal): Test

> 	OPTION_MASK_ISA_AVX512BITALG and

> OPTION_MASK_ISA_AVX512VPOPCNTDQ in

> 	isa_flags rather than isa_flags2.

> 	* config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq

> 	and -mavx512bitalg from isa2_opts to isa_opts.

> 	(ix86_option_override_internal): Test

> OPTION_MASK_ISA_AVX512VPOPCNTDQ

> 	in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit

> 	and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.

> 	Formatting fixes.

> 	(def_builtin): Treat OPTION_MASK_ISA_AVX512BW or

> 	OPTION_MASK_ISA_AVX512F ored with another option similarly to

> 	OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL

> don't

> 	clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.

> 	(ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and

> 	OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle

> 	OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that

> way.

> 	* config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and

> AVX512BITALG

> 	builtins from bdesc_args2 to bdesc_args section.

> 	(__builtin_ia32_compressstoreuqi512_mask,

> 	__builtin_ia32_compressstoreuhi512_mask,

> 	__builtin_ia32_compressstoreuqi256_mask,

> 	__builtin_ia32_expandloadqi512_mask,

> 	__builtin_ia32_expandloadqi512_maskz,

> 	__builtin_ia32_expandloadhi512_mask,

> 	__builtin_ia32_expandloadhi512_maskz,

> 	__builtin_ia32_compressqi512_mask,

> __builtin_ia32_compresshi512_mask,

> 	__builtin_ia32_compressqi256_mask,

> __builtin_ia32_expandqi512_mask,

> 	__builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,

> 	__builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,

> 	__builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,

> 	__builtin_ia32_vpshld_v32hi_mask,

> __builtin_ia32_vpshrdv_v32hi_mask,

> 	__builtin_ia32_vpshrdv_v32hi_maskz,

> __builtin_ia32_vpshldv_v32hi_mask,

> 	__builtin_ia32_vpshldv_v32hi_maskz,

> 	__builtin_ia32_vpopcountb_v64qi_mask,

> 	__builtin_ia32_vpopcountw_v32hi_mask,

> 	__builtin_ia32_vpshufbitqmb512_mask,

> 	__builtin_ia32_vpshufbitqmb256_mask): Add

> 	" | OPTION_MASK_ISA_AVX512BW".

> 	(__builtin_ia32_expandloadqi256_mask,

> 	__builtin_ia32_expandloadqi256_maskz,

> 	__builtin_ia32_vpopcountb_v32qi_mask): Add

> 	" | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".

> 	(__builtin_ia32_expandloadhi256_mask,

> 	__builtin_ia32_expandloadhi256_maskz,

> 	__builtin_ia32_expandloadqi128_mask,

> 	__builtin_ia32_expandloadqi128_maskz,

> 	__builtin_ia32_expandloadhi128_mask,

> 	__builtin_ia32_expandloadhi128_maskz,

> 	__builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,

> 	__builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,

> 	__builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,

> 	__builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,

> 	__builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,

> 	__builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,

> 	__builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,

> 	__builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,

> 	__builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,

> 	__builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,

> 	__builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,

> 	__builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,

> 	__builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,

> 	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,

> 	__builtin_ia32_vpshrdv_v8hi_mask,

> __builtin_ia32_vpshrdv_v8hi_maskz,

> 	__builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,

> 	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,

> 	__builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,

> 	__builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,

> 	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,

> 	__builtin_ia32_vpshrdv_v2di_mask,

> __builtin_ia32_vpshrdv_v2di_maskz,

> 	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,

> 	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,

> 	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,

> 	__builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,

> 	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,

> 	__builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,

> 	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,

> 	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,

> 	__builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,

> 	__builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,

> 	__builtin_ia32_vpopcountb_v16qi_mask,

> __builtin_ia32_vpopcountw_v16hi,

> 	__builtin_ia32_vpopcountw_v16hi_mask,

> __builtin_ia32_vpopcountw_v8hi,

> 	__builtin_ia32_vpopcountw_v8hi_mask): Add

> 	" | OPTION_MASK_ISA_AVX512VL".

> 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,

> 	_mm512_shrdi_epi32, _mm512_mask_shrdi_epi32,

> _mm512_maskz_shrdi_epi32,

> 	_mm512_shrdi_epi64, _mm512_mask_shrdi_epi64,

> _mm512_maskz_shrdi_epi64,

> 	_mm512_shldi_epi16, _mm512_shldi_epi32,

> _mm512_mask_shldi_epi32,

> 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,

> _mm512_mask_shldi_epi64,

> 	_mm512_maskz_shldi_epi64, _mm512_shrdv_epi16,

> _mm512_shrdv_epi32,

> 	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32,

> _mm512_shrdv_epi64,

> 	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64,

> _mm512_shldv_epi16,

> 	_mm512_shldv_epi32, _mm512_mask_shldv_epi32,

> _mm512_maskz_shldv_epi32,

> 	_mm512_shldv_epi64, _mm512_mask_shldv_epi64,

> 	_mm512_maskz_shldv_epi64): Don't require avx512bw for these

> intrinsics.

> 	* config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,

> 	_mm_mask_bitshuffle_epi64_mask): Likewise.

> 	* common/config/i386/i386-common.c

> 	(OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,

> 	OPTION_MASK_ISA_AVX512BITALG_SET): Or in

> OPTION_MASK_ISA_AVX512F_SET.

> 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in

> 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and

> 	OPTION_MASK_ISA_AVX512BITALG_UNSET.

> 	(OPTION_MASK_ISA2_AVX512F_UNSET,

> 	OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.

> 	(ix86_handle_option): For -mno-general-regs-only, clear from

> 	ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET

> rather than

> 	just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2}

> and

> 	-mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from

> 	ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking

> 	individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust

> 	for moving from ix86_isa_flags2 to ix86_isa_flags.

> 

> --- gcc/config/i386/i386.opt.jj	2017-12-22 14:00:04.000000000 +0100

> +++ gcc/config/i386/i386.opt	2017-12-22 14:18:30.113511523 +0100

> @@ -734,7 +734,7 @@ Target Report Mask(ISA_AVX5124VNNIW) Var

>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and

> AVX5124VNNIW built-in functions and code generation.

> 

>  mavx512vpopcntdq

> -Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags2) Save

> +Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save

>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and

> AVX512VPOPCNTDQ built-in functions and code generation.

> 

>  mavx512vbmi2

> @@ -746,7 +746,7 @@ Target Report Mask(ISA_AVX512VNNI) Var(i

>  Support AVX512VNNI built-in functions and code generation.

> 

>  mavx512bitalg

> -Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags2) Save

> +Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save

>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and

> AVX512BITALG built-in functions and code generation.

> 

>  mfma

> --- gcc/config/i386/i386-c.c.jj	2017-12-22 14:00:04.000000000 +0100

> +++ gcc/config/i386/i386-c.c	2017-12-22 14:22:54.154146866 +0100

> @@ -402,9 +402,9 @@ ix86_target_macros_internal (HOST_WIDE_I

>      def_or_undef (parse_in, "__SGX__");

>    if (isa_flag2 & OPTION_MASK_ISA_AVX5124FMAPS)

>      def_or_undef (parse_in, "__AVX5124FMAPS__");

> -  if (isa_flag2 & OPTION_MASK_ISA_AVX512BITALG)

> +  if (isa_flag & OPTION_MASK_ISA_AVX512BITALG)

>      def_or_undef (parse_in, "__AVX512BITALG__");

> -  if (isa_flag2 & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

> +  if (isa_flag & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

>      def_or_undef (parse_in, "__AVX512VPOPCNTDQ__");

>    if (isa_flag & OPTION_MASK_ISA_FMA)

>      def_or_undef (parse_in, "__FMA__");

> --- gcc/config/i386/i386.c.jj	2017-12-22 14:00:04.000000000 +0100

> +++ gcc/config/i386/i386.c	2017-12-22 15:52:29.345353491 +0100

> @@ -2758,16 +2758,16 @@ ix86_target_string (HOST_WIDE_INT isa, H

>      { "-msgx",		OPTION_MASK_ISA_SGX },

>      { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },

>      { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },

> -    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

>      { "-mibt",		OPTION_MASK_ISA_IBT },

>      { "-mhle",		OPTION_MASK_ISA_HLE },

>      { "-mmovbe",	OPTION_MASK_ISA_MOVBE },

>      { "-mclzero",	OPTION_MASK_ISA_CLZERO },

> -    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX },

> -    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG }

> +    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX }

>    };

>    static struct ix86_target_opts isa_opts[] =

>    {

> +    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

> +    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG },

>      { "-mvpclmulqdq",	OPTION_MASK_ISA_VPCLMULQDQ },

>      { "-mgfni",		OPTION_MASK_ISA_GFNI },

>      { "-mavx512vnni",	OPTION_MASK_ISA_AVX512VNNI },

> @@ -4104,14 +4104,17 @@ ix86_option_override_internal (bool main

>  	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA;

> 

>  	if (processor_alias_table[i].flags & PTA_AVX5124VNNIW

> -	    && !(opts->x_ix86_isa_flags2_explicit &

> OPTION_MASK_ISA_AVX5124VNNIW))

> +	    && !(opts->x_ix86_isa_flags2_explicit

> +		 & OPTION_MASK_ISA_AVX5124VNNIW))

>  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124VNNIW;

>  	if (processor_alias_table[i].flags & PTA_AVX5124FMAPS

> -	    && !(opts->x_ix86_isa_flags2_explicit &

> OPTION_MASK_ISA_AVX5124FMAPS))

> +	    && !(opts->x_ix86_isa_flags2_explicit

> +		 & OPTION_MASK_ISA_AVX5124FMAPS))

>  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124FMAPS;

>  	if (processor_alias_table[i].flags & PTA_AVX512VPOPCNTDQ

> -	    && !(opts->x_ix86_isa_flags2_explicit &

> OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

> +	    && !(opts->x_ix86_isa_flags_explicit

> +		 & OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

>  	if (processor_alias_table[i].flags & PTA_SGX

>  	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_SGX))

>  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_SGX;

> @@ -29795,13 +29798,21 @@ def_builtin (HOST_WIDE_INT mask, const c

>      {

>        ix86_builtins_isa[(int) code].isa = mask;

> 

> -      /* OPTION_MASK_ISA_AVX512VL has special meaning. Despite of generic

> case,

> -	 where any bit set means that built-in is enable, this bit must be *and-

> ed*

> -	 with another one. E.g.: OPTION_MASK_ISA_AVX512DQ |

> OPTION_MASK_ISA_AVX512VL

> -	 means that *both* cpuid bits must be set for the built-in to be available.

> -	 Handle this here.  */

> -      if (mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> +      /* OPTION_MASK_ISA_AVX512{F,VL,BW} have special meaning. Despite of

> +	 generic case, where any bit set means that built-in is enable, this

> +	 bit must be *and-ed* with another one. E.g.:

> +	 OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL

> +	 means that *both* cpuid bits must be set for the built-in to

> +	 be available. Handle this here.  */

> +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> +	  && mask != OPTION_MASK_ISA_AVX512VL)

>  	mask &= ~OPTION_MASK_ISA_AVX512VL;

> +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512BW)

> +	  && mask != OPTION_MASK_ISA_AVX512BW)

> +	mask &= ~OPTION_MASK_ISA_AVX512BW;

> +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512F)

> +	  && mask != OPTION_MASK_ISA_AVX512F)

> +	mask &= ~OPTION_MASK_ISA_AVX512F;

> 

>        mask &= ~OPTION_MASK_ISA_64BIT;

>        if (mask == 0

> @@ -35364,25 +35375,28 @@ ix86_expand_builtin (tree exp, rtx targe

>       Originally the builtin was not created if it wasn't applicable to the

>       current ISA based on the command line switches.  With function specific

>       options, we need to check in the context of the function making the call

> -     whether it is supported.  Treat AVX512VL and MMX specially.  For other

> flags,

> -     if isa includes more than one ISA bit, treat those are requiring any

> -     of them.  For AVX512VL, require both AVX512VL and the non-AVX512VL

> -     ISAs.  Likewise for MMX, require both MMX and the non-MMX ISAs.

> +     whether it is supported.  Treat AVX512{VL,BW,F} and MMX specially.  For

> +     other flags, if isa includes more than one ISA bit, treat those are

> +     requiring any of them.  For AVX512VL, require both AVX512VL and the

> +     non-AVX512VL ISAs.  Likewise for MMX, require both MMX and the non-

> MMX

> +     ISAs.  Similarly for AVX512F and AVX512BW.

>       Similarly for 64BIT, but we shouldn't be building such builtins

>       at all, -m64 is a whole TU option.  */

>    if (((ix86_builtins_isa[fcode].isa

>  	& ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> -	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> -	    | OPTION_MASK_ISA_VPCLMULQDQ))

> +	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> +	    | OPTION_MASK_ISA_AVX512F))

>         && !(ix86_builtins_isa[fcode].isa

>  	    & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> -		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> -		| OPTION_MASK_ISA_VPCLMULQDQ)

> +		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> +		| OPTION_MASK_ISA_AVX512F)

>  	    & ix86_isa_flags))

>        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)

>  	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL))

> -      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_GFNI)

> -	  && !(ix86_isa_flags & OPTION_MASK_ISA_GFNI))

> +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512BW)

> +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512BW))

> +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512F)

> +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512F))

>        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_MMX)

>  	  && !(ix86_isa_flags & OPTION_MASK_ISA_MMX))

>        || (ix86_builtins_isa[fcode].isa2

> --- gcc/config/i386/i386-builtin.def.jj	2017-12-22 14:03:05.000000000 +0100

> +++ gcc/config/i386/i386-builtin.def	2017-12-22 18:00:12.579239678 +0100

> @@ -393,27 +393,27 @@ BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_rdp

>  BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_wrpkru,  "__builtin_ia32_wrpkru",

> IX86_BUILTIN_WRPKRU, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)

> 

>  /* VBMI2 */

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_compressstorev64qi_mask,

> "__builtin_ia32_compressstoreuqi512_mask",

> IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> VOID_FTYPE_PV64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_compressstorev32hi_mask,

> "__builtin_ia32_compressstoreuhi512_mask",

> IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> VOID_FTYPE_PV32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressstorev32qi_mask,

> "__builtin_ia32_compressstoreuqi256_mask",

> IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> VOID_FTYPE_PV32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_compressstorev64qi_mask,

> "__builtin_ia32_compressstoreuqi512_mask",

> IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> VOID_FTYPE_PV64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_compressstorev32hi_mask,

> "__builtin_ia32_compressstoreuhi512_mask",

> IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> VOID_FTYPE_PV32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev32qi_mask,

> "__builtin_ia32_compressstoreuqi256_mask",

> IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> VOID_FTYPE_PV32QI_V32QI_USI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressstorev16qi_mask,

> "__builtin_ia32_compressstoreuqi128_mask",

> IX86_BUILTIN_PCOMPRESSBSTORE128, UNKNOWN, (int)

> VOID_FTYPE_PV16QI_V16QI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressstorev16hi_mask,

> "__builtin_ia32_compressstoreuhi256_mask",

> IX86_BUILTIN_PCOMPRESSWSTORE256, UNKNOWN, (int)

> VOID_FTYPE_PV16HI_V16HI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressstorev8hi_mask,

> "__builtin_ia32_compressstoreuhi128_mask",

> IX86_BUILTIN_PCOMPRESSWSTORE128, UNKNOWN, (int)

> VOID_FTYPE_PV8HI_V8HI_UQI)

> 

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> "__builtin_ia32_expandloadqi512_mask", IX86_BUILTIN_PEXPANDBLOAD512,

> UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz,

> "__builtin_ia32_expandloadqi512_maskz", IX86_BUILTIN_PEXPANDBLOAD512Z,

> UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> "__builtin_ia32_expandloadhi512_mask", IX86_BUILTIN_PEXPANDWLOAD512,

> UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz,

> "__builtin_ia32_expandloadhi512_maskz",

> IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> V32HI_FTYPE_PCV32HI_V32HI_USI)

> -

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_mask,

> "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256,

> UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_maskz,

> "__builtin_ia32_expandloadqi256_maskz", IX86_BUILTIN_PEXPANDBLOAD256Z,

> UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_mask,

> "__builtin_ia32_expandloadhi256_mask", IX86_BUILTIN_PEXPANDWLOAD256,

> UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_maskz,

> "__builtin_ia32_expandloadhi256_maskz",

> IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> V16HI_FTYPE_PCV16HI_V16HI_UHI)

> -

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_mask,

> "__builtin_ia32_expandloadqi128_mask", IX86_BUILTIN_PEXPANDBLOAD128,

> UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_maskz,

> "__builtin_ia32_expandloadqi128_maskz", IX86_BUILTIN_PEXPANDBLOAD128Z,

> UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_mask,

> "__builtin_ia32_expandloadhi128_mask", IX86_BUILTIN_PEXPANDWLOAD128,

> UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_maskz,

> "__builtin_ia32_expandloadhi128_maskz",

> IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> V8HI_FTYPE_PCV8HI_V8HI_UQI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandloadqi512_mask",

> IX86_BUILTIN_PEXPANDBLOAD512, UNKNOWN, (int)

> V64QI_FTYPE_PCV64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandloadqi512_maskz",

> IX86_BUILTIN_PEXPANDBLOAD512Z, UNKNOWN, (int)

> V64QI_FTYPE_PCV64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandloadhi512_mask",

> IX86_BUILTIN_PEXPANDWLOAD512, UNKNOWN, (int)

> V32HI_FTYPE_PCV32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandloadhi512_maskz",

> IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> V32HI_FTYPE_PCV32HI_V32HI_USI)

> +

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256,

> UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> "__builtin_ia32_expandloadqi256_maskz", IX86_BUILTIN_PEXPANDBLOAD256Z,

> UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandloadhi256_mask",

> IX86_BUILTIN_PEXPANDWLOAD256, UNKNOWN, (int)

> V16HI_FTYPE_PCV16HI_V16HI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16hi_maskz, "__builtin_ia32_expandloadhi256_maskz",

> IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> V16HI_FTYPE_PCV16HI_V16HI_UHI)

> +

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandloadqi128_mask",

> IX86_BUILTIN_PEXPANDBLOAD128, UNKNOWN, (int)

> V16QI_FTYPE_PCV16QI_V16QI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandloadqi128_maskz",

> IX86_BUILTIN_PEXPANDBLOAD128Z, UNKNOWN, (int)

> V16QI_FTYPE_PCV16QI_V16QI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandloadhi128_mask",

> IX86_BUILTIN_PEXPANDWLOAD128, UNKNOWN, (int)

> V8HI_FTYPE_PCV8HI_V8HI_UQI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandloadhi128_maskz",

> IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> V8HI_FTYPE_PCV8HI_V8HI_UQI)

> 

>  BDESC_END (SPECIAL_ARGS, ARGS)

> 

> @@ -2418,18 +2418,18 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTI

>  BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_avx512vl_vpermi2varv16qi3_mask,

> "__builtin_ia32_vpermi2varqi128_mask", IX86_BUILTIN_VPERMI2VARQI128,

> UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)

> 

>  /* VBMI2 */

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressv64qi_mask,

> "__builtin_ia32_compressqi512_mask", IX86_BUILTIN_PCOMPRESSB512,

> UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressv32hi_mask,

> "__builtin_ia32_compresshi512_mask", IX86_BUILTIN_PCOMPRESSW512,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressv32qi_mask, "__builtin_ia32_compressqi256_mask",

> IX86_BUILTIN_PCOMPRESSB256, UNKNOWN, (int)

> V32QI_FTYPE_V32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_compressv64qi_mask, "__builtin_ia32_compressqi512_mask",

> IX86_BUILTIN_PCOMPRESSB512, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_compressv32hi_mask, "__builtin_ia32_compresshi512_mask",

> IX86_BUILTIN_PCOMPRESSW512, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv32qi_mask,

> "__builtin_ia32_compressqi256_mask", IX86_BUILTIN_PCOMPRESSB256,

> UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressv16qi_mask, "__builtin_ia32_compressqi128_mask",

> IX86_BUILTIN_PCOMPRESSB128, UNKNOWN, (int)

> V16QI_FTYPE_V16QI_V16QI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressv16hi_mask, "__builtin_ia32_compresshi256_mask",

> IX86_BUILTIN_PCOMPRESSW256, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_compressv8hi_mask, "__builtin_ia32_compresshi128_mask",

> IX86_BUILTIN_PCOMPRESSW128, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_UQI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> "__builtin_ia32_expandqi512_mask", IX86_BUILTIN_PEXPANDB512,

> UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz,

> "__builtin_ia32_expandqi512_maskz", IX86_BUILTIN_PEXPANDB512Z,

> UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> "__builtin_ia32_expandhi512_mask", IX86_BUILTIN_PEXPANDW512,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz,

> "__builtin_ia32_expandhi512_maskz", IX86_BUILTIN_PEXPANDW512Z,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandqi256_mask",

> IX86_BUILTIN_PEXPANDB256, UNKNOWN, (int)

> V32QI_FTYPE_V32QI_V32QI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandqi256_maskz",

> IX86_BUILTIN_PEXPANDB256Z, UNKNOWN, (int)

> V32QI_FTYPE_V32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandqi512_mask",

> IX86_BUILTIN_PEXPANDB512, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandqi512_maskz",

> IX86_BUILTIN_PEXPANDB512Z, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandhi512_mask",

> IX86_BUILTIN_PEXPANDW512, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandhi512_maskz",

> IX86_BUILTIN_PEXPANDW512Z, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> "__builtin_ia32_expandqi256_mask", IX86_BUILTIN_PEXPANDB256,

> UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> "__builtin_ia32_expandqi256_maskz", IX86_BUILTIN_PEXPANDB256Z,

> UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandqi128_mask",

> IX86_BUILTIN_PEXPANDB128, UNKNOWN, (int)

> V16QI_FTYPE_V16QI_V16QI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandqi128_maskz",

> IX86_BUILTIN_PEXPANDB128Z, UNKNOWN, (int)

> V16QI_FTYPE_V16QI_V16QI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandhi256_mask",

> IX86_BUILTIN_PEXPANDW256, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_UHI)

> @@ -2437,97 +2437,97 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPT

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandhi128_mask",

> IX86_BUILTIN_PEXPANDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandhi128_maskz",

> IX86_BUILTIN_PEXPANDW128Z, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi,

> "__builtin_ia32_vpshrd_v32hi", IX86_BUILTIN_VPSHRDV32HI, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi_mask,

> "__builtin_ia32_vpshrd_v32hi_mask", IX86_BUILTIN_VPSHRDV32HI_MASK,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi,

> "__builtin_ia32_vpshrd_v16hi", IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi_mask,

> "__builtin_ia32_vpshrd_v16hi_mask", IX86_BUILTIN_VPSHRDV16HI_MASK,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi,

> "__builtin_ia32_vpshrd_v8hi", IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi_mask,

> "__builtin_ia32_vpshrd_v8hi_mask", IX86_BUILTIN_VPSHRDV8HI_MASK,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshrd_v32hi_mask, "__builtin_ia32_vpshrd_v32hi_mask",

> IX86_BUILTIN_VPSHRDV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v16hi, "__builtin_ia32_vpshrd_v16hi",

> IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v16hi_mask, "__builtin_ia32_vpshrd_v16hi_mask",

> IX86_BUILTIN_VPSHRDV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v8hi, "__builtin_ia32_vpshrd_v8hi",

> IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v8hi_mask, "__builtin_ia32_vpshrd_v8hi_mask",

> IX86_BUILTIN_VPSHRDV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si,

> "__builtin_ia32_vpshrd_v16si", IX86_BUILTIN_VPSHRDV16SI, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si_mask,

> "__builtin_ia32_vpshrd_v16si_mask", IX86_BUILTIN_VPSHRDV16SI_MASK,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si,

> "__builtin_ia32_vpshrd_v8si", IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si_mask,

> "__builtin_ia32_vpshrd_v8si_mask", IX86_BUILTIN_VPSHRDV8SI_MASK,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si,

> "__builtin_ia32_vpshrd_v4si", IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si_mask,

> "__builtin_ia32_vpshrd_v4si_mask", IX86_BUILTIN_VPSHRDV4SI_MASK,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v8si, "__builtin_ia32_vpshrd_v8si",

> IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v8si_mask, "__builtin_ia32_vpshrd_v8si_mask",

> IX86_BUILTIN_VPSHRDV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v4si, "__builtin_ia32_vpshrd_v4si",

> IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v4si_mask, "__builtin_ia32_vpshrd_v4si_mask",

> IX86_BUILTIN_VPSHRDV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di,

> "__builtin_ia32_vpshrd_v8di", IX86_BUILTIN_VPSHRDV8DI, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di_mask,

> "__builtin_ia32_vpshrd_v8di_mask", IX86_BUILTIN_VPSHRDV8DI_MASK,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di,

> "__builtin_ia32_vpshrd_v4di", IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di_mask,

> "__builtin_ia32_vpshrd_v4di_mask", IX86_BUILTIN_VPSHRDV4DI_MASK,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di,

> "__builtin_ia32_vpshrd_v2di", IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di_mask,

> "__builtin_ia32_vpshrd_v2di_mask", IX86_BUILTIN_VPSHRDV2DI_MASK,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v4di, "__builtin_ia32_vpshrd_v4di",

> IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v4di_mask, "__builtin_ia32_vpshrd_v4di_mask",

> IX86_BUILTIN_VPSHRDV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v2di, "__builtin_ia32_vpshrd_v2di",

> IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrd_v2di_mask, "__builtin_ia32_vpshrd_v2di_mask",

> IX86_BUILTIN_VPSHRDV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi,

> "__builtin_ia32_vpshld_v32hi", IX86_BUILTIN_VPSHLDV32HI, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi_mask,

> "__builtin_ia32_vpshld_v32hi_mask", IX86_BUILTIN_VPSHLDV32HI_MASK,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi,

> "__builtin_ia32_vpshld_v16hi", IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi_mask,

> "__builtin_ia32_vpshld_v16hi_mask", IX86_BUILTIN_VPSHLDV16HI_MASK,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi,

> "__builtin_ia32_vpshld_v8hi", IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi_mask,

> "__builtin_ia32_vpshld_v8hi_mask", IX86_BUILTIN_VPSHLDV8HI_MASK,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshld_v32hi_mask, "__builtin_ia32_vpshld_v32hi_mask",

> IX86_BUILTIN_VPSHLDV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v16hi, "__builtin_ia32_vpshld_v16hi",

> IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v16hi_mask, "__builtin_ia32_vpshld_v16hi_mask",

> IX86_BUILTIN_VPSHLDV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v8hi, "__builtin_ia32_vpshld_v8hi",

> IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v8hi_mask, "__builtin_ia32_vpshld_v8hi_mask",

> IX86_BUILTIN_VPSHLDV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si,

> "__builtin_ia32_vpshld_v16si", IX86_BUILTIN_VPSHLDV16SI, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si_mask,

> "__builtin_ia32_vpshld_v16si_mask", IX86_BUILTIN_VPSHLDV16SI_MASK,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si,

> "__builtin_ia32_vpshld_v8si", IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si_mask,

> "__builtin_ia32_vpshld_v8si_mask", IX86_BUILTIN_VPSHLDV8SI_MASK,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si,

> "__builtin_ia32_vpshld_v4si", IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si_mask,

> "__builtin_ia32_vpshld_v4si_mask", IX86_BUILTIN_VPSHLDV4SI_MASK,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v8si, "__builtin_ia32_vpshld_v8si",

> IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v8si_mask, "__builtin_ia32_vpshld_v8si_mask",

> IX86_BUILTIN_VPSHLDV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v4si, "__builtin_ia32_vpshld_v4si",

> IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v4si_mask, "__builtin_ia32_vpshld_v4si_mask",

> IX86_BUILTIN_VPSHLDV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di,

> "__builtin_ia32_vpshld_v8di", IX86_BUILTIN_VPSHLDV8DI, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di_mask,

> "__builtin_ia32_vpshld_v8di_mask", IX86_BUILTIN_VPSHLDV8DI_MASK,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di,

> "__builtin_ia32_vpshld_v4di", IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di_mask,

> "__builtin_ia32_vpshld_v4di_mask", IX86_BUILTIN_VPSHLDV4DI_MASK,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di,

> "__builtin_ia32_vpshld_v2di", IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di_mask,

> "__builtin_ia32_vpshld_v2di_mask", IX86_BUILTIN_VPSHLDV2DI_MASK,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v4di, "__builtin_ia32_vpshld_v4di",

> IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v4di_mask, "__builtin_ia32_vpshld_v4di_mask",

> IX86_BUILTIN_VPSHLDV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v2di, "__builtin_ia32_vpshld_v2di",

> IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshld_v2di_mask, "__builtin_ia32_vpshld_v2di_mask",

> IX86_BUILTIN_VPSHLDV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> 

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi,

> "__builtin_ia32_vpshrdv_v32hi", IX86_BUILTIN_VPSHRDVV32HI, UNKNOWN,

> (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi_mask,

> "__builtin_ia32_vpshrdv_v32hi_mask", IX86_BUILTIN_VPSHRDVV32HI_MASK,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi_maskz,

> "__builtin_ia32_vpshrdv_v32hi_maskz", IX86_BUILTIN_VPSHRDVV32HI_MASKZ,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi,

> "__builtin_ia32_vpshrdv_v16hi", IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN,

> (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi_mask,

> "__builtin_ia32_vpshrdv_v16hi_mask", IX86_BUILTIN_VPSHRDVV16HI_MASK,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi_maskz,

> "__builtin_ia32_vpshrdv_v16hi_maskz", IX86_BUILTIN_VPSHRDVV16HI_MASKZ,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi,

> "__builtin_ia32_vpshrdv_v8hi", IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_mask,

> "__builtin_ia32_vpshrdv_v8hi_mask", IX86_BUILTIN_VPSHRDVV8HI_MASK,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_maskz,

> "__builtin_ia32_vpshrdv_v8hi_maskz", IX86_BUILTIN_VPSHRDVV8HI_MASKZ,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshrdv_v32hi_mask, "__builtin_ia32_vpshrdv_v32hi_mask",

> IX86_BUILTIN_VPSHRDVV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshrdv_v32hi_maskz, "__builtin_ia32_vpshrdv_v32hi_maskz",

> IX86_BUILTIN_VPSHRDVV32HI_MASKZ, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v16hi, "__builtin_ia32_vpshrdv_v16hi",

> IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v16hi_mask, "__builtin_ia32_vpshrdv_v16hi_mask",

> IX86_BUILTIN_VPSHRDVV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v16hi_maskz, "__builtin_ia32_vpshrdv_v16hi_maskz",

> IX86_BUILTIN_VPSHRDVV16HI_MASKZ, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8hi, "__builtin_ia32_vpshrdv_v8hi",

> IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8hi_mask, "__builtin_ia32_vpshrdv_v8hi_mask",

> IX86_BUILTIN_VPSHRDVV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8hi_maskz, "__builtin_ia32_vpshrdv_v8hi_maskz",

> IX86_BUILTIN_VPSHRDVV8HI_MASKZ, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si,

> "__builtin_ia32_vpshrdv_v16si", IX86_BUILTIN_VPSHRDVV16SI, UNKNOWN,

> (int) V16SI_FTYPE_V16SI_V16SI_V16SI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si_mask,

> "__builtin_ia32_vpshrdv_v16si_mask", IX86_BUILTIN_VPSHRDVV16SI_MASK,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si_maskz,

> "__builtin_ia32_vpshrdv_v16si_maskz", IX86_BUILTIN_VPSHRDVV16SI_MASKZ,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si,

> "__builtin_ia32_vpshrdv_v8si", IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_mask,

> "__builtin_ia32_vpshrdv_v8si_mask", IX86_BUILTIN_VPSHRDVV8SI_MASK,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_maskz,

> "__builtin_ia32_vpshrdv_v8si_maskz", IX86_BUILTIN_VPSHRDVV8SI_MASKZ,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si,

> "__builtin_ia32_vpshrdv_v4si", IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_mask,

> "__builtin_ia32_vpshrdv_v4si_mask", IX86_BUILTIN_VPSHRDVV4SI_MASK,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_maskz,

> "__builtin_ia32_vpshrdv_v4si_maskz", IX86_BUILTIN_VPSHRDVV4SI_MASKZ,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8si, "__builtin_ia32_vpshrdv_v8si",

> IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8si_mask, "__builtin_ia32_vpshrdv_v8si_mask",

> IX86_BUILTIN_VPSHRDVV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v8si_maskz, "__builtin_ia32_vpshrdv_v8si_maskz",

> IX86_BUILTIN_VPSHRDVV8SI_MASKZ, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4si, "__builtin_ia32_vpshrdv_v4si",

> IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4si_mask, "__builtin_ia32_vpshrdv_v4si_mask",

> IX86_BUILTIN_VPSHRDVV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4si_maskz, "__builtin_ia32_vpshrdv_v4si_maskz",

> IX86_BUILTIN_VPSHRDVV4SI_MASKZ, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di,

> "__builtin_ia32_vpshrdv_v8di", IX86_BUILTIN_VPSHRDVV8DI, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_V8DI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_mask,

> "__builtin_ia32_vpshrdv_v8di_mask", IX86_BUILTIN_VPSHRDVV8DI_MASK,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_maskz,

> "__builtin_ia32_vpshrdv_v8di_maskz", IX86_BUILTIN_VPSHRDVV8DI_MASKZ,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di,

> "__builtin_ia32_vpshrdv_v4di", IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_mask,

> "__builtin_ia32_vpshrdv_v4di_mask", IX86_BUILTIN_VPSHRDVV4DI_MASK,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_maskz,

> "__builtin_ia32_vpshrdv_v4di_maskz", IX86_BUILTIN_VPSHRDVV4DI_MASKZ,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di,

> "__builtin_ia32_vpshrdv_v2di", IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_mask,

> "__builtin_ia32_vpshrdv_v2di_mask", IX86_BUILTIN_VPSHRDVV2DI_MASK,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_maskz,

> "__builtin_ia32_vpshrdv_v2di_maskz", IX86_BUILTIN_VPSHRDVV2DI_MASKZ,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4di, "__builtin_ia32_vpshrdv_v4di",

> IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4di_mask, "__builtin_ia32_vpshrdv_v4di_mask",

> IX86_BUILTIN_VPSHRDVV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v4di_maskz, "__builtin_ia32_vpshrdv_v4di_maskz",

> IX86_BUILTIN_VPSHRDVV4DI_MASKZ, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v2di, "__builtin_ia32_vpshrdv_v2di",

> IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v2di_mask, "__builtin_ia32_vpshrdv_v2di_mask",

> IX86_BUILTIN_VPSHRDVV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshrdv_v2di_maskz, "__builtin_ia32_vpshrdv_v2di_maskz",

> IX86_BUILTIN_VPSHRDVV2DI_MASKZ, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> 

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi,

> "__builtin_ia32_vpshldv_v32hi", IX86_BUILTIN_VPSHLDVV32HI, UNKNOWN,

> (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi_mask,

> "__builtin_ia32_vpshldv_v32hi_mask", IX86_BUILTIN_VPSHLDVV32HI_MASK,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi_maskz,

> "__builtin_ia32_vpshldv_v32hi_maskz", IX86_BUILTIN_VPSHLDVV32HI_MASKZ,

> UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi,

> "__builtin_ia32_vpshldv_v16hi", IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN,

> (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi_mask,

> "__builtin_ia32_vpshldv_v16hi_mask", IX86_BUILTIN_VPSHLDVV16HI_MASK,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi_maskz,

> "__builtin_ia32_vpshldv_v16hi_maskz", IX86_BUILTIN_VPSHLDVV16HI_MASKZ,

> UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi,

> "__builtin_ia32_vpshldv_v8hi", IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_mask,

> "__builtin_ia32_vpshldv_v8hi_mask", IX86_BUILTIN_VPSHLDVV8HI_MASK,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_maskz,

> "__builtin_ia32_vpshldv_v8hi_maskz", IX86_BUILTIN_VPSHLDVV8HI_MASKZ,

> UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshldv_v32hi_mask, "__builtin_ia32_vpshldv_v32hi_mask",

> IX86_BUILTIN_VPSHLDVV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpshldv_v32hi_maskz, "__builtin_ia32_vpshldv_v32hi_maskz",

> IX86_BUILTIN_VPSHLDVV32HI_MASKZ, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v16hi, "__builtin_ia32_vpshldv_v16hi",

> IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v16hi_mask, "__builtin_ia32_vpshldv_v16hi_mask",

> IX86_BUILTIN_VPSHLDVV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v16hi_maskz, "__builtin_ia32_vpshldv_v16hi_maskz",

> IX86_BUILTIN_VPSHLDVV16HI_MASKZ, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8hi, "__builtin_ia32_vpshldv_v8hi",

> IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8hi_mask, "__builtin_ia32_vpshldv_v8hi_mask",

> IX86_BUILTIN_VPSHLDVV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8hi_maskz, "__builtin_ia32_vpshldv_v8hi_maskz",

> IX86_BUILTIN_VPSHLDVV8HI_MASKZ, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si,

> "__builtin_ia32_vpshldv_v16si", IX86_BUILTIN_VPSHLDVV16SI, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_V16SI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_mask,

> "__builtin_ia32_vpshldv_v16si_mask", IX86_BUILTIN_VPSHLDVV16SI_MASK,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_maskz,

> "__builtin_ia32_vpshldv_v16si_maskz", IX86_BUILTIN_VPSHLDVV16SI_MASKZ,

> UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si,

> "__builtin_ia32_vpshldv_v8si", IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_mask,

> "__builtin_ia32_vpshldv_v8si_mask", IX86_BUILTIN_VPSHLDVV8SI_MASK,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_maskz,

> "__builtin_ia32_vpshldv_v8si_maskz", IX86_BUILTIN_VPSHLDVV8SI_MASKZ,

> UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si,

> "__builtin_ia32_vpshldv_v4si", IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_mask,

> "__builtin_ia32_vpshldv_v4si_mask", IX86_BUILTIN_VPSHLDVV4SI_MASK,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_maskz,

> "__builtin_ia32_vpshldv_v4si_maskz", IX86_BUILTIN_VPSHLDVV4SI_MASKZ,

> UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8si, "__builtin_ia32_vpshldv_v8si",

> IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8si_mask, "__builtin_ia32_vpshldv_v8si_mask",

> IX86_BUILTIN_VPSHLDVV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v8si_maskz, "__builtin_ia32_vpshldv_v8si_maskz",

> IX86_BUILTIN_VPSHLDVV8SI_MASKZ, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4si, "__builtin_ia32_vpshldv_v4si",

> IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4si_mask, "__builtin_ia32_vpshldv_v4si_mask",

> IX86_BUILTIN_VPSHLDVV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4si_maskz, "__builtin_ia32_vpshldv_v4si_maskz",

> IX86_BUILTIN_VPSHLDVV4SI_MASKZ, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di,

> "__builtin_ia32_vpshldv_v8di", IX86_BUILTIN_VPSHLDVV8DI, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_V8DI)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_mask,

> "__builtin_ia32_vpshldv_v8di_mask", IX86_BUILTIN_VPSHLDVV8DI_MASK,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

>  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_maskz,

> "__builtin_ia32_vpshldv_v8di_maskz", IX86_BUILTIN_VPSHLDVV8DI_MASKZ,

> UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di,

> "__builtin_ia32_vpshldv_v4di", IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_mask,

> "__builtin_ia32_vpshldv_v4di_mask", IX86_BUILTIN_VPSHLDVV4DI_MASK,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_maskz,

> "__builtin_ia32_vpshldv_v4di_maskz", IX86_BUILTIN_VPSHLDVV4DI_MASKZ,

> UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di,

> "__builtin_ia32_vpshldv_v2di", IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_mask,

> "__builtin_ia32_vpshldv_v2di_mask", IX86_BUILTIN_VPSHLDVV2DI_MASK,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_maskz,

> "__builtin_ia32_vpshldv_v2di_maskz", IX86_BUILTIN_VPSHLDVV2DI_MASKZ,

> UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4di, "__builtin_ia32_vpshldv_v4di",

> IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4di_mask, "__builtin_ia32_vpshldv_v4di_mask",

> IX86_BUILTIN_VPSHLDVV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v4di_maskz, "__builtin_ia32_vpshldv_v4di_maskz",

> IX86_BUILTIN_VPSHLDVV4DI_MASKZ, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v2di, "__builtin_ia32_vpshldv_v2di",

> IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v2di_mask, "__builtin_ia32_vpshldv_v2di_mask",

> IX86_BUILTIN_VPSHLDVV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpshldv_v2di_maskz, "__builtin_ia32_vpshldv_v2di_maskz",

> IX86_BUILTIN_VPSHLDVV2DI_MASKZ, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> 

>  /* GFNI */

>  BDESC (OPTION_MASK_ISA_GFNI, CODE_FOR_vgf2p8affineinvqb_v64qi,

> "__builtin_ia32_vgf2p8affineinvqb_v64qi",

> IX86_BUILTIN_VGF2P8AFFINEINVQB512, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_INT)

> @@ -2596,6 +2596,40 @@ BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTI

>  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX,

> CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di",

> IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

>  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX512F,

> CODE_FOR_vpclmulqdq_v8di, "__builtin_ia32_vpclmulqdq_v8di",

> IX86_BUILTIN_VPCLMULQDQ8, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT)

> 

> +/* VPOPCNTDQ */

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si,

> "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> UNKNOWN, (int) V16SI_FTYPE_V16SI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask",

> IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di,

> "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> UNKNOWN, (int) V8DI_FTYPE_V8DI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_UQI)

> +

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> UNKNOWN, (int) V4DI_FTYPE_V4DI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> "__builtin_ia32_vpopcountq_v4di_mask",

> IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_UQI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> UNKNOWN, (int) V2DI_FTYPE_V2DI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> "__builtin_ia32_vpopcountq_v2di_mask",

> IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_UQI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> UNKNOWN, (int) V4SI_FTYPE_V4SI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> "__builtin_ia32_vpopcountd_v4si_mask",

> IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> UNKNOWN, (int) V8SI_FTYPE_V8SI)

> +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> "__builtin_ia32_vpopcountd_v8si_mask",

> IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_UHI)

> +

> +/* BITALG */

> +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> UNKNOWN, (int) V64QI_FTYPE_V64QI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpopcountv64qi_mask, "__builtin_ia32_vpopcountb_v64qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_UDI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv32qi, "__builtin_ia32_vpopcountb_v32qi",

> IX86_BUILTIN_VPOPCOUNTBV32QI, UNKNOWN, (int) V32QI_FTYPE_V32QI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv32qi_mask,

> "__builtin_ia32_vpopcountb_v32qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> V32QI_FTYPE_V32QI_V32QI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv16qi, "__builtin_ia32_vpopcountb_v16qi",

> IX86_BUILTIN_VPOPCOUNTBV16QI, UNKNOWN, (int) V16QI_FTYPE_V16QI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv16qi_mask, "__builtin_ia32_vpopcountb_v16qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> V16QI_FTYPE_V16QI_V16QI_UHI)

> +

> +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> UNKNOWN, (int) V32HI_FTYPE_V32HI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_vpopcountv32hi_mask, "__builtin_ia32_vpopcountw_v32hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv16hi, "__builtin_ia32_vpopcountw_v16hi",

> IX86_BUILTIN_VPOPCOUNTWV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv16hi_mask, "__builtin_ia32_vpopcountw_v16hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_UHI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv8hi, "__builtin_ia32_vpopcountw_v8hi",

> IX86_BUILTIN_VPOPCOUNTWV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_vpopcountv8hi_mask, "__builtin_ia32_vpopcountw_v8hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_UQI)

> +

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> "__builtin_ia32_vpshufbitqmb512_mask",

> IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> UQI_FTYPE_V8DI_V8DI_UQI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL |

> OPTION_MASK_ISA_AVX512BW, CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> "__builtin_ia32_vpshufbitqmb256_mask",

> IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> USI_FTYPE_V4DI_V4DI_USI)

> +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> "__builtin_ia32_vpshufbitqmb128_mask",

> IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> UHI_FTYPE_V2DI_V2DI_UHI)

> +

>  /* Builtins with rounding support.  */

>  BDESC_END (ARGS, ROUND_ARGS)

> 

> @@ -2783,20 +2817,6 @@ BDESC (OPTION_MASK_ISA_AVX5124VNNIW, COD

>  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> CODE_FOR_avx5124vnniw_vp4dpwssd_mask,

> "__builtin_ia32_vp4dpwssd_mask", IX86_BUILTIN_4DPWSSD_MASK,

> UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

>  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> CODE_FOR_avx5124vnniw_vp4dpwssds, "__builtin_ia32_vp4dpwssds",

> IX86_BUILTIN_4DPWSSDS, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI)

>  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> CODE_FOR_avx5124vnniw_vp4dpwssds_mask,

> "__builtin_ia32_vp4dpwssds_mask", IX86_BUILTIN_4DPWSSDS_MASK,

> UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si,

> "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> UNKNOWN, (int) V16SI_FTYPE_V16SI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask",

> IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> V16SI_FTYPE_V16SI_V16SI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di,

> "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> UNKNOWN, (int) V8DI_FTYPE_V8DI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_UQI)

> -

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> UNKNOWN, (int) V4DI_FTYPE_V4DI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> "__builtin_ia32_vpopcountq_v4di_mask",

> IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_UQI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> UNKNOWN, (int) V2DI_FTYPE_V2DI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> "__builtin_ia32_vpopcountq_v2di_mask",

> IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_UQI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> UNKNOWN, (int) V4SI_FTYPE_V4SI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> "__builtin_ia32_vpopcountd_v4si_mask",

> IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> V4SI_FTYPE_V4SI_V4SI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> UNKNOWN, (int) V8SI_FTYPE_V8SI)

> -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> "__builtin_ia32_vpopcountd_v8si_mask",

> IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> V8SI_FTYPE_V8SI_V8SI_UHI)

> -

> 

>  /* RDPID */

>  BDESC (OPTION_MASK_ISA_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid",

> IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)

> @@ -2815,24 +2835,6 @@ BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_va

>  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v32qi,

> "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32,

> UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)

>  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v64qi,

> "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64,

> UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)

> 

> -/* BITALG */

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> UNKNOWN, (int) V64QI_FTYPE_V64QI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv64qi_mask, "__builtin_ia32_vpopcountb_v64qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> V64QI_FTYPE_V64QI_V64QI_UDI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32qi,

> "__builtin_ia32_vpopcountb_v32qi", IX86_BUILTIN_VPOPCOUNTBV32QI,

> UNKNOWN, (int) V32QI_FTYPE_V32QI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv32qi_mask, "__builtin_ia32_vpopcountb_v32qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> V32QI_FTYPE_V32QI_V32QI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16qi,

> "__builtin_ia32_vpopcountb_v16qi", IX86_BUILTIN_VPOPCOUNTBV16QI,

> UNKNOWN, (int) V16QI_FTYPE_V16QI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv16qi_mask, "__builtin_ia32_vpopcountb_v16qi_mask",

> IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> V16QI_FTYPE_V16QI_V16QI_UHI)

> -

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> UNKNOWN, (int) V32HI_FTYPE_V32HI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv32hi_mask, "__builtin_ia32_vpopcountw_v32hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> V32HI_FTYPE_V32HI_V32HI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16hi,

> "__builtin_ia32_vpopcountw_v16hi", IX86_BUILTIN_VPOPCOUNTWV16HI,

> UNKNOWN, (int) V16HI_FTYPE_V16HI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv16hi_mask, "__builtin_ia32_vpopcountw_v16hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> V16HI_FTYPE_V16HI_V16HI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi,

> "__builtin_ia32_vpopcountw_v8hi", IX86_BUILTIN_VPOPCOUNTWV8HI,

> UNKNOWN, (int) V8HI_FTYPE_V8HI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi_mask,

> "__builtin_ia32_vpopcountw_v8hi_mask",

> IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_UQI)

> -

> -BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> "__builtin_ia32_vpshufbitqmb128_mask",

> IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> UHI_FTYPE_V2DI_V2DI_UHI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> "__builtin_ia32_vpshufbitqmb256_mask",

> IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> USI_FTYPE_V4DI_V4DI_USI)

> -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> "__builtin_ia32_vpshufbitqmb512_mask",

> IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> UQI_FTYPE_V8DI_V8DI_UQI)

>  BDESC_END (ARGS2, MPX)

> 

>  /* Builtins for MPX.  */

> --- gcc/config/i386/avx512vbmi2intrin.h.jj	2017-11-30

> 09:42:46.000000000 +0100

> +++ gcc/config/i386/avx512vbmi2intrin.h	2017-12-22

> 17:37:50.395929142 +0100

> @@ -28,127 +28,11 @@

>  #ifndef __AVX512VBMI2INTRIN_H_INCLUDED

>  #define __AVX512VBMI2INTRIN_H_INCLUDED

> 

> -#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> +#if !defined(__AVX512VBMI2__)

>  #pragma GCC push_options

> -#pragma GCC target("avx512vbmi2,avx512bw")

> -#define __DISABLE_AVX512VBMI2BW__

> -#endif /* __AVX512VBMI2BW__ */

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> -{

> -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> -						(__v64qi)__A,

> (__mmask64)__B);

> -}

> -

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> -{

> -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> -			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> -}

> -

> -

> -extern __inline void

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i

> __C)

> -{

> -  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,

> -							(__mmask64) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i __C)

> -{

> -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> -						(__v32hi)__A,

> (__mmask32)__B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> -{

> -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> -			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> -}

> -

> -extern __inline void

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B, __m512i

> __C)

> -{

> -  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,

> -							(__mmask32) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> -{

> -  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> -						    (__v64qi) __A,

> -						    (__mmask64) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> -{

> -  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const void

> * __C)

> -{

> -  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> __C,

> -					(__v64qi) __A, (__mmask64) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> -{

> -  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *)

> __B,

> -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)

> -{

> -  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> -						    (__v32hi) __A,

> -						    (__mmask32) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> -{

> -  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const void

> * __C)

> -{

> -  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> __C,

> -					(__v32hi) __A, (__mmask32) __B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> -{

> -  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *)

> __B,

> -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> -}

> +#pragma GCC target("avx512vbmi2")

> +#define __DISABLE_AVX512VBMI2__

> +#endif /* __AVX512VBMI2__ */

> 

>  #ifdef __OPTIMIZE__

>  extern __inline __m512i

> @@ -161,23 +45,6 @@ _mm512_shrdi_epi16 (__m512i __A, __m512i

> 

>  extern __inline __m512i

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D,

> -								int __E)

> -{

> -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int

> __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> (__mmask32)__A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

>  _mm512_shrdi_epi32 (__m512i __A, __m512i __B, int __C)

>  {

>    return (__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)__A, (__v16si) __B,

> @@ -235,23 +102,6 @@ _mm512_shldi_epi16 (__m512i __A, __m512i

> 

>  extern __inline __m512i

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D,

> -								int __E)

> -{

> -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int

> __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> (__mmask32)__A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

>  _mm512_shldi_epi32 (__m512i __A, __m512i __B, int __C)

>  {

>    return (__m512i) __builtin_ia32_vpshld_v16si ((__v16si)__A, (__v16si) __B,

> @@ -302,13 +152,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

>  #define _mm512_shrdi_epi16(A, B, C) \

>    ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \

>  						(__v32hi)(__m512i)(B),(int)(C))

> -#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> -#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> -	(__v32hi)(__m512i)(C),(int)(D), \

> -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

>  #define _mm512_shrdi_epi32(A, B, C) \

>    ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \

>  	(__v16si)(__m512i)(B),(int)(C))

> @@ -332,13 +175,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

>  #define _mm512_shldi_epi16(A, B, C) \

>    ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \

>  						(__v32hi)(__m512i)(B),(int)(C))

> -#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> -#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> -	(__v32hi)(__m512i)(C),(int)(D), 				\

> -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

>  #define _mm512_shldi_epi32(A, B, C) \

>    ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A), 	\

>  				(__v16si)(__m512i)(B),(int)(C))

> @@ -371,22 +207,6 @@ _mm512_shrdv_epi16 (__m512i __A, __m512i

> 

>  extern __inline __m512i

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> -				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> __m512i __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> -				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

>  _mm512_shrdv_epi32 (__m512i __A, __m512i __B, __m512i __C)

>  {

>    return (__m512i) __builtin_ia32_vpshrdv_v16si ((__v16si)__A, (__v16si) __B,

> @@ -442,22 +262,6 @@ _mm512_shldv_epi16 (__m512i __A, __m512i

> 

>  extern __inline __m512i

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> -				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__B);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> __m512i __D)

> -{

> -  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> -				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__A);

> -}

> -

> -extern __inline __m512i

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

>  _mm512_shldv_epi32 (__m512i __A, __m512i __B, __m512i __C)

>  {

>    return (__m512i) __builtin_ia32_vpshldv_v16si ((__v16si)__A, (__v16si) __B,

> @@ -504,6 +308,218 @@ _mm512_maskz_shldv_epi64 (__mmask8 __A,

>  						(__v8di) __D, (__mmask8)__A);

>  }

> 

> +#ifdef __DISABLE_AVX512VBMI2__

> +#undef __DISABLE_AVX512VBMI2__

> +

> +#pragma GCC pop_options

> +#endif /* __DISABLE_AVX512VBMI2__ */

> +

> +#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> +#pragma GCC push_options

> +#pragma GCC target("avx512vbmi2,avx512bw")

> +#define __DISABLE_AVX512VBMI2BW__

> +#endif /* __AVX512VBMI2BW__ */

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> +{

> +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> +						(__v64qi)__A,

> (__mmask64)__B);

> +}

> +

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> +{

> +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> +			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> +}

> +

> +

> +extern __inline void

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i

> __C)

> +{

> +  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,

> +							(__mmask64) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i

> __C)

> +{

> +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> +						(__v32hi)__A,

> (__mmask32)__B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> +{

> +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> +			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> +}

> +

> +extern __inline void

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B, __m512i

> __C)

> +{

> +  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,

> +							(__mmask32) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> +{

> +  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> +						    (__v64qi) __A,

> +						    (__mmask64) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> +{

> +  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const void

> * __C)

> +{

> +  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> __C,

> +					(__v64qi) __A, (__mmask64) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> +{

> +  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *)

> __B,

> +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)

> +{

> +  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> +						    (__v32hi) __A,

> +						    (__mmask32) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> +{

> +  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const

> void * __C)

> +{

> +  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> __C,

> +					(__v32hi) __A, (__mmask32) __B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> +{

> +  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *)

> __B,

> +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> +}

> +

> +#ifdef __OPTIMIZE__

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D,

> +								int __E)

> +{

> +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int

> __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> (__mmask32)__A);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D,

> +								int __E)

> +{

> +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int

> __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> (__mmask32)__A);

> +}

> +

> +#else

> +#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> +#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> +	(__v32hi)(__m512i)(C),(int)(D), \

> +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> +#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> +#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> +	(__v32hi)(__m512i)(C),(int)(D), 				\

> +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> +#endif

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> +				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> __m512i __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> +				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__A);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> __m512i __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> +				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__B);

> +}

> +

> +extern __inline __m512i

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> __m512i __D)

> +{

> +  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> +				(__v32hi) __C, (__v32hi) __D,

> (__mmask32)__A);

> +}

> +

>  #ifdef __DISABLE_AVX512VBMI2BW__

>  #undef __DISABLE_AVX512VBMI2BW__

> 

> --- gcc/config/i386/avx512bitalgintrin.h.jj	2017-12-22

> 14:00:04.000000000 +0100

> +++ gcc/config/i386/avx512bitalgintrin.h	2017-12-22

> 17:39:52.615409924 +0100

> @@ -143,23 +143,6 @@ _mm256_maskz_popcnt_epi8 (__mmask32 __U,

>  						 _mm256_setzero_si256 (),

>  						(__mmask32) __U);

>  }

> -extern __inline __mmask16

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> -{

> -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> -						 (__v2di) __B,

> -						 (__mmask16) -1);

> -}

> -

> -extern __inline __mmask16

> -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> -_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A, __m128i

> __B)

> -{

> -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> -						 (__v2di) __B,

> -						 (__mmask16) __M);

> -}

> 

>  extern __inline __mmask32

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> @@ -191,6 +174,24 @@ _mm256_mask_bitshuffle_epi64_mask (__mma

>  #define __DISABLE_AVX512BITALGVL__

>  #endif /* __AVX512VLBW__ */

> 

> +extern __inline __mmask16

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> +{

> +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> +						 (__v2di) __B,

> +						 (__mmask16) -1);

> +}

> +

> +extern __inline __mmask16

> +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> +_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A, __m128i

> __B)

> +{

> +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> +						 (__v2di) __B,

> +						 (__mmask16) __M);

> +}

> +

>  extern __inline __m256i

>  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

>  _mm256_popcnt_epi8 (__m256i __A)

> --- gcc/common/config/i386/i386-common.c.jj	2017-12-22

> 14:00:03.000000000 +0100

> +++ gcc/common/config/i386/i386-common.c	2017-12-22

> 15:09:07.875074385 +0100

> @@ -84,8 +84,10 @@ along with GCC; see the file COPYING3.

>    (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)

>  #define OPTION_MASK_ISA_AVX512VNNI_SET \

>    (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)

> -#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET

> OPTION_MASK_ISA_AVX512VPOPCNTDQ

> -#define OPTION_MASK_ISA_AVX512BITALG_SET

> OPTION_MASK_ISA_AVX512BITALG

> +#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \

> +  (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> OPTION_MASK_ISA_AVX512F_SET)

> +#define OPTION_MASK_ISA_AVX512BITALG_SET \

> +  (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512F_SET)

>  #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM

>  #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW

>  #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED

> @@ -187,7 +189,8 @@ along with GCC; see the file COPYING3.

>     | OPTION_MASK_ISA_AVX512PF_UNSET |

> OPTION_MASK_ISA_AVX512ER_UNSET \

>     | OPTION_MASK_ISA_AVX512DQ_UNSET |

> OPTION_MASK_ISA_AVX512BW_UNSET \

>     | OPTION_MASK_ISA_AVX512VL_UNSET |

> OPTION_MASK_ISA_AVX512VBMI2_UNSET \

> -   | OPTION_MASK_ISA_AVX512VNNI_UNSET)

> +   | OPTION_MASK_ISA_AVX512VNNI_UNSET |

> OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \

> +   | OPTION_MASK_ISA_AVX512BITALG_UNSET)

>  #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD

>  #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF

>  #define OPTION_MASK_ISA_AVX512ER_UNSET OPTION_MASK_ISA_AVX512ER

> @@ -257,6 +260,11 @@ along with GCC; see the file COPYING3.

>    (OPTION_MASK_ISA_MMX_UNSET \

>     | OPTION_MASK_ISA_SSE_UNSET)

> 

> +#define OPTION_MASK_ISA2_AVX512F_UNSET \

> +  (OPTION_MASK_ISA_AVX5124FMAPS_UNSET |

> OPTION_MASK_ISA_AVX5124VNNIW_UNSET)

> +#define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \

> +  (OPTION_MASK_ISA2_AVX512F_UNSET | OPTION_MASK_ISA_MPX)

> +

>  /* Implement TARGET_HANDLE_OPTION.  */

> 

>  bool

> @@ -278,11 +286,11 @@ ix86_handle_option (struct gcc_options *

>  	  opts->x_ix86_isa_flags

>  	    &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

>  	  opts->x_ix86_isa_flags2

> -	    &= ~OPTION_MASK_ISA_MPX;

> +	    &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

>  	  opts->x_ix86_isa_flags_explicit

>  	    |= OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

>  	  opts->x_ix86_isa_flags2_explicit

> -	    |= OPTION_MASK_ISA_MPX;

> +	    |= OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

> 

>  	  opts->x_target_flags &= ~MASK_80387;

>  	}

> @@ -339,6 +347,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -352,6 +362,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -365,6 +377,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -378,6 +392,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -391,6 +407,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -404,6 +422,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -417,6 +437,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -430,6 +452,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -443,20 +467,8 @@ ix86_handle_option (struct gcc_options *

>  	{

>  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;

>  	  opts->x_ix86_isa_flags_explicit |=

> OPTION_MASK_ISA_AVX512F_UNSET;

> -

> -	  /* Turn off additional isa flags.  */

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit

> -		|= OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit

> -		|= OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit

> -		|= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit

> -		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

> +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

>  	}

>        return true;

> 

> @@ -639,30 +651,28 @@ ix86_handle_option (struct gcc_options *

>      case OPT_mavx512vpopcntdq:

>        if (value)

>  	{

> -	  opts->x_ix86_isa_flags2 |=

> OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> -	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> +	  opts->x_ix86_isa_flags |=

> OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> +	  opts->x_ix86_isa_flags_explicit

> +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

>  	}

>        else

>  	{

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> +	  opts->x_ix86_isa_flags &=

> ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> +	  opts->x_ix86_isa_flags_explicit

> +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

>  	}

>        return true;

> 

>      case OPT_mavx512bitalg:

>        if (value)

>  	{

> -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512BITALG_SET;

> -	  opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA_AVX512BITALG_SET;

> -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;

> +	  opts->x_ix86_isa_flags_explicit |=

> OPTION_MASK_ISA_AVX512BITALG_SET;

>  	}

>        else

>  	{

> -	  opts->x_ix86_isa_flags2 &=

> ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> -	  opts->x_ix86_isa_flags2_explicit

> +	  opts->x_ix86_isa_flags &=

> ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> +	  opts->x_ix86_isa_flags_explicit

>  		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

>  	}

>        return true;

> @@ -779,6 +789,8 @@ ix86_handle_option (struct gcc_options *

>      case OPT_mno_sse4:

>        opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;

>        opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;

> +      opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> +      opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;

>        return true;

> 

>      case OPT_msse4a:

> 

> 

> 	Jakub
Koval, Julia Jan. 10, 2018, 10:50 a.m. | #3
Hi,

What do you think about changing these types to UHI_FTYPE_V16QI_V16QI_UHI and so on?
In docs it is (KL, VL) = (16,128), (32,256), (64, 512) - so looks like this is where the error was from the start.
Here is the patch.

Thanks,
Julia

> -----Original Message-----

> From: Koval, Julia

> Sent: Monday, December 25, 2017 1:01 PM

> To: Jakub Jelinek <jakub@redhat.com>; Kirill Yukhin <kirill.yukhin@gmail.com>;

> Uros Bizjak <ubizjak@gmail.com>

> Cc: GCC Patches <gcc-patches@gcc.gnu.org>

> Subject: RE: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR

> target/83488)

> 

> Thank you very much for fixing those issues.

> 

> Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented

> > incorrectly, can somebody from Intel handle that?  The inlines in the

> > intrinsic header look correct, but the builtins aren't and what's even worse

> > is that the define_insns are wrong too.  According to the documentation

> > and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> > also __mmask{16,32,64} output mask.  The builtins use

> > UHI_FTYPE_V2DI_V2DI_UHI

> > USI_FTYPE_V4DI_V4DI_USI

> > UQI_FTYPE_V8DI_V8DI_UQI

> > types (first two are correct, the last one is wrong, should have been

> > UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V2DI 1 ("register_operand") ("v"))

> >                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :HI result and :HI mask input),

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V4DI 1 ("register_operand") ("v"))

> >                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :SI result and :SI mask input),

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V8DI 1 ("register_operand") ("v"))

> >                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :DI result and :DI mask input).  Similarly the

> > non-masked patterns, where just the result is incorrect, not the operand 3

> > which doesn't exist).  I'll file a PR to track this.

> 

> I'll fix that.

> 

> Thanks,

> Julia

> 

> > -----Original Message-----

> > From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-

> > owner@gcc.gnu.org] On Behalf Of Jakub Jelinek

> > Sent: Friday, December 22, 2017 7:40 PM

> > To: Kirill Yukhin <kirill.yukhin@gmail.com>; Uros Bizjak <ubizjak@gmail.com>

> > Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-

> > patches@gcc.gnu.org>

> > Subject: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR

> > target/83488)

> >

> > On Fri, Dec 22, 2017 at 03:38:03PM +0300, Kirill Yukhin wrote:

> > > Hello, Julia,

> > > On 12 Nov 12:51, Koval, Julia wrote:

> > > > Hi, this patch enables AVX512BITALG and AVX512VPOPCNTDQ instructions

> > from

> > https://software.intel.com/sites/default/files/managed/c5/15/architecture-

> > instruction-set-extensions-programming-reference.pdf. Ok for trunk?

> > > OK for trunk. I've checked it in.

> >

> > Unfortunately, there are various issues in this patch as well as earlier

> > vbmi2 support.

> >

> > 1) as for various AVX512BITALG and AVX512VPOPCNTDQ builtins we need not

> > just

> > that ISA, but also AVX512VL or AVX512BW or both, these two ISAs need to be

> > moved over from ix86_isa_flags2 to ix86_isa_flags.

> > 2) while the PDF doesn't say that explicitly, for builtins that map to

> > hw insns that don't have AVX512BW listed as CPUID, if they use (or set)

> > 32-bit or 64-bit %k? mask register, we need AVX512BW for the builtin,

> > because otherwise we get ICEs when LRA is trying to load (or store) the

> > 32-bit or 64-bit %k? mask register.  Most of the intrin*.h headers got the

> > requirements right (but see below), but not i386-builtins.def, so using

> > intrin headers was fine, but using builtins directly resulted in numerous

> > ICEs.

> > 3) some builtins where the define_insns were requiring AVX512VL didn't have

> > that requirement on the builtins, so again, numerous ICEs when using the

> > builtins directly.

> > 4) for some builtins the intrin headers were uselessly requiring avx512bw

> > even when it wasn't needed at all (either when they don't have any mask

> > argument or when they have an 8-bit or 16-bit only mask).

> > 5) the def_builtin/ix86_expand_builtin stuff didn't handle

> > OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512BW or

> > OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW

> > right (while the VL is handled there as "require the other ISAs and VL",

> > for BW we don't do that).  There were some hacks for GFNI and

> VPCLMULQDQ,

> > but incomplete and I think it is far better to treat BW and F like VL

> > instead of those 2.  Plus we can improve stuff in def_builtin by only doing

> > this special handling if the whole mask isn't a single bit mask, then there

> > is no reason for just not requiring the isa.

> > 6) in i386-common.c I've noticed a major problem, for the new avx512

> > extensions that live in flags2 rather than flags (after this patch it is

> > just avx5124fmaps and avx512vnniw), doing say -mavx5124fmaps -mno-

> avx512f

> > would properly disable -mavx5124fmaps, but doing -mavx5124fmaps -mno-

> avx2

> > or -mavx5124fmaps -mno-sse etc. would not, again leading to numerous ICEs.

> >

> > Starting bootstrap/regtest on x86_64-linux and i686-linux right now, ok for

> > trunk if it passes?

> >

> > Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented

> > incorrectly, can somebody from Intel handle that?  The inlines in the

> > intrinsic header look correct, but the builtins aren't and what's even worse

> > is that the define_insns are wrong too.  According to the documentation

> > and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> > also __mmask{16,32,64} output mask.  The builtins use

> > UHI_FTYPE_V2DI_V2DI_UHI

> > USI_FTYPE_V4DI_V4DI_USI

> > UQI_FTYPE_V8DI_V8DI_UQI

> > types (first two are correct, the last one is wrong, should have been

> > UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V2DI 1 ("register_operand") ("v"))

> >                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :HI result and :HI mask input),

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V4DI 1 ("register_operand") ("v"))

> >                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :SI result and :SI mask input),

> >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> >             (and:QI (unspec:QI [

> >                         (match_operand:V8DI 1 ("register_operand") ("v"))

> >                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

> >                     ] 214)

> >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > (incorrect, should use :DI result and :DI mask input).  Similarly the

> > non-masked patterns, where just the result is incorrect, not the operand 3

> > which doesn't exist).  I'll file a PR to track this.

> >

> > 2017-12-22  Jakub Jelinek  <jakub@redhat.com>

> >

> > 	PR target/83488

> > 	* config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move

> > from

> > 	ix86_isa_flags2 to ix86_isa_flags.

> > 	* config/i386/i386-c.c (ix86_target_macros_internal): Test

> > 	OPTION_MASK_ISA_AVX512BITALG and

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ in

> > 	isa_flags rather than isa_flags2.

> > 	* config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq

> > 	and -mavx512bitalg from isa2_opts to isa_opts.

> > 	(ix86_option_override_internal): Test

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ

> > 	in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit

> > 	and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.

> > 	Formatting fixes.

> > 	(def_builtin): Treat OPTION_MASK_ISA_AVX512BW or

> > 	OPTION_MASK_ISA_AVX512F ored with another option similarly to

> > 	OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL

> > don't

> > 	clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.

> > 	(ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and

> > 	OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle

> > 	OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that

> > way.

> > 	* config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and

> > AVX512BITALG

> > 	builtins from bdesc_args2 to bdesc_args section.

> > 	(__builtin_ia32_compressstoreuqi512_mask,

> > 	__builtin_ia32_compressstoreuhi512_mask,

> > 	__builtin_ia32_compressstoreuqi256_mask,

> > 	__builtin_ia32_expandloadqi512_mask,

> > 	__builtin_ia32_expandloadqi512_maskz,

> > 	__builtin_ia32_expandloadhi512_mask,

> > 	__builtin_ia32_expandloadhi512_maskz,

> > 	__builtin_ia32_compressqi512_mask,

> > __builtin_ia32_compresshi512_mask,

> > 	__builtin_ia32_compressqi256_mask,

> > __builtin_ia32_expandqi512_mask,

> > 	__builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,

> > 	__builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,

> > 	__builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,

> > 	__builtin_ia32_vpshld_v32hi_mask,

> > __builtin_ia32_vpshrdv_v32hi_mask,

> > 	__builtin_ia32_vpshrdv_v32hi_maskz,

> > __builtin_ia32_vpshldv_v32hi_mask,

> > 	__builtin_ia32_vpshldv_v32hi_maskz,

> > 	__builtin_ia32_vpopcountb_v64qi_mask,

> > 	__builtin_ia32_vpopcountw_v32hi_mask,

> > 	__builtin_ia32_vpshufbitqmb512_mask,

> > 	__builtin_ia32_vpshufbitqmb256_mask): Add

> > 	" | OPTION_MASK_ISA_AVX512BW".

> > 	(__builtin_ia32_expandloadqi256_mask,

> > 	__builtin_ia32_expandloadqi256_maskz,

> > 	__builtin_ia32_vpopcountb_v32qi_mask): Add

> > 	" | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".

> > 	(__builtin_ia32_expandloadhi256_mask,

> > 	__builtin_ia32_expandloadhi256_maskz,

> > 	__builtin_ia32_expandloadqi128_mask,

> > 	__builtin_ia32_expandloadqi128_maskz,

> > 	__builtin_ia32_expandloadhi128_mask,

> > 	__builtin_ia32_expandloadhi128_maskz,

> > 	__builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,

> > 	__builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,

> > 	__builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,

> > 	__builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,

> > 	__builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,

> > 	__builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,

> > 	__builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,

> > 	__builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,

> > 	__builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,

> > 	__builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,

> > 	__builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,

> > 	__builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,

> > 	__builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,

> > 	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,

> > 	__builtin_ia32_vpshrdv_v8hi_mask,

> > __builtin_ia32_vpshrdv_v8hi_maskz,

> > 	__builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,

> > 	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,

> > 	__builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,

> > 	__builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,

> > 	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,

> > 	__builtin_ia32_vpshrdv_v2di_mask,

> > __builtin_ia32_vpshrdv_v2di_maskz,

> > 	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,

> > 	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,

> > 	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,

> > 	__builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,

> > 	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,

> > 	__builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,

> > 	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,

> > 	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,

> > 	__builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,

> > 	__builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,

> > 	__builtin_ia32_vpopcountb_v16qi_mask,

> > __builtin_ia32_vpopcountw_v16hi,

> > 	__builtin_ia32_vpopcountw_v16hi_mask,

> > __builtin_ia32_vpopcountw_v8hi,

> > 	__builtin_ia32_vpopcountw_v8hi_mask): Add

> > 	" | OPTION_MASK_ISA_AVX512VL".

> > 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,

> > 	_mm512_shrdi_epi32, _mm512_mask_shrdi_epi32,

> > _mm512_maskz_shrdi_epi32,

> > 	_mm512_shrdi_epi64, _mm512_mask_shrdi_epi64,

> > _mm512_maskz_shrdi_epi64,

> > 	_mm512_shldi_epi16, _mm512_shldi_epi32,

> > _mm512_mask_shldi_epi32,

> > 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,

> > _mm512_mask_shldi_epi64,

> > 	_mm512_maskz_shldi_epi64, _mm512_shrdv_epi16,

> > _mm512_shrdv_epi32,

> > 	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32,

> > _mm512_shrdv_epi64,

> > 	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64,

> > _mm512_shldv_epi16,

> > 	_mm512_shldv_epi32, _mm512_mask_shldv_epi32,

> > _mm512_maskz_shldv_epi32,

> > 	_mm512_shldv_epi64, _mm512_mask_shldv_epi64,

> > 	_mm512_maskz_shldv_epi64): Don't require avx512bw for these

> > intrinsics.

> > 	* config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,

> > 	_mm_mask_bitshuffle_epi64_mask): Likewise.

> > 	* common/config/i386/i386-common.c

> > 	(OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,

> > 	OPTION_MASK_ISA_AVX512BITALG_SET): Or in

> > OPTION_MASK_ISA_AVX512F_SET.

> > 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in

> > 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and

> > 	OPTION_MASK_ISA_AVX512BITALG_UNSET.

> > 	(OPTION_MASK_ISA2_AVX512F_UNSET,

> > 	OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.

> > 	(ix86_handle_option): For -mno-general-regs-only, clear from

> > 	ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET

> > rather than

> > 	just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2}

> > and

> > 	-mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from

> > 	ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking

> > 	individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust

> > 	for moving from ix86_isa_flags2 to ix86_isa_flags.

> >

> > --- gcc/config/i386/i386.opt.jj	2017-12-22 14:00:04.000000000 +0100

> > +++ gcc/config/i386/i386.opt	2017-12-22 14:18:30.113511523 +0100

> > @@ -734,7 +734,7 @@ Target Report Mask(ISA_AVX5124VNNIW) Var

> >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> and

> > AVX5124VNNIW built-in functions and code generation.

> >

> >  mavx512vpopcntdq

> > -Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags2) Save

> > +Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save

> >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> and

> > AVX512VPOPCNTDQ built-in functions and code generation.

> >

> >  mavx512vbmi2

> > @@ -746,7 +746,7 @@ Target Report Mask(ISA_AVX512VNNI) Var(i

> >  Support AVX512VNNI built-in functions and code generation.

> >

> >  mavx512bitalg

> > -Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags2) Save

> > +Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save

> >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> and

> > AVX512BITALG built-in functions and code generation.

> >

> >  mfma

> > --- gcc/config/i386/i386-c.c.jj	2017-12-22 14:00:04.000000000 +0100

> > +++ gcc/config/i386/i386-c.c	2017-12-22 14:22:54.154146866 +0100

> > @@ -402,9 +402,9 @@ ix86_target_macros_internal (HOST_WIDE_I

> >      def_or_undef (parse_in, "__SGX__");

> >    if (isa_flag2 & OPTION_MASK_ISA_AVX5124FMAPS)

> >      def_or_undef (parse_in, "__AVX5124FMAPS__");

> > -  if (isa_flag2 & OPTION_MASK_ISA_AVX512BITALG)

> > +  if (isa_flag & OPTION_MASK_ISA_AVX512BITALG)

> >      def_or_undef (parse_in, "__AVX512BITALG__");

> > -  if (isa_flag2 & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

> > +  if (isa_flag & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

> >      def_or_undef (parse_in, "__AVX512VPOPCNTDQ__");

> >    if (isa_flag & OPTION_MASK_ISA_FMA)

> >      def_or_undef (parse_in, "__FMA__");

> > --- gcc/config/i386/i386.c.jj	2017-12-22 14:00:04.000000000 +0100

> > +++ gcc/config/i386/i386.c	2017-12-22 15:52:29.345353491 +0100

> > @@ -2758,16 +2758,16 @@ ix86_target_string (HOST_WIDE_INT isa, H

> >      { "-msgx",		OPTION_MASK_ISA_SGX },

> >      { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },

> >      { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },

> > -    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

> >      { "-mibt",		OPTION_MASK_ISA_IBT },

> >      { "-mhle",		OPTION_MASK_ISA_HLE },

> >      { "-mmovbe",	OPTION_MASK_ISA_MOVBE },

> >      { "-mclzero",	OPTION_MASK_ISA_CLZERO },

> > -    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX },

> > -    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG }

> > +    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX }

> >    };

> >    static struct ix86_target_opts isa_opts[] =

> >    {

> > +    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

> > +    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG },

> >      { "-mvpclmulqdq",	OPTION_MASK_ISA_VPCLMULQDQ },

> >      { "-mgfni",		OPTION_MASK_ISA_GFNI },

> >      { "-mavx512vnni",	OPTION_MASK_ISA_AVX512VNNI },

> > @@ -4104,14 +4104,17 @@ ix86_option_override_internal (bool main

> >  	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA;

> >

> >  	if (processor_alias_table[i].flags & PTA_AVX5124VNNIW

> > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > OPTION_MASK_ISA_AVX5124VNNIW))

> > +	    && !(opts->x_ix86_isa_flags2_explicit

> > +		 & OPTION_MASK_ISA_AVX5124VNNIW))

> >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124VNNIW;

> >  	if (processor_alias_table[i].flags & PTA_AVX5124FMAPS

> > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > OPTION_MASK_ISA_AVX5124FMAPS))

> > +	    && !(opts->x_ix86_isa_flags2_explicit

> > +		 & OPTION_MASK_ISA_AVX5124FMAPS))

> >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124FMAPS;

> >  	if (processor_alias_table[i].flags & PTA_AVX512VPOPCNTDQ

> > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> > -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

> > +	    && !(opts->x_ix86_isa_flags_explicit

> > +		 & OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> > +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

> >  	if (processor_alias_table[i].flags & PTA_SGX

> >  	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_SGX))

> >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_SGX;

> > @@ -29795,13 +29798,21 @@ def_builtin (HOST_WIDE_INT mask, const c

> >      {

> >        ix86_builtins_isa[(int) code].isa = mask;

> >

> > -      /* OPTION_MASK_ISA_AVX512VL has special meaning. Despite of generic

> > case,

> > -	 where any bit set means that built-in is enable, this bit must be *and-

> > ed*

> > -	 with another one. E.g.: OPTION_MASK_ISA_AVX512DQ |

> > OPTION_MASK_ISA_AVX512VL

> > -	 means that *both* cpuid bits must be set for the built-in to be available.

> > -	 Handle this here.  */

> > -      if (mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> > +      /* OPTION_MASK_ISA_AVX512{F,VL,BW} have special meaning. Despite

> of

> > +	 generic case, where any bit set means that built-in is enable, this

> > +	 bit must be *and-ed* with another one. E.g.:

> > +	 OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL

> > +	 means that *both* cpuid bits must be set for the built-in to

> > +	 be available. Handle this here.  */

> > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> > +	  && mask != OPTION_MASK_ISA_AVX512VL)

> >  	mask &= ~OPTION_MASK_ISA_AVX512VL;

> > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512BW)

> > +	  && mask != OPTION_MASK_ISA_AVX512BW)

> > +	mask &= ~OPTION_MASK_ISA_AVX512BW;

> > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512F)

> > +	  && mask != OPTION_MASK_ISA_AVX512F)

> > +	mask &= ~OPTION_MASK_ISA_AVX512F;

> >

> >        mask &= ~OPTION_MASK_ISA_64BIT;

> >        if (mask == 0

> > @@ -35364,25 +35375,28 @@ ix86_expand_builtin (tree exp, rtx targe

> >       Originally the builtin was not created if it wasn't applicable to the

> >       current ISA based on the command line switches.  With function specific

> >       options, we need to check in the context of the function making the call

> > -     whether it is supported.  Treat AVX512VL and MMX specially.  For other

> > flags,

> > -     if isa includes more than one ISA bit, treat those are requiring any

> > -     of them.  For AVX512VL, require both AVX512VL and the non-AVX512VL

> > -     ISAs.  Likewise for MMX, require both MMX and the non-MMX ISAs.

> > +     whether it is supported.  Treat AVX512{VL,BW,F} and MMX specially.  For

> > +     other flags, if isa includes more than one ISA bit, treat those are

> > +     requiring any of them.  For AVX512VL, require both AVX512VL and the

> > +     non-AVX512VL ISAs.  Likewise for MMX, require both MMX and the non-

> > MMX

> > +     ISAs.  Similarly for AVX512F and AVX512BW.

> >       Similarly for 64BIT, but we shouldn't be building such builtins

> >       at all, -m64 is a whole TU option.  */

> >    if (((ix86_builtins_isa[fcode].isa

> >  	& ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> > -	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> > -	    | OPTION_MASK_ISA_VPCLMULQDQ))

> > +	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> > +	    | OPTION_MASK_ISA_AVX512F))

> >         && !(ix86_builtins_isa[fcode].isa

> >  	    & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> > -		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> > -		| OPTION_MASK_ISA_VPCLMULQDQ)

> > +		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> > +		| OPTION_MASK_ISA_AVX512F)

> >  	    & ix86_isa_flags))

> >        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)

> >  	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL))

> > -      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_GFNI)

> > -	  && !(ix86_isa_flags & OPTION_MASK_ISA_GFNI))

> > +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512BW)

> > +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512BW))

> > +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512F)

> > +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512F))

> >        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_MMX)

> >  	  && !(ix86_isa_flags & OPTION_MASK_ISA_MMX))

> >        || (ix86_builtins_isa[fcode].isa2

> > --- gcc/config/i386/i386-builtin.def.jj	2017-12-22 14:03:05.000000000 +0100

> > +++ gcc/config/i386/i386-builtin.def	2017-12-22 18:00:12.579239678 +0100

> > @@ -393,27 +393,27 @@ BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_rdp

> >  BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_wrpkru,

> "__builtin_ia32_wrpkru",

> > IX86_BUILTIN_WRPKRU, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)

> >

> >  /* VBMI2 */

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_compressstorev64qi_mask,

> > "__builtin_ia32_compressstoreuqi512_mask",

> > IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> > VOID_FTYPE_PV64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_compressstorev32hi_mask,

> > "__builtin_ia32_compressstoreuhi512_mask",

> > IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> > VOID_FTYPE_PV32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressstorev32qi_mask,

> > "__builtin_ia32_compressstoreuqi256_mask",

> > IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> > VOID_FTYPE_PV32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_compressstorev64qi_mask,

> > "__builtin_ia32_compressstoreuqi512_mask",

> > IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> > VOID_FTYPE_PV64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_compressstorev32hi_mask,

> > "__builtin_ia32_compressstoreuhi512_mask",

> > IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> > VOID_FTYPE_PV32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev32qi_mask,

> > "__builtin_ia32_compressstoreuqi256_mask",

> > IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> > VOID_FTYPE_PV32QI_V32QI_USI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressstorev16qi_mask,

> > "__builtin_ia32_compressstoreuqi128_mask",

> > IX86_BUILTIN_PCOMPRESSBSTORE128, UNKNOWN, (int)

> > VOID_FTYPE_PV16QI_V16QI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressstorev16hi_mask,

> > "__builtin_ia32_compressstoreuhi256_mask",

> > IX86_BUILTIN_PCOMPRESSWSTORE256, UNKNOWN, (int)

> > VOID_FTYPE_PV16HI_V16HI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressstorev8hi_mask,

> > "__builtin_ia32_compressstoreuhi128_mask",

> > IX86_BUILTIN_PCOMPRESSWSTORE128, UNKNOWN, (int)

> > VOID_FTYPE_PV8HI_V8HI_UQI)

> >

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> > "__builtin_ia32_expandloadqi512_mask", IX86_BUILTIN_PEXPANDBLOAD512,

> > UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz,

> > "__builtin_ia32_expandloadqi512_maskz",

> IX86_BUILTIN_PEXPANDBLOAD512Z,

> > UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> > "__builtin_ia32_expandloadhi512_mask",

> IX86_BUILTIN_PEXPANDWLOAD512,

> > UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz,

> > "__builtin_ia32_expandloadhi512_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > -

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_mask,

> > "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256,

> > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_maskz,

> > "__builtin_ia32_expandloadqi256_maskz",

> IX86_BUILTIN_PEXPANDBLOAD256Z,

> > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_mask,

> > "__builtin_ia32_expandloadhi256_mask",

> IX86_BUILTIN_PEXPANDWLOAD256,

> > UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_maskz,

> > "__builtin_ia32_expandloadhi256_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > -

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_mask,

> > "__builtin_ia32_expandloadqi128_mask", IX86_BUILTIN_PEXPANDBLOAD128,

> > UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_maskz,

> > "__builtin_ia32_expandloadqi128_maskz",

> IX86_BUILTIN_PEXPANDBLOAD128Z,

> > UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_mask,

> > "__builtin_ia32_expandloadhi128_mask",

> IX86_BUILTIN_PEXPANDWLOAD128,

> > UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_maskz,

> > "__builtin_ia32_expandloadhi128_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandloadqi512_mask",

> > IX86_BUILTIN_PEXPANDBLOAD512, UNKNOWN, (int)

> > V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandloadqi512_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD512Z, UNKNOWN, (int)

> > V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandloadhi512_mask",

> > IX86_BUILTIN_PEXPANDWLOAD512, UNKNOWN, (int)

> > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandloadhi512_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > +

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> > "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256,

> > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> > "__builtin_ia32_expandloadqi256_maskz",

> IX86_BUILTIN_PEXPANDBLOAD256Z,

> > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandloadhi256_mask",

> > IX86_BUILTIN_PEXPANDWLOAD256, UNKNOWN, (int)

> > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16hi_maskz, "__builtin_ia32_expandloadhi256_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > +

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandloadqi128_mask",

> > IX86_BUILTIN_PEXPANDBLOAD128, UNKNOWN, (int)

> > V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandloadqi128_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD128Z, UNKNOWN, (int)

> > V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandloadhi128_mask",

> > IX86_BUILTIN_PEXPANDWLOAD128, UNKNOWN, (int)

> > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandloadhi128_maskz",

> > IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> >

> >  BDESC_END (SPECIAL_ARGS, ARGS)

> >

> > @@ -2418,18 +2418,18 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTI

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_avx512vl_vpermi2varv16qi3_mask,

> > "__builtin_ia32_vpermi2varqi128_mask", IX86_BUILTIN_VPERMI2VARQI128,

> > UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)

> >

> >  /* VBMI2 */

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_compressv64qi_mask,

> > "__builtin_ia32_compressqi512_mask", IX86_BUILTIN_PCOMPRESSB512,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_compressv32hi_mask,

> > "__builtin_ia32_compresshi512_mask", IX86_BUILTIN_PCOMPRESSW512,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressv32qi_mask, "__builtin_ia32_compressqi256_mask",

> > IX86_BUILTIN_PCOMPRESSB256, UNKNOWN, (int)

> > V32QI_FTYPE_V32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_compressv64qi_mask, "__builtin_ia32_compressqi512_mask",

> > IX86_BUILTIN_PCOMPRESSB512, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_compressv32hi_mask, "__builtin_ia32_compresshi512_mask",

> > IX86_BUILTIN_PCOMPRESSW512, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv32qi_mask,

> > "__builtin_ia32_compressqi256_mask", IX86_BUILTIN_PCOMPRESSB256,

> > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressv16qi_mask, "__builtin_ia32_compressqi128_mask",

> > IX86_BUILTIN_PCOMPRESSB128, UNKNOWN, (int)

> > V16QI_FTYPE_V16QI_V16QI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressv16hi_mask, "__builtin_ia32_compresshi256_mask",

> > IX86_BUILTIN_PCOMPRESSW256, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_compressv8hi_mask, "__builtin_ia32_compresshi128_mask",

> > IX86_BUILTIN_PCOMPRESSW128, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_UQI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> > "__builtin_ia32_expandqi512_mask", IX86_BUILTIN_PEXPANDB512,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz,

> > "__builtin_ia32_expandqi512_maskz", IX86_BUILTIN_PEXPANDB512Z,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> > "__builtin_ia32_expandhi512_mask", IX86_BUILTIN_PEXPANDW512,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz,

> > "__builtin_ia32_expandhi512_maskz", IX86_BUILTIN_PEXPANDW512Z,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandqi256_mask",

> > IX86_BUILTIN_PEXPANDB256, UNKNOWN, (int)

> > V32QI_FTYPE_V32QI_V32QI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandqi256_maskz",

> > IX86_BUILTIN_PEXPANDB256Z, UNKNOWN, (int)

> > V32QI_FTYPE_V32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandqi512_mask",

> > IX86_BUILTIN_PEXPANDB512, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandqi512_maskz",

> > IX86_BUILTIN_PEXPANDB512Z, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandhi512_mask",

> > IX86_BUILTIN_PEXPANDW512, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandhi512_maskz",

> > IX86_BUILTIN_PEXPANDW512Z, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> > "__builtin_ia32_expandqi256_mask", IX86_BUILTIN_PEXPANDB256,

> > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> > "__builtin_ia32_expandqi256_maskz", IX86_BUILTIN_PEXPANDB256Z,

> > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandqi128_mask",

> > IX86_BUILTIN_PEXPANDB128, UNKNOWN, (int)

> > V16QI_FTYPE_V16QI_V16QI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandqi128_maskz",

> > IX86_BUILTIN_PEXPANDB128Z, UNKNOWN, (int)

> > V16QI_FTYPE_V16QI_V16QI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandhi256_mask",

> > IX86_BUILTIN_PEXPANDW256, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_UHI)

> > @@ -2437,97 +2437,97 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPT

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandhi128_mask",

> > IX86_BUILTIN_PEXPANDW128, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_UQI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandhi128_maskz",

> > IX86_BUILTIN_PEXPANDW128Z, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_UQI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi,

> > "__builtin_ia32_vpshrd_v32hi", IX86_BUILTIN_VPSHRDV32HI, UNKNOWN,

> (int)

> > V32HI_FTYPE_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi_mask,

> > "__builtin_ia32_vpshrd_v32hi_mask", IX86_BUILTIN_VPSHRDV32HI_MASK,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi,

> > "__builtin_ia32_vpshrd_v16hi", IX86_BUILTIN_VPSHRDV16HI, UNKNOWN,

> (int)

> > V16HI_FTYPE_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi_mask,

> > "__builtin_ia32_vpshrd_v16hi_mask", IX86_BUILTIN_VPSHRDV16HI_MASK,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi,

> > "__builtin_ia32_vpshrd_v8hi", IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi_mask,

> > "__builtin_ia32_vpshrd_v8hi_mask", IX86_BUILTIN_VPSHRDV8HI_MASK,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshrd_v32hi_mask, "__builtin_ia32_vpshrd_v32hi_mask",

> > IX86_BUILTIN_VPSHRDV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v16hi, "__builtin_ia32_vpshrd_v16hi",

> > IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v16hi_mask, "__builtin_ia32_vpshrd_v16hi_mask",

> > IX86_BUILTIN_VPSHRDV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v8hi, "__builtin_ia32_vpshrd_v8hi",

> > IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v8hi_mask, "__builtin_ia32_vpshrd_v8hi_mask",

> > IX86_BUILTIN_VPSHRDV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si,

> > "__builtin_ia32_vpshrd_v16si", IX86_BUILTIN_VPSHRDV16SI, UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si_mask,

> > "__builtin_ia32_vpshrd_v16si_mask", IX86_BUILTIN_VPSHRDV16SI_MASK,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si,

> > "__builtin_ia32_vpshrd_v8si", IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si_mask,

> > "__builtin_ia32_vpshrd_v8si_mask", IX86_BUILTIN_VPSHRDV8SI_MASK,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si,

> > "__builtin_ia32_vpshrd_v4si", IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si_mask,

> > "__builtin_ia32_vpshrd_v4si_mask", IX86_BUILTIN_VPSHRDV4SI_MASK,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v8si, "__builtin_ia32_vpshrd_v8si",

> > IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v8si_mask, "__builtin_ia32_vpshrd_v8si_mask",

> > IX86_BUILTIN_VPSHRDV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v4si, "__builtin_ia32_vpshrd_v4si",

> > IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v4si_mask, "__builtin_ia32_vpshrd_v4si_mask",

> > IX86_BUILTIN_VPSHRDV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di,

> > "__builtin_ia32_vpshrd_v8di", IX86_BUILTIN_VPSHRDV8DI, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di_mask,

> > "__builtin_ia32_vpshrd_v8di_mask", IX86_BUILTIN_VPSHRDV8DI_MASK,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di,

> > "__builtin_ia32_vpshrd_v4di", IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di_mask,

> > "__builtin_ia32_vpshrd_v4di_mask", IX86_BUILTIN_VPSHRDV4DI_MASK,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di,

> > "__builtin_ia32_vpshrd_v2di", IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di_mask,

> > "__builtin_ia32_vpshrd_v2di_mask", IX86_BUILTIN_VPSHRDV2DI_MASK,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v4di, "__builtin_ia32_vpshrd_v4di",

> > IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v4di_mask, "__builtin_ia32_vpshrd_v4di_mask",

> > IX86_BUILTIN_VPSHRDV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v2di, "__builtin_ia32_vpshrd_v2di",

> > IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrd_v2di_mask, "__builtin_ia32_vpshrd_v2di_mask",

> > IX86_BUILTIN_VPSHRDV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi,

> > "__builtin_ia32_vpshld_v32hi", IX86_BUILTIN_VPSHLDV32HI, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi_mask,

> > "__builtin_ia32_vpshld_v32hi_mask", IX86_BUILTIN_VPSHLDV32HI_MASK,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi,

> > "__builtin_ia32_vpshld_v16hi", IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi_mask,

> > "__builtin_ia32_vpshld_v16hi_mask", IX86_BUILTIN_VPSHLDV16HI_MASK,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi,

> > "__builtin_ia32_vpshld_v8hi", IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi_mask,

> > "__builtin_ia32_vpshld_v8hi_mask", IX86_BUILTIN_VPSHLDV8HI_MASK,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshld_v32hi_mask, "__builtin_ia32_vpshld_v32hi_mask",

> > IX86_BUILTIN_VPSHLDV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v16hi, "__builtin_ia32_vpshld_v16hi",

> > IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v16hi_mask, "__builtin_ia32_vpshld_v16hi_mask",

> > IX86_BUILTIN_VPSHLDV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v8hi, "__builtin_ia32_vpshld_v8hi",

> > IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v8hi_mask, "__builtin_ia32_vpshld_v8hi_mask",

> > IX86_BUILTIN_VPSHLDV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si,

> > "__builtin_ia32_vpshld_v16si", IX86_BUILTIN_VPSHLDV16SI, UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si_mask,

> > "__builtin_ia32_vpshld_v16si_mask", IX86_BUILTIN_VPSHLDV16SI_MASK,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si,

> > "__builtin_ia32_vpshld_v8si", IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si_mask,

> > "__builtin_ia32_vpshld_v8si_mask", IX86_BUILTIN_VPSHLDV8SI_MASK,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si,

> > "__builtin_ia32_vpshld_v4si", IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si_mask,

> > "__builtin_ia32_vpshld_v4si_mask", IX86_BUILTIN_VPSHLDV4SI_MASK,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v8si, "__builtin_ia32_vpshld_v8si",

> > IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v8si_mask, "__builtin_ia32_vpshld_v8si_mask",

> > IX86_BUILTIN_VPSHLDV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v4si, "__builtin_ia32_vpshld_v4si",

> > IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v4si_mask, "__builtin_ia32_vpshld_v4si_mask",

> > IX86_BUILTIN_VPSHLDV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di,

> > "__builtin_ia32_vpshld_v8di", IX86_BUILTIN_VPSHLDV8DI, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di_mask,

> > "__builtin_ia32_vpshld_v8di_mask", IX86_BUILTIN_VPSHLDV8DI_MASK,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di,

> > "__builtin_ia32_vpshld_v4di", IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di_mask,

> > "__builtin_ia32_vpshld_v4di_mask", IX86_BUILTIN_VPSHLDV4DI_MASK,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di,

> > "__builtin_ia32_vpshld_v2di", IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di_mask,

> > "__builtin_ia32_vpshld_v2di_mask", IX86_BUILTIN_VPSHLDV2DI_MASK,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v4di, "__builtin_ia32_vpshld_v4di",

> > IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v4di_mask, "__builtin_ia32_vpshld_v4di_mask",

> > IX86_BUILTIN_VPSHLDV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v2di, "__builtin_ia32_vpshld_v2di",

> > IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshld_v2di_mask, "__builtin_ia32_vpshld_v2di_mask",

> > IX86_BUILTIN_VPSHLDV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> >

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi,

> > "__builtin_ia32_vpshrdv_v32hi", IX86_BUILTIN_VPSHRDVV32HI, UNKNOWN,

> > (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi_mask,

> > "__builtin_ia32_vpshrdv_v32hi_mask", IX86_BUILTIN_VPSHRDVV32HI_MASK,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v32hi_maskz,

> > "__builtin_ia32_vpshrdv_v32hi_maskz",

> IX86_BUILTIN_VPSHRDVV32HI_MASKZ,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi,

> > "__builtin_ia32_vpshrdv_v16hi", IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN,

> > (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi_mask,

> > "__builtin_ia32_vpshrdv_v16hi_mask", IX86_BUILTIN_VPSHRDVV16HI_MASK,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v16hi_maskz,

> > "__builtin_ia32_vpshrdv_v16hi_maskz",

> IX86_BUILTIN_VPSHRDVV16HI_MASKZ,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi,

> > "__builtin_ia32_vpshrdv_v8hi", IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN,

> (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_mask,

> > "__builtin_ia32_vpshrdv_v8hi_mask", IX86_BUILTIN_VPSHRDVV8HI_MASK,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_maskz,

> > "__builtin_ia32_vpshrdv_v8hi_maskz", IX86_BUILTIN_VPSHRDVV8HI_MASKZ,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshrdv_v32hi_mask, "__builtin_ia32_vpshrdv_v32hi_mask",

> > IX86_BUILTIN_VPSHRDVV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshrdv_v32hi_maskz, "__builtin_ia32_vpshrdv_v32hi_maskz",

> > IX86_BUILTIN_VPSHRDVV32HI_MASKZ, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v16hi, "__builtin_ia32_vpshrdv_v16hi",

> > IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v16hi_mask, "__builtin_ia32_vpshrdv_v16hi_mask",

> > IX86_BUILTIN_VPSHRDVV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v16hi_maskz, "__builtin_ia32_vpshrdv_v16hi_maskz",

> > IX86_BUILTIN_VPSHRDVV16HI_MASKZ, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8hi, "__builtin_ia32_vpshrdv_v8hi",

> > IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8hi_mask, "__builtin_ia32_vpshrdv_v8hi_mask",

> > IX86_BUILTIN_VPSHRDVV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8hi_maskz, "__builtin_ia32_vpshrdv_v8hi_maskz",

> > IX86_BUILTIN_VPSHRDVV8HI_MASKZ, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si,

> > "__builtin_ia32_vpshrdv_v16si", IX86_BUILTIN_VPSHRDVV16SI, UNKNOWN,

> > (int) V16SI_FTYPE_V16SI_V16SI_V16SI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si_mask,

> > "__builtin_ia32_vpshrdv_v16si_mask", IX86_BUILTIN_VPSHRDVV16SI_MASK,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v16si_maskz,

> > "__builtin_ia32_vpshrdv_v16si_maskz",

> IX86_BUILTIN_VPSHRDVV16SI_MASKZ,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si,

> > "__builtin_ia32_vpshrdv_v8si", IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_mask,

> > "__builtin_ia32_vpshrdv_v8si_mask", IX86_BUILTIN_VPSHRDVV8SI_MASK,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_maskz,

> > "__builtin_ia32_vpshrdv_v8si_maskz", IX86_BUILTIN_VPSHRDVV8SI_MASKZ,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si,

> > "__builtin_ia32_vpshrdv_v4si", IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_mask,

> > "__builtin_ia32_vpshrdv_v4si_mask", IX86_BUILTIN_VPSHRDVV4SI_MASK,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_maskz,

> > "__builtin_ia32_vpshrdv_v4si_maskz", IX86_BUILTIN_VPSHRDVV4SI_MASKZ,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8si, "__builtin_ia32_vpshrdv_v8si",

> > IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8si_mask, "__builtin_ia32_vpshrdv_v8si_mask",

> > IX86_BUILTIN_VPSHRDVV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v8si_maskz, "__builtin_ia32_vpshrdv_v8si_maskz",

> > IX86_BUILTIN_VPSHRDVV8SI_MASKZ, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4si, "__builtin_ia32_vpshrdv_v4si",

> > IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4si_mask, "__builtin_ia32_vpshrdv_v4si_mask",

> > IX86_BUILTIN_VPSHRDVV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4si_maskz, "__builtin_ia32_vpshrdv_v4si_maskz",

> > IX86_BUILTIN_VPSHRDVV4SI_MASKZ, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di,

> > "__builtin_ia32_vpshrdv_v8di", IX86_BUILTIN_VPSHRDVV8DI, UNKNOWN,

> (int)

> > V8DI_FTYPE_V8DI_V8DI_V8DI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_mask,

> > "__builtin_ia32_vpshrdv_v8di_mask", IX86_BUILTIN_VPSHRDVV8DI_MASK,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_maskz,

> > "__builtin_ia32_vpshrdv_v8di_maskz", IX86_BUILTIN_VPSHRDVV8DI_MASKZ,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di,

> > "__builtin_ia32_vpshrdv_v4di", IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN,

> (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_mask,

> > "__builtin_ia32_vpshrdv_v4di_mask", IX86_BUILTIN_VPSHRDVV4DI_MASK,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_maskz,

> > "__builtin_ia32_vpshrdv_v4di_maskz", IX86_BUILTIN_VPSHRDVV4DI_MASKZ,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di,

> > "__builtin_ia32_vpshrdv_v2di", IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN,

> (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_mask,

> > "__builtin_ia32_vpshrdv_v2di_mask", IX86_BUILTIN_VPSHRDVV2DI_MASK,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_maskz,

> > "__builtin_ia32_vpshrdv_v2di_maskz", IX86_BUILTIN_VPSHRDVV2DI_MASKZ,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4di, "__builtin_ia32_vpshrdv_v4di",

> > IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4di_mask, "__builtin_ia32_vpshrdv_v4di_mask",

> > IX86_BUILTIN_VPSHRDVV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v4di_maskz, "__builtin_ia32_vpshrdv_v4di_maskz",

> > IX86_BUILTIN_VPSHRDVV4DI_MASKZ, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v2di, "__builtin_ia32_vpshrdv_v2di",

> > IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v2di_mask, "__builtin_ia32_vpshrdv_v2di_mask",

> > IX86_BUILTIN_VPSHRDVV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshrdv_v2di_maskz, "__builtin_ia32_vpshrdv_v2di_maskz",

> > IX86_BUILTIN_VPSHRDVV2DI_MASKZ, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> >

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi,

> > "__builtin_ia32_vpshldv_v32hi", IX86_BUILTIN_VPSHLDVV32HI, UNKNOWN,

> > (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi_mask,

> > "__builtin_ia32_vpshldv_v32hi_mask", IX86_BUILTIN_VPSHLDVV32HI_MASK,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v32hi_maskz,

> > "__builtin_ia32_vpshldv_v32hi_maskz",

> IX86_BUILTIN_VPSHLDVV32HI_MASKZ,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi,

> > "__builtin_ia32_vpshldv_v16hi", IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN,

> > (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi_mask,

> > "__builtin_ia32_vpshldv_v16hi_mask", IX86_BUILTIN_VPSHLDVV16HI_MASK,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v16hi_maskz,

> > "__builtin_ia32_vpshldv_v16hi_maskz",

> IX86_BUILTIN_VPSHLDVV16HI_MASKZ,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi,

> > "__builtin_ia32_vpshldv_v8hi", IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_mask,

> > "__builtin_ia32_vpshldv_v8hi_mask", IX86_BUILTIN_VPSHLDVV8HI_MASK,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_maskz,

> > "__builtin_ia32_vpshldv_v8hi_maskz", IX86_BUILTIN_VPSHLDVV8HI_MASKZ,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshldv_v32hi_mask, "__builtin_ia32_vpshldv_v32hi_mask",

> > IX86_BUILTIN_VPSHLDVV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpshldv_v32hi_maskz, "__builtin_ia32_vpshldv_v32hi_maskz",

> > IX86_BUILTIN_VPSHLDVV32HI_MASKZ, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v16hi, "__builtin_ia32_vpshldv_v16hi",

> > IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v16hi_mask, "__builtin_ia32_vpshldv_v16hi_mask",

> > IX86_BUILTIN_VPSHLDVV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v16hi_maskz, "__builtin_ia32_vpshldv_v16hi_maskz",

> > IX86_BUILTIN_VPSHLDVV16HI_MASKZ, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8hi, "__builtin_ia32_vpshldv_v8hi",

> > IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8hi_mask, "__builtin_ia32_vpshldv_v8hi_mask",

> > IX86_BUILTIN_VPSHLDVV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8hi_maskz, "__builtin_ia32_vpshldv_v8hi_maskz",

> > IX86_BUILTIN_VPSHLDVV8HI_MASKZ, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si,

> > "__builtin_ia32_vpshldv_v16si", IX86_BUILTIN_VPSHLDVV16SI, UNKNOWN,

> (int)

> > V16SI_FTYPE_V16SI_V16SI_V16SI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_mask,

> > "__builtin_ia32_vpshldv_v16si_mask", IX86_BUILTIN_VPSHLDVV16SI_MASK,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_maskz,

> > "__builtin_ia32_vpshldv_v16si_maskz", IX86_BUILTIN_VPSHLDVV16SI_MASKZ,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si,

> > "__builtin_ia32_vpshldv_v8si", IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_mask,

> > "__builtin_ia32_vpshldv_v8si_mask", IX86_BUILTIN_VPSHLDVV8SI_MASK,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_maskz,

> > "__builtin_ia32_vpshldv_v8si_maskz", IX86_BUILTIN_VPSHLDVV8SI_MASKZ,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si,

> > "__builtin_ia32_vpshldv_v4si", IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_mask,

> > "__builtin_ia32_vpshldv_v4si_mask", IX86_BUILTIN_VPSHLDVV4SI_MASK,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_maskz,

> > "__builtin_ia32_vpshldv_v4si_maskz", IX86_BUILTIN_VPSHLDVV4SI_MASKZ,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8si, "__builtin_ia32_vpshldv_v8si",

> > IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8si_mask, "__builtin_ia32_vpshldv_v8si_mask",

> > IX86_BUILTIN_VPSHLDVV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v8si_maskz, "__builtin_ia32_vpshldv_v8si_maskz",

> > IX86_BUILTIN_VPSHLDVV8SI_MASKZ, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4si, "__builtin_ia32_vpshldv_v4si",

> > IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4si_mask, "__builtin_ia32_vpshldv_v4si_mask",

> > IX86_BUILTIN_VPSHLDVV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4si_maskz, "__builtin_ia32_vpshldv_v4si_maskz",

> > IX86_BUILTIN_VPSHLDVV4SI_MASKZ, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di,

> > "__builtin_ia32_vpshldv_v8di", IX86_BUILTIN_VPSHLDVV8DI, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_V8DI)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_mask,

> > "__builtin_ia32_vpshldv_v8di_mask", IX86_BUILTIN_VPSHLDVV8DI_MASK,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_maskz,

> > "__builtin_ia32_vpshldv_v8di_maskz", IX86_BUILTIN_VPSHLDVV8DI_MASKZ,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di,

> > "__builtin_ia32_vpshldv_v4di", IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_mask,

> > "__builtin_ia32_vpshldv_v4di_mask", IX86_BUILTIN_VPSHLDVV4DI_MASK,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_maskz,

> > "__builtin_ia32_vpshldv_v4di_maskz", IX86_BUILTIN_VPSHLDVV4DI_MASKZ,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di,

> > "__builtin_ia32_vpshldv_v2di", IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_mask,

> > "__builtin_ia32_vpshldv_v2di_mask", IX86_BUILTIN_VPSHLDVV2DI_MASK,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_maskz,

> > "__builtin_ia32_vpshldv_v2di_maskz", IX86_BUILTIN_VPSHLDVV2DI_MASKZ,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4di, "__builtin_ia32_vpshldv_v4di",

> > IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4di_mask, "__builtin_ia32_vpshldv_v4di_mask",

> > IX86_BUILTIN_VPSHLDVV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v4di_maskz, "__builtin_ia32_vpshldv_v4di_maskz",

> > IX86_BUILTIN_VPSHLDVV4DI_MASKZ, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v2di, "__builtin_ia32_vpshldv_v2di",

> > IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v2di_mask, "__builtin_ia32_vpshldv_v2di_mask",

> > IX86_BUILTIN_VPSHLDVV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpshldv_v2di_maskz, "__builtin_ia32_vpshldv_v2di_maskz",

> > IX86_BUILTIN_VPSHLDVV2DI_MASKZ, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> >

> >  /* GFNI */

> >  BDESC (OPTION_MASK_ISA_GFNI, CODE_FOR_vgf2p8affineinvqb_v64qi,

> > "__builtin_ia32_vgf2p8affineinvqb_v64qi",

> > IX86_BUILTIN_VGF2P8AFFINEINVQB512, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_INT)

> > @@ -2596,6 +2596,40 @@ BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTI

> >  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX,

> > CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di",

> > IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_INT)

> >  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX512F,

> > CODE_FOR_vpclmulqdq_v8di, "__builtin_ia32_vpclmulqdq_v8di",

> > IX86_BUILTIN_VPCLMULQDQ8, UNKNOWN, (int)

> V8DI_FTYPE_V8DI_V8DI_INT)

> >

> > +/* VPOPCNTDQ */

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv16si,

> > "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv8di,

> > "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_UQI)

> > +

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> > "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> > "__builtin_ia32_vpopcountq_v4di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_UQI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> > "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> > "__builtin_ia32_vpopcountq_v2di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_UQI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> > "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> > "__builtin_ia32_vpopcountd_v4si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> > "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI)

> > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> > "__builtin_ia32_vpopcountd_v8si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_UHI)

> > +

> > +/* BITALG */

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> > "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpopcountv64qi_mask,

> "__builtin_ia32_vpopcountb_v64qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_UDI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv32qi, "__builtin_ia32_vpopcountb_v32qi",

> > IX86_BUILTIN_VPOPCOUNTBV32QI, UNKNOWN, (int) V32QI_FTYPE_V32QI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL

> |

> > OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv32qi_mask,

> > "__builtin_ia32_vpopcountb_v32qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> > V32QI_FTYPE_V32QI_V32QI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv16qi, "__builtin_ia32_vpopcountb_v16qi",

> > IX86_BUILTIN_VPOPCOUNTBV16QI, UNKNOWN, (int) V16QI_FTYPE_V16QI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv16qi_mask,

> "__builtin_ia32_vpopcountb_v16qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> > V16QI_FTYPE_V16QI_V16QI_UHI)

> > +

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> > "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_vpopcountv32hi_mask,

> "__builtin_ia32_vpopcountw_v32hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv16hi, "__builtin_ia32_vpopcountw_v16hi",

> > IX86_BUILTIN_VPOPCOUNTWV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv16hi_mask,

> "__builtin_ia32_vpopcountw_v16hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_UHI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv8hi, "__builtin_ia32_vpopcountw_v8hi",

> > IX86_BUILTIN_VPOPCOUNTWV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_vpopcountv8hi_mask, "__builtin_ia32_vpopcountw_v8hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_UQI)

> > +

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> > "__builtin_ia32_vpshufbitqmb512_mask",

> > IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> > UQI_FTYPE_V8DI_V8DI_UQI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL

> |

> > OPTION_MASK_ISA_AVX512BW,

> CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> > "__builtin_ia32_vpshufbitqmb256_mask",

> > IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> > USI_FTYPE_V4DI_V4DI_USI)

> > +BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> > "__builtin_ia32_vpshufbitqmb128_mask",

> > IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> > UHI_FTYPE_V2DI_V2DI_UHI)

> > +

> >  /* Builtins with rounding support.  */

> >  BDESC_END (ARGS, ROUND_ARGS)

> >

> > @@ -2783,20 +2817,6 @@ BDESC (OPTION_MASK_ISA_AVX5124VNNIW, COD

> >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > CODE_FOR_avx5124vnniw_vp4dpwssd_mask,

> > "__builtin_ia32_vp4dpwssd_mask", IX86_BUILTIN_4DPWSSD_MASK,

> > UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

> >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > CODE_FOR_avx5124vnniw_vp4dpwssds, "__builtin_ia32_vp4dpwssds",

> > IX86_BUILTIN_4DPWSSDS, UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI)

> >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > CODE_FOR_avx5124vnniw_vp4dpwssds_mask,

> > "__builtin_ia32_vp4dpwssds_mask", IX86_BUILTIN_4DPWSSDS_MASK,

> > UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv16si,

> > "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> > UNKNOWN, (int) V16SI_FTYPE_V16SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> > V16SI_FTYPE_V16SI_V16SI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> CODE_FOR_vpopcountv8di,

> > "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> > UNKNOWN, (int) V8DI_FTYPE_V8DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_UQI)

> > -

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> > "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> > UNKNOWN, (int) V4DI_FTYPE_V4DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> > "__builtin_ia32_vpopcountq_v4di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_UQI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> > "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> > UNKNOWN, (int) V2DI_FTYPE_V2DI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> > "__builtin_ia32_vpopcountq_v2di_mask",

> > IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_UQI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> > "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> > UNKNOWN, (int) V4SI_FTYPE_V4SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> > "__builtin_ia32_vpopcountd_v4si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> > V4SI_FTYPE_V4SI_V4SI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> > "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> > UNKNOWN, (int) V8SI_FTYPE_V8SI)

> > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> > "__builtin_ia32_vpopcountd_v8si_mask",

> > IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> > V8SI_FTYPE_V8SI_V8SI_UHI)

> > -

> >

> >  /* RDPID */

> >  BDESC (OPTION_MASK_ISA_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid",

> > IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)

> > @@ -2815,24 +2835,6 @@ BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_va

> >  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v32qi,

> > "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32,

> > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)

> >  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v64qi,

> > "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)

> >

> > -/* BITALG */

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> > "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> > UNKNOWN, (int) V64QI_FTYPE_V64QI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv64qi_mask,

> "__builtin_ia32_vpopcountb_v64qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> > V64QI_FTYPE_V64QI_V64QI_UDI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32qi,

> > "__builtin_ia32_vpopcountb_v32qi", IX86_BUILTIN_VPOPCOUNTBV32QI,

> > UNKNOWN, (int) V32QI_FTYPE_V32QI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv32qi_mask,

> "__builtin_ia32_vpopcountb_v32qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> > V32QI_FTYPE_V32QI_V32QI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16qi,

> > "__builtin_ia32_vpopcountb_v16qi", IX86_BUILTIN_VPOPCOUNTBV16QI,

> > UNKNOWN, (int) V16QI_FTYPE_V16QI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv16qi_mask,

> "__builtin_ia32_vpopcountb_v16qi_mask",

> > IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> > V16QI_FTYPE_V16QI_V16QI_UHI)

> > -

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> > "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> > UNKNOWN, (int) V32HI_FTYPE_V32HI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv32hi_mask,

> "__builtin_ia32_vpopcountw_v32hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> > V32HI_FTYPE_V32HI_V32HI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16hi,

> > "__builtin_ia32_vpopcountw_v16hi", IX86_BUILTIN_VPOPCOUNTWV16HI,

> > UNKNOWN, (int) V16HI_FTYPE_V16HI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv16hi_mask,

> "__builtin_ia32_vpopcountw_v16hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> > V16HI_FTYPE_V16HI_V16HI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi,

> > "__builtin_ia32_vpopcountw_v8hi", IX86_BUILTIN_VPOPCOUNTWV8HI,

> > UNKNOWN, (int) V8HI_FTYPE_V8HI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> CODE_FOR_vpopcountv8hi_mask,

> > "__builtin_ia32_vpopcountw_v8hi_mask",

> > IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_UQI)

> > -

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> > "__builtin_ia32_vpshufbitqmb128_mask",

> > IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> > UHI_FTYPE_V2DI_V2DI_UHI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL,

> > CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> > "__builtin_ia32_vpshufbitqmb256_mask",

> > IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> > USI_FTYPE_V4DI_V4DI_USI)

> > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> > "__builtin_ia32_vpshufbitqmb512_mask",

> > IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> > UQI_FTYPE_V8DI_V8DI_UQI)

> >  BDESC_END (ARGS2, MPX)

> >

> >  /* Builtins for MPX.  */

> > --- gcc/config/i386/avx512vbmi2intrin.h.jj	2017-11-30

> > 09:42:46.000000000 +0100

> > +++ gcc/config/i386/avx512vbmi2intrin.h	2017-12-22

> > 17:37:50.395929142 +0100

> > @@ -28,127 +28,11 @@

> >  #ifndef __AVX512VBMI2INTRIN_H_INCLUDED

> >  #define __AVX512VBMI2INTRIN_H_INCLUDED

> >

> > -#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> > +#if !defined(__AVX512VBMI2__)

> >  #pragma GCC push_options

> > -#pragma GCC target("avx512vbmi2,avx512bw")

> > -#define __DISABLE_AVX512VBMI2BW__

> > -#endif /* __AVX512VBMI2BW__ */

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i

> __C)

> > -{

> > -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> > -						(__v64qi)__A,

> > (__mmask64)__B);

> > -}

> > -

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> > -{

> > -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> > -			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> > -}

> > -

> > -

> > -extern __inline void

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i

> > __C)

> > -{

> > -  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,

> > -							(__mmask64) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i

> __C)

> > -{

> > -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> > -						(__v32hi)__A,

> > (__mmask32)__B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> > -{

> > -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> > -			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> > -}

> > -

> > -extern __inline void

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B,

> __m512i

> > __C)

> > -{

> > -  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,

> > -							(__mmask32) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> > -{

> > -  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> > -						    (__v64qi) __A,

> > -						    (__mmask64) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> > -{

> > -  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> > -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const

> void

> > * __C)

> > -{

> > -  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> > __C,

> > -					(__v64qi) __A, (__mmask64) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> > -{

> > -  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *)

> > __B,

> > -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)

> > -{

> > -  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> > -						    (__v32hi) __A,

> > -						    (__mmask32) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> > -{

> > -  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> > -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const

> void

> > * __C)

> > -{

> > -  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> > __C,

> > -					(__v32hi) __A, (__mmask32) __B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> > -{

> > -  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *)

> > __B,

> > -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > -}

> > +#pragma GCC target("avx512vbmi2")

> > +#define __DISABLE_AVX512VBMI2__

> > +#endif /* __AVX512VBMI2__ */

> >

> >  #ifdef __OPTIMIZE__

> >  extern __inline __m512i

> > @@ -161,23 +45,6 @@ _mm512_shrdi_epi16 (__m512i __A, __m512i

> >

> >  extern __inline __m512i

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D,

> > -								int __E)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> > -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> int

> > __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> > -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > (__mmask32)__A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> >  _mm512_shrdi_epi32 (__m512i __A, __m512i __B, int __C)

> >  {

> >    return (__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)__A, (__v16si) __B,

> > @@ -235,23 +102,6 @@ _mm512_shldi_epi16 (__m512i __A, __m512i

> >

> >  extern __inline __m512i

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D,

> > -								int __E)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> > -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> int

> > __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> > -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > (__mmask32)__A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> >  _mm512_shldi_epi32 (__m512i __A, __m512i __B, int __C)

> >  {

> >    return (__m512i) __builtin_ia32_vpshld_v16si ((__v16si)__A, (__v16si) __B,

> > @@ -302,13 +152,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

> >  #define _mm512_shrdi_epi16(A, B, C) \

> >    ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \

> >  						(__v32hi)(__m512i)(B),(int)(C))

> > -#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> > -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> > -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > -#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> > -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> > -	(__v32hi)(__m512i)(C),(int)(D), \

> > -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> >  #define _mm512_shrdi_epi32(A, B, C) \

> >    ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \

> >  	(__v16si)(__m512i)(B),(int)(C))

> > @@ -332,13 +175,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

> >  #define _mm512_shldi_epi16(A, B, C) \

> >    ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \

> >  						(__v32hi)(__m512i)(B),(int)(C))

> > -#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> > -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> > -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > -#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> > -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> > -	(__v32hi)(__m512i)(C),(int)(D), 				\

> > -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> >  #define _mm512_shldi_epi32(A, B, C) \

> >    ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A), 	\

> >  				(__v16si)(__m512i)(B),(int)(C))

> > @@ -371,22 +207,6 @@ _mm512_shrdv_epi16 (__m512i __A, __m512i

> >

> >  extern __inline __m512i

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> > -				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > __m512i __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> > -				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> >  _mm512_shrdv_epi32 (__m512i __A, __m512i __B, __m512i __C)

> >  {

> >    return (__m512i) __builtin_ia32_vpshrdv_v16si ((__v16si)__A, (__v16si) __B,

> > @@ -442,22 +262,6 @@ _mm512_shldv_epi16 (__m512i __A, __m512i

> >

> >  extern __inline __m512i

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> > -				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__B);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > __m512i __D)

> > -{

> > -  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> > -				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__A);

> > -}

> > -

> > -extern __inline __m512i

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> >  _mm512_shldv_epi32 (__m512i __A, __m512i __B, __m512i __C)

> >  {

> >    return (__m512i) __builtin_ia32_vpshldv_v16si ((__v16si)__A, (__v16si) __B,

> > @@ -504,6 +308,218 @@ _mm512_maskz_shldv_epi64 (__mmask8 __A,

> >  						(__v8di) __D, (__mmask8)__A);

> >  }

> >

> > +#ifdef __DISABLE_AVX512VBMI2__

> > +#undef __DISABLE_AVX512VBMI2__

> > +

> > +#pragma GCC pop_options

> > +#endif /* __DISABLE_AVX512VBMI2__ */

> > +

> > +#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> > +#pragma GCC push_options

> > +#pragma GCC target("avx512vbmi2,avx512bw")

> > +#define __DISABLE_AVX512VBMI2BW__

> > +#endif /* __AVX512VBMI2BW__ */

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i

> __C)

> > +{

> > +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> > +						(__v64qi)__A,

> > (__mmask64)__B);

> > +}

> > +

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> > +{

> > +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> > +			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> > +}

> > +

> > +

> > +extern __inline void

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i

> > __C)

> > +{

> > +  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,

> > +							(__mmask64) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i

> > __C)

> > +{

> > +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> > +						(__v32hi)__A,

> > (__mmask32)__B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> > +{

> > +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> > +			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> > +}

> > +

> > +extern __inline void

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B,

> __m512i

> > __C)

> > +{

> > +  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,

> > +							(__mmask32) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> > +{

> > +  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> > +						    (__v64qi) __A,

> > +						    (__mmask64) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> > +{

> > +  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> > +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const

> void

> > * __C)

> > +{

> > +  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> > __C,

> > +					(__v64qi) __A, (__mmask64) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> > +{

> > +  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *)

> > __B,

> > +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)

> > +{

> > +  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> > +						    (__v32hi) __A,

> > +						    (__mmask32) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> > +{

> > +  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> > +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const

> > void * __C)

> > +{

> > +  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> > __C,

> > +					(__v32hi) __A, (__mmask32) __B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> > +{

> > +  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *)

> > __B,

> > +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > +}

> > +

> > +#ifdef __OPTIMIZE__

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D,

> > +								int __E)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> > +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> int

> > __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> > +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > (__mmask32)__A);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D,

> > +								int __E)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> > +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> int

> > __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> > +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > (__mmask32)__A);

> > +}

> > +

> > +#else

> > +#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> > +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> > +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > +#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> > +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> > +	(__v32hi)(__m512i)(C),(int)(D), \

> > +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > +#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> > +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> > +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > +#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> > +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> > +	(__v32hi)(__m512i)(C),(int)(D), 				\

> > +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > +#endif

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> > +				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > __m512i __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> > +				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__A);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > __m512i __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> > +				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__B);

> > +}

> > +

> > +extern __inline __m512i

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > __m512i __D)

> > +{

> > +  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> > +				(__v32hi) __C, (__v32hi) __D,

> > (__mmask32)__A);

> > +}

> > +

> >  #ifdef __DISABLE_AVX512VBMI2BW__

> >  #undef __DISABLE_AVX512VBMI2BW__

> >

> > --- gcc/config/i386/avx512bitalgintrin.h.jj	2017-12-22

> > 14:00:04.000000000 +0100

> > +++ gcc/config/i386/avx512bitalgintrin.h	2017-12-22

> > 17:39:52.615409924 +0100

> > @@ -143,23 +143,6 @@ _mm256_maskz_popcnt_epi8 (__mmask32 __U,

> >  						 _mm256_setzero_si256 (),

> >  						(__mmask32) __U);

> >  }

> > -extern __inline __mmask16

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> > -{

> > -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > -						 (__v2di) __B,

> > -						 (__mmask16) -1);

> > -}

> > -

> > -extern __inline __mmask16

> > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > -_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A, __m128i

> > __B)

> > -{

> > -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > -						 (__v2di) __B,

> > -						 (__mmask16) __M);

> > -}

> >

> >  extern __inline __mmask32

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > @@ -191,6 +174,24 @@ _mm256_mask_bitshuffle_epi64_mask (__mma

> >  #define __DISABLE_AVX512BITALGVL__

> >  #endif /* __AVX512VLBW__ */

> >

> > +extern __inline __mmask16

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> > +{

> > +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > +						 (__v2di) __B,

> > +						 (__mmask16) -1);

> > +}

> > +

> > +extern __inline __mmask16

> > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > +_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A,

> __m128i

> > __B)

> > +{

> > +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > +						 (__v2di) __B,

> > +						 (__mmask16) __M);

> > +}

> > +

> >  extern __inline __m256i

> >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> >  _mm256_popcnt_epi8 (__m256i __A)

> > --- gcc/common/config/i386/i386-common.c.jj	2017-12-22

> > 14:00:03.000000000 +0100

> > +++ gcc/common/config/i386/i386-common.c	2017-12-22

> > 15:09:07.875074385 +0100

> > @@ -84,8 +84,10 @@ along with GCC; see the file COPYING3.

> >    (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)

> >  #define OPTION_MASK_ISA_AVX512VNNI_SET \

> >    (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)

> > -#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ

> > -#define OPTION_MASK_ISA_AVX512BITALG_SET

> > OPTION_MASK_ISA_AVX512BITALG

> > +#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \

> > +  (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > OPTION_MASK_ISA_AVX512F_SET)

> > +#define OPTION_MASK_ISA_AVX512BITALG_SET \

> > +  (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512F_SET)

> >  #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM

> >  #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW

> >  #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED

> > @@ -187,7 +189,8 @@ along with GCC; see the file COPYING3.

> >     | OPTION_MASK_ISA_AVX512PF_UNSET |

> > OPTION_MASK_ISA_AVX512ER_UNSET \

> >     | OPTION_MASK_ISA_AVX512DQ_UNSET |

> > OPTION_MASK_ISA_AVX512BW_UNSET \

> >     | OPTION_MASK_ISA_AVX512VL_UNSET |

> > OPTION_MASK_ISA_AVX512VBMI2_UNSET \

> > -   | OPTION_MASK_ISA_AVX512VNNI_UNSET)

> > +   | OPTION_MASK_ISA_AVX512VNNI_UNSET |

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \

> > +   | OPTION_MASK_ISA_AVX512BITALG_UNSET)

> >  #define OPTION_MASK_ISA_AVX512CD_UNSET

> OPTION_MASK_ISA_AVX512CD

> >  #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF

> >  #define OPTION_MASK_ISA_AVX512ER_UNSET

> OPTION_MASK_ISA_AVX512ER

> > @@ -257,6 +260,11 @@ along with GCC; see the file COPYING3.

> >    (OPTION_MASK_ISA_MMX_UNSET \

> >     | OPTION_MASK_ISA_SSE_UNSET)

> >

> > +#define OPTION_MASK_ISA2_AVX512F_UNSET \

> > +  (OPTION_MASK_ISA_AVX5124FMAPS_UNSET |

> > OPTION_MASK_ISA_AVX5124VNNIW_UNSET)

> > +#define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \

> > +  (OPTION_MASK_ISA2_AVX512F_UNSET | OPTION_MASK_ISA_MPX)

> > +

> >  /* Implement TARGET_HANDLE_OPTION.  */

> >

> >  bool

> > @@ -278,11 +286,11 @@ ix86_handle_option (struct gcc_options *

> >  	  opts->x_ix86_isa_flags

> >  	    &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

> >  	  opts->x_ix86_isa_flags2

> > -	    &= ~OPTION_MASK_ISA_MPX;

> > +	    &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit

> >  	    |= OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

> >  	  opts->x_ix86_isa_flags2_explicit

> > -	    |= OPTION_MASK_ISA_MPX;

> > +	    |= OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

> >

> >  	  opts->x_target_flags &= ~MASK_80387;

> >  	}

> > @@ -339,6 +347,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -352,6 +362,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -365,6 +377,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -378,6 +392,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -391,6 +407,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -404,6 +422,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -417,6 +437,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -430,6 +452,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -443,20 +467,8 @@ ix86_handle_option (struct gcc_options *

> >  	{

> >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;

> >  	  opts->x_ix86_isa_flags_explicit |=

> > OPTION_MASK_ISA_AVX512F_UNSET;

> > -

> > -	  /* Turn off additional isa flags.  */

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit

> > -		|= OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit

> > -		|= OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit

> > -		|= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit

> > -		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> >  	}

> >        return true;

> >

> > @@ -639,30 +651,28 @@ ix86_handle_option (struct gcc_options *

> >      case OPT_mavx512vpopcntdq:

> >        if (value)

> >  	{

> > -	  opts->x_ix86_isa_flags2 |=

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > -	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> > -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> > +	  opts->x_ix86_isa_flags |=

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > +	  opts->x_ix86_isa_flags_explicit

> > +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> >  	}

> >        else

> >  	{

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > +	  opts->x_ix86_isa_flags &=

> > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > +	  opts->x_ix86_isa_flags_explicit

> > +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> >  	}

> >        return true;

> >

> >      case OPT_mavx512bitalg:

> >        if (value)

> >  	{

> > -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512BITALG_SET;

> > -	  opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA_AVX512BITALG_SET;

> > -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> > -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> > +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;

> > +	  opts->x_ix86_isa_flags_explicit |=

> > OPTION_MASK_ISA_AVX512BITALG_SET;

> >  	}

> >        else

> >  	{

> > -	  opts->x_ix86_isa_flags2 &=

> > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > -	  opts->x_ix86_isa_flags2_explicit

> > +	  opts->x_ix86_isa_flags &=

> > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > +	  opts->x_ix86_isa_flags_explicit

> >  		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

> >  	}

> >        return true;

> > @@ -779,6 +789,8 @@ ix86_handle_option (struct gcc_options *

> >      case OPT_mno_sse4:

> >        opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;

> >        opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;

> > +      opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > +      opts->x_ix86_isa_flags2_explicit |=

> OPTION_MASK_ISA2_AVX512F_UNSET;

> >        return true;

> >

> >      case OPT_msse4a:

> >

> >

> > 	Jakub
Koval, Julia Jan. 12, 2018, 8:55 a.m. | #4
Changelog

gcc/
	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
	_mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
	_mm_mask_bitshuffle_epi64_mask): Fix type.
	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
	USI_FTYPE_V4DI_V4DI_USI): Remove.
	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
	__builtin_ia32_vpshufbitqmb256_mask,
	__builtin_ia32_vpshufbitqmb128_mask): Fix types.
	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
	* config/i386/sse.md (VI48_AVX512VLBW): Change types.

gcc/testsuite/
	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -mavx512bw.
	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.
	* gcc.target/i386/i386.exp: Fix types.

> -----Original Message-----

> From: Koval, Julia

> Sent: Wednesday, January 10, 2018 11:51 AM

> To: 'Jakub Jelinek' <jakub@redhat.com>; 'Kirill Yukhin'

> <kirill.yukhin@gmail.com>; 'Uros Bizjak' <ubizjak@gmail.com>

> Cc: 'GCC Patches' <gcc-patches@gcc.gnu.org>

> Subject: RE: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR

> target/83488)

> 

> Hi,

> 

> What do you think about changing these types to UHI_FTYPE_V16QI_V16QI_UHI

> and so on?

> In docs it is (KL, VL) = (16,128), (32,256), (64, 512) - so looks like this is where the

> error was from the start.

> Here is the patch.

> 

> Thanks,

> Julia

> 

> > -----Original Message-----

> > From: Koval, Julia

> > Sent: Monday, December 25, 2017 1:01 PM

> > To: Jakub Jelinek <jakub@redhat.com>; Kirill Yukhin

> <kirill.yukhin@gmail.com>;

> > Uros Bizjak <ubizjak@gmail.com>

> > Cc: GCC Patches <gcc-patches@gcc.gnu.org>

> > Subject: RE: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues

> (PR

> > target/83488)

> >

> > Thank you very much for fixing those issues.

> >

> > Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented

> > > incorrectly, can somebody from Intel handle that?  The inlines in the

> > > intrinsic header look correct, but the builtins aren't and what's even worse

> > > is that the define_insns are wrong too.  According to the documentation

> > > and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> > > also __mmask{16,32,64} output mask.  The builtins use

> > > UHI_FTYPE_V2DI_V2DI_UHI

> > > USI_FTYPE_V4DI_V4DI_USI

> > > UQI_FTYPE_V8DI_V8DI_UQI

> > > types (first two are correct, the last one is wrong, should have been

> > > UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V2DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :HI result and :HI mask input),

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V4DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :SI result and :SI mask input),

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V8DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :DI result and :DI mask input).  Similarly the

> > > non-masked patterns, where just the result is incorrect, not the operand 3

> > > which doesn't exist).  I'll file a PR to track this.

> >

> > I'll fix that.

> >

> > Thanks,

> > Julia

> >

> > > -----Original Message-----

> > > From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-

> > > owner@gcc.gnu.org] On Behalf Of Jakub Jelinek

> > > Sent: Friday, December 22, 2017 7:40 PM

> > > To: Kirill Yukhin <kirill.yukhin@gmail.com>; Uros Bizjak

> <ubizjak@gmail.com>

> > > Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-

> > > patches@gcc.gnu.org>

> > > Subject: [PATCH] Fix various x86 avx512{bitalg,vpopcntdq,vbmi2} issues (PR

> > > target/83488)

> > >

> > > On Fri, Dec 22, 2017 at 03:38:03PM +0300, Kirill Yukhin wrote:

> > > > Hello, Julia,

> > > > On 12 Nov 12:51, Koval, Julia wrote:

> > > > > Hi, this patch enables AVX512BITALG and AVX512VPOPCNTDQ

> instructions

> > > from

> > > https://software.intel.com/sites/default/files/managed/c5/15/architecture-

> > > instruction-set-extensions-programming-reference.pdf. Ok for trunk?

> > > > OK for trunk. I've checked it in.

> > >

> > > Unfortunately, there are various issues in this patch as well as earlier

> > > vbmi2 support.

> > >

> > > 1) as for various AVX512BITALG and AVX512VPOPCNTDQ builtins we need

> not

> > > just

> > > that ISA, but also AVX512VL or AVX512BW or both, these two ISAs need to

> be

> > > moved over from ix86_isa_flags2 to ix86_isa_flags.

> > > 2) while the PDF doesn't say that explicitly, for builtins that map to

> > > hw insns that don't have AVX512BW listed as CPUID, if they use (or set)

> > > 32-bit or 64-bit %k? mask register, we need AVX512BW for the builtin,

> > > because otherwise we get ICEs when LRA is trying to load (or store) the

> > > 32-bit or 64-bit %k? mask register.  Most of the intrin*.h headers got the

> > > requirements right (but see below), but not i386-builtins.def, so using

> > > intrin headers was fine, but using builtins directly resulted in numerous

> > > ICEs.

> > > 3) some builtins where the define_insns were requiring AVX512VL didn't have

> > > that requirement on the builtins, so again, numerous ICEs when using the

> > > builtins directly.

> > > 4) for some builtins the intrin headers were uselessly requiring avx512bw

> > > even when it wasn't needed at all (either when they don't have any mask

> > > argument or when they have an 8-bit or 16-bit only mask).

> > > 5) the def_builtin/ix86_expand_builtin stuff didn't handle

> > > OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512BW or

> > > OPTION_MASK_ISA_something | OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW

> > > right (while the VL is handled there as "require the other ISAs and VL",

> > > for BW we don't do that).  There were some hacks for GFNI and

> > VPCLMULQDQ,

> > > but incomplete and I think it is far better to treat BW and F like VL

> > > instead of those 2.  Plus we can improve stuff in def_builtin by only doing

> > > this special handling if the whole mask isn't a single bit mask, then there

> > > is no reason for just not requiring the isa.

> > > 6) in i386-common.c I've noticed a major problem, for the new avx512

> > > extensions that live in flags2 rather than flags (after this patch it is

> > > just avx5124fmaps and avx512vnniw), doing say -mavx5124fmaps -mno-

> > avx512f

> > > would properly disable -mavx5124fmaps, but doing -mavx5124fmaps -mno-

> > avx2

> > > or -mavx5124fmaps -mno-sse etc. would not, again leading to numerous

> ICEs.

> > >

> > > Starting bootstrap/regtest on x86_64-linux and i686-linux right now, ok for

> > > trunk if it passes?

> > >

> > > Note, __builtin_ia32_vpshufbitqmb{128,256,512}_mask are implemented

> > > incorrectly, can somebody from Intel handle that?  The inlines in the

> > > intrinsic header look correct, but the builtins aren't and what's even worse

> > > is that the define_insns are wrong too.  According to the documentation

> > > and inline fn, the intrinsics have an __mmask{16,32,64} input mask and

> > > also __mmask{16,32,64} output mask.  The builtins use

> > > UHI_FTYPE_V2DI_V2DI_UHI

> > > USI_FTYPE_V4DI_V4DI_USI

> > > UQI_FTYPE_V8DI_V8DI_UQI

> > > types (first two are correct, the last one is wrong, should have been

> > > UDI_FTYPE_V8DI_V8DI_UDI), and the define_insn has:

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V2DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V2DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :HI result and :HI mask input),

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V4DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V4DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :SI result and :SI mask input),

> > >         (set (match_operand:QI 0 ("register_operand") ("=Yk"))

> > >             (and:QI (unspec:QI [

> > >                         (match_operand:V8DI 1 ("register_operand") ("v"))

> > >                         (match_operand:V8DI 2 ("nonimmediate_operand") ("vm"))

> > >                     ] 214)

> > >                 (match_operand:QI 3 ("register_operand") ("Yk"))))

> > > (incorrect, should use :DI result and :DI mask input).  Similarly the

> > > non-masked patterns, where just the result is incorrect, not the operand 3

> > > which doesn't exist).  I'll file a PR to track this.

> > >

> > > 2017-12-22  Jakub Jelinek  <jakub@redhat.com>

> > >

> > > 	PR target/83488

> > > 	* config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move

> > > from

> > > 	ix86_isa_flags2 to ix86_isa_flags.

> > > 	* config/i386/i386-c.c (ix86_target_macros_internal): Test

> > > 	OPTION_MASK_ISA_AVX512BITALG and

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ in

> > > 	isa_flags rather than isa_flags2.

> > > 	* config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq

> > > 	and -mavx512bitalg from isa2_opts to isa_opts.

> > > 	(ix86_option_override_internal): Test

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ

> > > 	in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit

> > > 	and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.

> > > 	Formatting fixes.

> > > 	(def_builtin): Treat OPTION_MASK_ISA_AVX512BW or

> > > 	OPTION_MASK_ISA_AVX512F ored with another option similarly to

> > > 	OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL

> > > don't

> > > 	clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.

> > > 	(ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and

> > > 	OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle

> > > 	OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that

> > > way.

> > > 	* config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and

> > > AVX512BITALG

> > > 	builtins from bdesc_args2 to bdesc_args section.

> > > 	(__builtin_ia32_compressstoreuqi512_mask,

> > > 	__builtin_ia32_compressstoreuhi512_mask,

> > > 	__builtin_ia32_compressstoreuqi256_mask,

> > > 	__builtin_ia32_expandloadqi512_mask,

> > > 	__builtin_ia32_expandloadqi512_maskz,

> > > 	__builtin_ia32_expandloadhi512_mask,

> > > 	__builtin_ia32_expandloadhi512_maskz,

> > > 	__builtin_ia32_compressqi512_mask,

> > > __builtin_ia32_compresshi512_mask,

> > > 	__builtin_ia32_compressqi256_mask,

> > > __builtin_ia32_expandqi512_mask,

> > > 	__builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,

> > > 	__builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,

> > > 	__builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,

> > > 	__builtin_ia32_vpshld_v32hi_mask,

> > > __builtin_ia32_vpshrdv_v32hi_mask,

> > > 	__builtin_ia32_vpshrdv_v32hi_maskz,

> > > __builtin_ia32_vpshldv_v32hi_mask,

> > > 	__builtin_ia32_vpshldv_v32hi_maskz,

> > > 	__builtin_ia32_vpopcountb_v64qi_mask,

> > > 	__builtin_ia32_vpopcountw_v32hi_mask,

> > > 	__builtin_ia32_vpshufbitqmb512_mask,

> > > 	__builtin_ia32_vpshufbitqmb256_mask): Add

> > > 	" | OPTION_MASK_ISA_AVX512BW".

> > > 	(__builtin_ia32_expandloadqi256_mask,

> > > 	__builtin_ia32_expandloadqi256_maskz,

> > > 	__builtin_ia32_vpopcountb_v32qi_mask): Add

> > > 	" | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".

> > > 	(__builtin_ia32_expandloadhi256_mask,

> > > 	__builtin_ia32_expandloadhi256_maskz,

> > > 	__builtin_ia32_expandloadqi128_mask,

> > > 	__builtin_ia32_expandloadqi128_maskz,

> > > 	__builtin_ia32_expandloadhi128_mask,

> > > 	__builtin_ia32_expandloadhi128_maskz,

> > > 	__builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,

> > > 	__builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,

> > > 	__builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,

> > > 	__builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,

> > > 	__builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,

> > > 	__builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,

> > > 	__builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,

> > > 	__builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,

> > > 	__builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,

> > > 	__builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,

> > > 	__builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,

> > > 	__builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,

> > > 	__builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,

> > > 	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,

> > > 	__builtin_ia32_vpshrdv_v8hi_mask,

> > > __builtin_ia32_vpshrdv_v8hi_maskz,

> > > 	__builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,

> > > 	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,

> > > 	__builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,

> > > 	__builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,

> > > 	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,

> > > 	__builtin_ia32_vpshrdv_v2di_mask,

> > > __builtin_ia32_vpshrdv_v2di_maskz,

> > > 	__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,

> > > 	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,

> > > 	__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,

> > > 	__builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,

> > > 	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,

> > > 	__builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,

> > > 	__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,

> > > 	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,

> > > 	__builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,

> > > 	__builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,

> > > 	__builtin_ia32_vpopcountb_v16qi_mask,

> > > __builtin_ia32_vpopcountw_v16hi,

> > > 	__builtin_ia32_vpopcountw_v16hi_mask,

> > > __builtin_ia32_vpopcountw_v8hi,

> > > 	__builtin_ia32_vpopcountw_v8hi_mask): Add

> > > 	" | OPTION_MASK_ISA_AVX512VL".

> > > 	* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,

> > > 	_mm512_shrdi_epi32, _mm512_mask_shrdi_epi32,

> > > _mm512_maskz_shrdi_epi32,

> > > 	_mm512_shrdi_epi64, _mm512_mask_shrdi_epi64,

> > > _mm512_maskz_shrdi_epi64,

> > > 	_mm512_shldi_epi16, _mm512_shldi_epi32,

> > > _mm512_mask_shldi_epi32,

> > > 	_mm512_maskz_shldi_epi32, _mm512_shldi_epi64,

> > > _mm512_mask_shldi_epi64,

> > > 	_mm512_maskz_shldi_epi64, _mm512_shrdv_epi16,

> > > _mm512_shrdv_epi32,

> > > 	_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32,

> > > _mm512_shrdv_epi64,

> > > 	_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64,

> > > _mm512_shldv_epi16,

> > > 	_mm512_shldv_epi32, _mm512_mask_shldv_epi32,

> > > _mm512_maskz_shldv_epi32,

> > > 	_mm512_shldv_epi64, _mm512_mask_shldv_epi64,

> > > 	_mm512_maskz_shldv_epi64): Don't require avx512bw for these

> > > intrinsics.

> > > 	* config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,

> > > 	_mm_mask_bitshuffle_epi64_mask): Likewise.

> > > 	* common/config/i386/i386-common.c

> > > 	(OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,

> > > 	OPTION_MASK_ISA_AVX512BITALG_SET): Or in

> > > OPTION_MASK_ISA_AVX512F_SET.

> > > 	(OPTION_MASK_ISA_AVX512F_UNSET): Or in

> > > 	OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and

> > > 	OPTION_MASK_ISA_AVX512BITALG_UNSET.

> > > 	(OPTION_MASK_ISA2_AVX512F_UNSET,

> > > 	OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.

> > > 	(ix86_handle_option): For -mno-general-regs-only, clear from

> > > 	ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET

> > > rather than

> > > 	just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2}

> > > and

> > > 	-mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from

> > > 	ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking

> > > 	individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust

> > > 	for moving from ix86_isa_flags2 to ix86_isa_flags.

> > >

> > > --- gcc/config/i386/i386.opt.jj	2017-12-22 14:00:04.000000000 +0100

> > > +++ gcc/config/i386/i386.opt	2017-12-22 14:18:30.113511523 +0100

> > > @@ -734,7 +734,7 @@ Target Report Mask(ISA_AVX5124VNNIW) Var

> > >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> > and

> > > AVX5124VNNIW built-in functions and code generation.

> > >

> > >  mavx512vpopcntdq

> > > -Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags2) Save

> > > +Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save

> > >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> > and

> > > AVX512VPOPCNTDQ built-in functions and code generation.

> > >

> > >  mavx512vbmi2

> > > @@ -746,7 +746,7 @@ Target Report Mask(ISA_AVX512VNNI) Var(i

> > >  Support AVX512VNNI built-in functions and code generation.

> > >

> > >  mavx512bitalg

> > > -Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags2) Save

> > > +Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save

> > >  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F

> > and

> > > AVX512BITALG built-in functions and code generation.

> > >

> > >  mfma

> > > --- gcc/config/i386/i386-c.c.jj	2017-12-22 14:00:04.000000000 +0100

> > > +++ gcc/config/i386/i386-c.c	2017-12-22 14:22:54.154146866 +0100

> > > @@ -402,9 +402,9 @@ ix86_target_macros_internal (HOST_WIDE_I

> > >      def_or_undef (parse_in, "__SGX__");

> > >    if (isa_flag2 & OPTION_MASK_ISA_AVX5124FMAPS)

> > >      def_or_undef (parse_in, "__AVX5124FMAPS__");

> > > -  if (isa_flag2 & OPTION_MASK_ISA_AVX512BITALG)

> > > +  if (isa_flag & OPTION_MASK_ISA_AVX512BITALG)

> > >      def_or_undef (parse_in, "__AVX512BITALG__");

> > > -  if (isa_flag2 & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

> > > +  if (isa_flag & OPTION_MASK_ISA_AVX512VPOPCNTDQ)

> > >      def_or_undef (parse_in, "__AVX512VPOPCNTDQ__");

> > >    if (isa_flag & OPTION_MASK_ISA_FMA)

> > >      def_or_undef (parse_in, "__FMA__");

> > > --- gcc/config/i386/i386.c.jj	2017-12-22 14:00:04.000000000 +0100

> > > +++ gcc/config/i386/i386.c	2017-12-22 15:52:29.345353491 +0100

> > > @@ -2758,16 +2758,16 @@ ix86_target_string (HOST_WIDE_INT isa, H

> > >      { "-msgx",		OPTION_MASK_ISA_SGX },

> > >      { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },

> > >      { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },

> > > -    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

> > >      { "-mibt",		OPTION_MASK_ISA_IBT },

> > >      { "-mhle",		OPTION_MASK_ISA_HLE },

> > >      { "-mmovbe",	OPTION_MASK_ISA_MOVBE },

> > >      { "-mclzero",	OPTION_MASK_ISA_CLZERO },

> > > -    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX },

> > > -    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG }

> > > +    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX }

> > >    };

> > >    static struct ix86_target_opts isa_opts[] =

> > >    {

> > > +    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },

> > > +    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG },

> > >      { "-mvpclmulqdq",	OPTION_MASK_ISA_VPCLMULQDQ },

> > >      { "-mgfni",		OPTION_MASK_ISA_GFNI },

> > >      { "-mavx512vnni",	OPTION_MASK_ISA_AVX512VNNI },

> > > @@ -4104,14 +4104,17 @@ ix86_option_override_internal (bool main

> > >  	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA;

> > >

> > >  	if (processor_alias_table[i].flags & PTA_AVX5124VNNIW

> > > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > > OPTION_MASK_ISA_AVX5124VNNIW))

> > > +	    && !(opts->x_ix86_isa_flags2_explicit

> > > +		 & OPTION_MASK_ISA_AVX5124VNNIW))

> > >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124VNNIW;

> > >  	if (processor_alias_table[i].flags & PTA_AVX5124FMAPS

> > > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > > OPTION_MASK_ISA_AVX5124FMAPS))

> > > +	    && !(opts->x_ix86_isa_flags2_explicit

> > > +		 & OPTION_MASK_ISA_AVX5124FMAPS))

> > >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124FMAPS;

> > >  	if (processor_alias_table[i].flags & PTA_AVX512VPOPCNTDQ

> > > -	    && !(opts->x_ix86_isa_flags2_explicit &

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> > > -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

> > > +	    && !(opts->x_ix86_isa_flags_explicit

> > > +		 & OPTION_MASK_ISA_AVX512VPOPCNTDQ))

> > > +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;

> > >  	if (processor_alias_table[i].flags & PTA_SGX

> > >  	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_SGX))

> > >  	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_SGX;

> > > @@ -29795,13 +29798,21 @@ def_builtin (HOST_WIDE_INT mask, const c

> > >      {

> > >        ix86_builtins_isa[(int) code].isa = mask;

> > >

> > > -      /* OPTION_MASK_ISA_AVX512VL has special meaning. Despite of

> generic

> > > case,

> > > -	 where any bit set means that built-in is enable, this bit must be *and-

> > > ed*

> > > -	 with another one. E.g.: OPTION_MASK_ISA_AVX512DQ |

> > > OPTION_MASK_ISA_AVX512VL

> > > -	 means that *both* cpuid bits must be set for the built-in to be available.

> > > -	 Handle this here.  */

> > > -      if (mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> > > +      /* OPTION_MASK_ISA_AVX512{F,VL,BW} have special meaning. Despite

> > of

> > > +	 generic case, where any bit set means that built-in is enable, this

> > > +	 bit must be *and-ed* with another one. E.g.:

> > > +	 OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL

> > > +	 means that *both* cpuid bits must be set for the built-in to

> > > +	 be available. Handle this here.  */

> > > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)

> > > +	  && mask != OPTION_MASK_ISA_AVX512VL)

> > >  	mask &= ~OPTION_MASK_ISA_AVX512VL;

> > > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512BW)

> > > +	  && mask != OPTION_MASK_ISA_AVX512BW)

> > > +	mask &= ~OPTION_MASK_ISA_AVX512BW;

> > > +      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512F)

> > > +	  && mask != OPTION_MASK_ISA_AVX512F)

> > > +	mask &= ~OPTION_MASK_ISA_AVX512F;

> > >

> > >        mask &= ~OPTION_MASK_ISA_64BIT;

> > >        if (mask == 0

> > > @@ -35364,25 +35375,28 @@ ix86_expand_builtin (tree exp, rtx targe

> > >       Originally the builtin was not created if it wasn't applicable to the

> > >       current ISA based on the command line switches.  With function specific

> > >       options, we need to check in the context of the function making the call

> > > -     whether it is supported.  Treat AVX512VL and MMX specially.  For other

> > > flags,

> > > -     if isa includes more than one ISA bit, treat those are requiring any

> > > -     of them.  For AVX512VL, require both AVX512VL and the non-AVX512VL

> > > -     ISAs.  Likewise for MMX, require both MMX and the non-MMX ISAs.

> > > +     whether it is supported.  Treat AVX512{VL,BW,F} and MMX specially.  For

> > > +     other flags, if isa includes more than one ISA bit, treat those are

> > > +     requiring any of them.  For AVX512VL, require both AVX512VL and the

> > > +     non-AVX512VL ISAs.  Likewise for MMX, require both MMX and the non-

> > > MMX

> > > +     ISAs.  Similarly for AVX512F and AVX512BW.

> > >       Similarly for 64BIT, but we shouldn't be building such builtins

> > >       at all, -m64 is a whole TU option.  */

> > >    if (((ix86_builtins_isa[fcode].isa

> > >  	& ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> > > -	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> > > -	    | OPTION_MASK_ISA_VPCLMULQDQ))

> > > +	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> > > +	    | OPTION_MASK_ISA_AVX512F))

> > >         && !(ix86_builtins_isa[fcode].isa

> > >  	    & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX

> > > -		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI

> > > -		| OPTION_MASK_ISA_VPCLMULQDQ)

> > > +		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW

> > > +		| OPTION_MASK_ISA_AVX512F)

> > >  	    & ix86_isa_flags))

> > >        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)

> > >  	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL))

> > > -      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_GFNI)

> > > -	  && !(ix86_isa_flags & OPTION_MASK_ISA_GFNI))

> > > +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512BW)

> > > +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512BW))

> > > +      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512F)

> > > +	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512F))

> > >        || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_MMX)

> > >  	  && !(ix86_isa_flags & OPTION_MASK_ISA_MMX))

> > >        || (ix86_builtins_isa[fcode].isa2

> > > --- gcc/config/i386/i386-builtin.def.jj	2017-12-22 14:03:05.000000000 +0100

> > > +++ gcc/config/i386/i386-builtin.def	2017-12-22 18:00:12.579239678 +0100

> > > @@ -393,27 +393,27 @@ BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_rdp

> > >  BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_wrpkru,

> > "__builtin_ia32_wrpkru",

> > > IX86_BUILTIN_WRPKRU, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)

> > >

> > >  /* VBMI2 */

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > > CODE_FOR_compressstorev64qi_mask,

> > > "__builtin_ia32_compressstoreuqi512_mask",

> > > IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> > > VOID_FTYPE_PV64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > > CODE_FOR_compressstorev32hi_mask,

> > > "__builtin_ia32_compressstoreuhi512_mask",

> > > IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> > > VOID_FTYPE_PV32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressstorev32qi_mask,

> > > "__builtin_ia32_compressstoreuqi256_mask",

> > > IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> > > VOID_FTYPE_PV32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_compressstorev64qi_mask,

> > > "__builtin_ia32_compressstoreuqi512_mask",

> > > IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int)

> > > VOID_FTYPE_PV64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_compressstorev32hi_mask,

> > > "__builtin_ia32_compressstoreuhi512_mask",

> > > IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int)

> > > VOID_FTYPE_PV32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev32qi_mask,

> > > "__builtin_ia32_compressstoreuqi256_mask",

> > > IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int)

> > > VOID_FTYPE_PV32QI_V32QI_USI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressstorev16qi_mask,

> > > "__builtin_ia32_compressstoreuqi128_mask",

> > > IX86_BUILTIN_PCOMPRESSBSTORE128, UNKNOWN, (int)

> > > VOID_FTYPE_PV16QI_V16QI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressstorev16hi_mask,

> > > "__builtin_ia32_compressstoreuhi256_mask",

> > > IX86_BUILTIN_PCOMPRESSWSTORE256, UNKNOWN, (int)

> > > VOID_FTYPE_PV16HI_V16HI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressstorev8hi_mask,

> > > "__builtin_ia32_compressstoreuhi128_mask",

> > > IX86_BUILTIN_PCOMPRESSWSTORE128, UNKNOWN, (int)

> > > VOID_FTYPE_PV8HI_V8HI_UQI)

> > >

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> > > "__builtin_ia32_expandloadqi512_mask",

> IX86_BUILTIN_PEXPANDBLOAD512,

> > > UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv64qi_maskz,

> > > "__builtin_ia32_expandloadqi512_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD512Z,

> > > UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> > > "__builtin_ia32_expandloadhi512_mask",

> > IX86_BUILTIN_PEXPANDWLOAD512,

> > > UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv32hi_maskz,

> > > "__builtin_ia32_expandloadhi512_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> > > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > > -

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_mask,

> > > "__builtin_ia32_expandloadqi256_mask",

> IX86_BUILTIN_PEXPANDBLOAD256,

> > > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv32qi_maskz,

> > > "__builtin_ia32_expandloadqi256_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD256Z,

> > > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_mask,

> > > "__builtin_ia32_expandloadhi256_mask",

> > IX86_BUILTIN_PEXPANDWLOAD256,

> > > UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv16hi_maskz,

> > > "__builtin_ia32_expandloadhi256_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> > > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > > -

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_mask,

> > > "__builtin_ia32_expandloadqi128_mask",

> IX86_BUILTIN_PEXPANDBLOAD128,

> > > UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv16qi_maskz,

> > > "__builtin_ia32_expandloadqi128_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD128Z,

> > > UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_mask,

> > > "__builtin_ia32_expandloadhi128_mask",

> > IX86_BUILTIN_PEXPANDWLOAD128,

> > > UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_maskz,

> > > "__builtin_ia32_expandloadhi128_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> > > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandloadqi512_mask",

> > > IX86_BUILTIN_PEXPANDBLOAD512, UNKNOWN, (int)

> > > V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandloadqi512_maskz",

> > > IX86_BUILTIN_PEXPANDBLOAD512Z, UNKNOWN, (int)

> > > V64QI_FTYPE_PCV64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandloadhi512_mask",

> > > IX86_BUILTIN_PEXPANDWLOAD512, UNKNOWN, (int)

> > > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandloadhi512_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int)

> > > V32HI_FTYPE_PCV32HI_V32HI_USI)

> > > +

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> > > "__builtin_ia32_expandloadqi256_mask",

> IX86_BUILTIN_PEXPANDBLOAD256,

> > > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> > > "__builtin_ia32_expandloadqi256_maskz",

> > IX86_BUILTIN_PEXPANDBLOAD256Z,

> > > UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandloadhi256_mask",

> > > IX86_BUILTIN_PEXPANDWLOAD256, UNKNOWN, (int)

> > > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16hi_maskz, "__builtin_ia32_expandloadhi256_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int)

> > > V16HI_FTYPE_PCV16HI_V16HI_UHI)

> > > +

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandloadqi128_mask",

> > > IX86_BUILTIN_PEXPANDBLOAD128, UNKNOWN, (int)

> > > V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandloadqi128_maskz",

> > > IX86_BUILTIN_PEXPANDBLOAD128Z, UNKNOWN, (int)

> > > V16QI_FTYPE_PCV16QI_V16QI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandloadhi128_mask",

> > > IX86_BUILTIN_PEXPANDWLOAD128, UNKNOWN, (int)

> > > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandloadhi128_maskz",

> > > IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int)

> > > V8HI_FTYPE_PCV8HI_V8HI_UQI)

> > >

> > >  BDESC_END (SPECIAL_ARGS, ARGS)

> > >

> > > @@ -2418,18 +2418,18 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI |

> OPTI

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_avx512vl_vpermi2varv16qi3_mask,

> > > "__builtin_ia32_vpermi2varqi128_mask", IX86_BUILTIN_VPERMI2VARQI128,

> > > UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)

> > >

> > >  /* VBMI2 */

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_compressv64qi_mask,

> > > "__builtin_ia32_compressqi512_mask", IX86_BUILTIN_PCOMPRESSB512,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_compressv32hi_mask,

> > > "__builtin_ia32_compresshi512_mask", IX86_BUILTIN_PCOMPRESSW512,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressv32qi_mask, "__builtin_ia32_compressqi256_mask",

> > > IX86_BUILTIN_PCOMPRESSB256, UNKNOWN, (int)

> > > V32QI_FTYPE_V32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_compressv64qi_mask, "__builtin_ia32_compressqi512_mask",

> > > IX86_BUILTIN_PCOMPRESSB512, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_compressv32hi_mask, "__builtin_ia32_compresshi512_mask",

> > > IX86_BUILTIN_PCOMPRESSW512, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv32qi_mask,

> > > "__builtin_ia32_compressqi256_mask", IX86_BUILTIN_PCOMPRESSB256,

> > > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressv16qi_mask, "__builtin_ia32_compressqi128_mask",

> > > IX86_BUILTIN_PCOMPRESSB128, UNKNOWN, (int)

> > > V16QI_FTYPE_V16QI_V16QI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressv16hi_mask, "__builtin_ia32_compresshi256_mask",

> > > IX86_BUILTIN_PCOMPRESSW256, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_compressv8hi_mask, "__builtin_ia32_compresshi128_mask",

> > > IX86_BUILTIN_PCOMPRESSW128, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_UQI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask,

> > > "__builtin_ia32_expandqi512_mask", IX86_BUILTIN_PEXPANDB512,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv64qi_maskz,

> > > "__builtin_ia32_expandqi512_maskz", IX86_BUILTIN_PEXPANDB512Z,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask,

> > > "__builtin_ia32_expandhi512_mask", IX86_BUILTIN_PEXPANDW512,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_expandv32hi_maskz,

> > > "__builtin_ia32_expandhi512_maskz", IX86_BUILTIN_PEXPANDW512Z,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandqi256_mask",

> > > IX86_BUILTIN_PEXPANDB256, UNKNOWN, (int)

> > > V32QI_FTYPE_V32QI_V32QI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandqi256_maskz",

> > > IX86_BUILTIN_PEXPANDB256Z, UNKNOWN, (int)

> > > V32QI_FTYPE_V32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandqi512_mask",

> > > IX86_BUILTIN_PEXPANDB512, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandqi512_maskz",

> > > IX86_BUILTIN_PEXPANDB512Z, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandhi512_mask",

> > > IX86_BUILTIN_PEXPANDW512, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandhi512_maskz",

> > > IX86_BUILTIN_PEXPANDW512Z, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask,

> > > "__builtin_ia32_expandqi256_mask", IX86_BUILTIN_PEXPANDB256,

> > > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz,

> > > "__builtin_ia32_expandqi256_maskz", IX86_BUILTIN_PEXPANDB256Z,

> > > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandqi128_mask",

> > > IX86_BUILTIN_PEXPANDB128, UNKNOWN, (int)

> > > V16QI_FTYPE_V16QI_V16QI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandqi128_maskz",

> > > IX86_BUILTIN_PEXPANDB128Z, UNKNOWN, (int)

> > > V16QI_FTYPE_V16QI_V16QI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandhi256_mask",

> > > IX86_BUILTIN_PEXPANDW256, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_UHI)

> > > @@ -2437,97 +2437,97 @@ BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPT

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandhi128_mask",

> > > IX86_BUILTIN_PEXPANDW128, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_UQI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandhi128_maskz",

> > > IX86_BUILTIN_PEXPANDW128Z, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_UQI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi,

> > > "__builtin_ia32_vpshrd_v32hi", IX86_BUILTIN_VPSHRDV32HI, UNKNOWN,

> > (int)

> > > V32HI_FTYPE_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrd_v32hi_mask,

> > > "__builtin_ia32_vpshrd_v32hi_mask", IX86_BUILTIN_VPSHRDV32HI_MASK,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi,

> > > "__builtin_ia32_vpshrd_v16hi", IX86_BUILTIN_VPSHRDV16HI, UNKNOWN,

> > (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrd_v16hi_mask,

> > > "__builtin_ia32_vpshrd_v16hi_mask", IX86_BUILTIN_VPSHRDV16HI_MASK,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi,

> > > "__builtin_ia32_vpshrd_v8hi", IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi_mask,

> > > "__builtin_ia32_vpshrd_v8hi_mask", IX86_BUILTIN_VPSHRDV8HI_MASK,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshrd_v32hi_mask, "__builtin_ia32_vpshrd_v32hi_mask",

> > > IX86_BUILTIN_VPSHRDV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v16hi, "__builtin_ia32_vpshrd_v16hi",

> > > IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v16hi_mask, "__builtin_ia32_vpshrd_v16hi_mask",

> > > IX86_BUILTIN_VPSHRDV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v8hi, "__builtin_ia32_vpshrd_v8hi",

> > > IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v8hi_mask, "__builtin_ia32_vpshrd_v8hi_mask",

> > > IX86_BUILTIN_VPSHRDV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si,

> > > "__builtin_ia32_vpshrd_v16si", IX86_BUILTIN_VPSHRDV16SI, UNKNOWN,

> (int)

> > > V16SI_FTYPE_V16SI_V16SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si_mask,

> > > "__builtin_ia32_vpshrd_v16si_mask", IX86_BUILTIN_VPSHRDV16SI_MASK,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si,

> > > "__builtin_ia32_vpshrd_v8si", IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si_mask,

> > > "__builtin_ia32_vpshrd_v8si_mask", IX86_BUILTIN_VPSHRDV8SI_MASK,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si,

> > > "__builtin_ia32_vpshrd_v4si", IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si_mask,

> > > "__builtin_ia32_vpshrd_v4si_mask", IX86_BUILTIN_VPSHRDV4SI_MASK,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v8si, "__builtin_ia32_vpshrd_v8si",

> > > IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v8si_mask, "__builtin_ia32_vpshrd_v8si_mask",

> > > IX86_BUILTIN_VPSHRDV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v4si, "__builtin_ia32_vpshrd_v4si",

> > > IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v4si_mask, "__builtin_ia32_vpshrd_v4si_mask",

> > > IX86_BUILTIN_VPSHRDV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di,

> > > "__builtin_ia32_vpshrd_v8di", IX86_BUILTIN_VPSHRDV8DI, UNKNOWN, (int)

> > > V8DI_FTYPE_V8DI_V8DI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di_mask,

> > > "__builtin_ia32_vpshrd_v8di_mask", IX86_BUILTIN_VPSHRDV8DI_MASK,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di,

> > > "__builtin_ia32_vpshrd_v4di", IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di_mask,

> > > "__builtin_ia32_vpshrd_v4di_mask", IX86_BUILTIN_VPSHRDV4DI_MASK,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di,

> > > "__builtin_ia32_vpshrd_v2di", IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di_mask,

> > > "__builtin_ia32_vpshrd_v2di_mask", IX86_BUILTIN_VPSHRDV2DI_MASK,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v4di, "__builtin_ia32_vpshrd_v4di",

> > > IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v4di_mask, "__builtin_ia32_vpshrd_v4di_mask",

> > > IX86_BUILTIN_VPSHRDV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v2di, "__builtin_ia32_vpshrd_v2di",

> > > IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrd_v2di_mask, "__builtin_ia32_vpshrd_v2di_mask",

> > > IX86_BUILTIN_VPSHRDV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi,

> > > "__builtin_ia32_vpshld_v32hi", IX86_BUILTIN_VPSHLDV32HI, UNKNOWN,

> (int)

> > > V32HI_FTYPE_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshld_v32hi_mask,

> > > "__builtin_ia32_vpshld_v32hi_mask", IX86_BUILTIN_VPSHLDV32HI_MASK,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi,

> > > "__builtin_ia32_vpshld_v16hi", IX86_BUILTIN_VPSHLDV16HI, UNKNOWN,

> (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshld_v16hi_mask,

> > > "__builtin_ia32_vpshld_v16hi_mask", IX86_BUILTIN_VPSHLDV16HI_MASK,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi,

> > > "__builtin_ia32_vpshld_v8hi", IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi_mask,

> > > "__builtin_ia32_vpshld_v8hi_mask", IX86_BUILTIN_VPSHLDV8HI_MASK,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshld_v32hi_mask, "__builtin_ia32_vpshld_v32hi_mask",

> > > IX86_BUILTIN_VPSHLDV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v16hi, "__builtin_ia32_vpshld_v16hi",

> > > IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v16hi_mask, "__builtin_ia32_vpshld_v16hi_mask",

> > > IX86_BUILTIN_VPSHLDV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v8hi, "__builtin_ia32_vpshld_v8hi",

> > > IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v8hi_mask, "__builtin_ia32_vpshld_v8hi_mask",

> > > IX86_BUILTIN_VPSHLDV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si,

> > > "__builtin_ia32_vpshld_v16si", IX86_BUILTIN_VPSHLDV16SI, UNKNOWN,

> (int)

> > > V16SI_FTYPE_V16SI_V16SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si_mask,

> > > "__builtin_ia32_vpshld_v16si_mask", IX86_BUILTIN_VPSHLDV16SI_MASK,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si,

> > > "__builtin_ia32_vpshld_v8si", IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si_mask,

> > > "__builtin_ia32_vpshld_v8si_mask", IX86_BUILTIN_VPSHLDV8SI_MASK,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si,

> > > "__builtin_ia32_vpshld_v4si", IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si_mask,

> > > "__builtin_ia32_vpshld_v4si_mask", IX86_BUILTIN_VPSHLDV4SI_MASK,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v8si, "__builtin_ia32_vpshld_v8si",

> > > IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v8si_mask, "__builtin_ia32_vpshld_v8si_mask",

> > > IX86_BUILTIN_VPSHLDV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v4si, "__builtin_ia32_vpshld_v4si",

> > > IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v4si_mask, "__builtin_ia32_vpshld_v4si_mask",

> > > IX86_BUILTIN_VPSHLDV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di,

> > > "__builtin_ia32_vpshld_v8di", IX86_BUILTIN_VPSHLDV8DI, UNKNOWN, (int)

> > > V8DI_FTYPE_V8DI_V8DI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di_mask,

> > > "__builtin_ia32_vpshld_v8di_mask", IX86_BUILTIN_VPSHLDV8DI_MASK,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di,

> > > "__builtin_ia32_vpshld_v4di", IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di_mask,

> > > "__builtin_ia32_vpshld_v4di_mask", IX86_BUILTIN_VPSHLDV4DI_MASK,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di,

> > > "__builtin_ia32_vpshld_v2di", IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di_mask,

> > > "__builtin_ia32_vpshld_v2di_mask", IX86_BUILTIN_VPSHLDV2DI_MASK,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v4di, "__builtin_ia32_vpshld_v4di",

> > > IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v4di_mask, "__builtin_ia32_vpshld_v4di_mask",

> > > IX86_BUILTIN_VPSHLDV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v2di, "__builtin_ia32_vpshld_v2di",

> > > IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshld_v2di_mask, "__builtin_ia32_vpshld_v2di_mask",

> > > IX86_BUILTIN_VPSHLDV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)

> > >

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi,

> > > "__builtin_ia32_vpshrdv_v32hi", IX86_BUILTIN_VPSHRDVV32HI, UNKNOWN,

> > > (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v32hi_mask,

> > > "__builtin_ia32_vpshrdv_v32hi_mask",

> IX86_BUILTIN_VPSHRDVV32HI_MASK,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_vpshrdv_v32hi_maskz,

> > > "__builtin_ia32_vpshrdv_v32hi_maskz",

> > IX86_BUILTIN_VPSHRDVV32HI_MASKZ,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi,

> > > "__builtin_ia32_vpshrdv_v16hi", IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN,

> > > (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v16hi_mask,

> > > "__builtin_ia32_vpshrdv_v16hi_mask",

> IX86_BUILTIN_VPSHRDVV16HI_MASK,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_vpshrdv_v16hi_maskz,

> > > "__builtin_ia32_vpshrdv_v16hi_maskz",

> > IX86_BUILTIN_VPSHRDVV16HI_MASKZ,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi,

> > > "__builtin_ia32_vpshrdv_v8hi", IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN,

> > (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8hi_mask,

> > > "__builtin_ia32_vpshrdv_v8hi_mask", IX86_BUILTIN_VPSHRDVV8HI_MASK,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8hi_maskz,

> > > "__builtin_ia32_vpshrdv_v8hi_maskz",

> IX86_BUILTIN_VPSHRDVV8HI_MASKZ,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshrdv_v32hi_mask, "__builtin_ia32_vpshrdv_v32hi_mask",

> > > IX86_BUILTIN_VPSHRDVV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshrdv_v32hi_maskz, "__builtin_ia32_vpshrdv_v32hi_maskz",

> > > IX86_BUILTIN_VPSHRDVV32HI_MASKZ, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v16hi, "__builtin_ia32_vpshrdv_v16hi",

> > > IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v16hi_mask, "__builtin_ia32_vpshrdv_v16hi_mask",

> > > IX86_BUILTIN_VPSHRDVV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v16hi_maskz, "__builtin_ia32_vpshrdv_v16hi_maskz",

> > > IX86_BUILTIN_VPSHRDVV16HI_MASKZ, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8hi, "__builtin_ia32_vpshrdv_v8hi",

> > > IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int)

> > V8HI_FTYPE_V8HI_V8HI_V8HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8hi_mask, "__builtin_ia32_vpshrdv_v8hi_mask",

> > > IX86_BUILTIN_VPSHRDVV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8hi_maskz, "__builtin_ia32_vpshrdv_v8hi_maskz",

> > > IX86_BUILTIN_VPSHRDVV8HI_MASKZ, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si,

> > > "__builtin_ia32_vpshrdv_v16si", IX86_BUILTIN_VPSHRDVV16SI, UNKNOWN,

> > > (int) V16SI_FTYPE_V16SI_V16SI_V16SI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v16si_mask,

> > > "__builtin_ia32_vpshrdv_v16si_mask", IX86_BUILTIN_VPSHRDVV16SI_MASK,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_vpshrdv_v16si_maskz,

> > > "__builtin_ia32_vpshrdv_v16si_maskz",

> > IX86_BUILTIN_VPSHRDVV16SI_MASKZ,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si,

> > > "__builtin_ia32_vpshrdv_v8si", IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN,

> (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8si_mask,

> > > "__builtin_ia32_vpshrdv_v8si_mask", IX86_BUILTIN_VPSHRDVV8SI_MASK,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8si_maskz,

> > > "__builtin_ia32_vpshrdv_v8si_maskz", IX86_BUILTIN_VPSHRDVV8SI_MASKZ,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si,

> > > "__builtin_ia32_vpshrdv_v4si", IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN,

> (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v4si_mask,

> > > "__builtin_ia32_vpshrdv_v4si_mask", IX86_BUILTIN_VPSHRDVV4SI_MASK,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v4si_maskz,

> > > "__builtin_ia32_vpshrdv_v4si_maskz", IX86_BUILTIN_VPSHRDVV4SI_MASKZ,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8si, "__builtin_ia32_vpshrdv_v8si",

> > > IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8si_mask, "__builtin_ia32_vpshrdv_v8si_mask",

> > > IX86_BUILTIN_VPSHRDVV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v8si_maskz, "__builtin_ia32_vpshrdv_v8si_maskz",

> > > IX86_BUILTIN_VPSHRDVV8SI_MASKZ, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4si, "__builtin_ia32_vpshrdv_v4si",

> > > IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4si_mask, "__builtin_ia32_vpshrdv_v4si_mask",

> > > IX86_BUILTIN_VPSHRDVV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4si_maskz, "__builtin_ia32_vpshrdv_v4si_maskz",

> > > IX86_BUILTIN_VPSHRDVV4SI_MASKZ, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di,

> > > "__builtin_ia32_vpshrdv_v8di", IX86_BUILTIN_VPSHRDVV8DI, UNKNOWN,

> > (int)

> > > V8DI_FTYPE_V8DI_V8DI_V8DI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8di_mask,

> > > "__builtin_ia32_vpshrdv_v8di_mask", IX86_BUILTIN_VPSHRDVV8DI_MASK,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v8di_maskz,

> > > "__builtin_ia32_vpshrdv_v8di_maskz",

> IX86_BUILTIN_VPSHRDVV8DI_MASKZ,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di,

> > > "__builtin_ia32_vpshrdv_v4di", IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN,

> > (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v4di_mask,

> > > "__builtin_ia32_vpshrdv_v4di_mask", IX86_BUILTIN_VPSHRDVV4DI_MASK,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v4di_maskz,

> > > "__builtin_ia32_vpshrdv_v4di_maskz",

> IX86_BUILTIN_VPSHRDVV4DI_MASKZ,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di,

> > > "__builtin_ia32_vpshrdv_v2di", IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN,

> > (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v2di_mask,

> > > "__builtin_ia32_vpshrdv_v2di_mask", IX86_BUILTIN_VPSHRDVV2DI_MASK,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshrdv_v2di_maskz,

> > > "__builtin_ia32_vpshrdv_v2di_maskz",

> IX86_BUILTIN_VPSHRDVV2DI_MASKZ,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4di, "__builtin_ia32_vpshrdv_v4di",

> > > IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_V4DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4di_mask, "__builtin_ia32_vpshrdv_v4di_mask",

> > > IX86_BUILTIN_VPSHRDVV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v4di_maskz, "__builtin_ia32_vpshrdv_v4di_maskz",

> > > IX86_BUILTIN_VPSHRDVV4DI_MASKZ, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v2di, "__builtin_ia32_vpshrdv_v2di",

> > > IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int)

> > V2DI_FTYPE_V2DI_V2DI_V2DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v2di_mask, "__builtin_ia32_vpshrdv_v2di_mask",

> > > IX86_BUILTIN_VPSHRDVV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshrdv_v2di_maskz, "__builtin_ia32_vpshrdv_v2di_maskz",

> > > IX86_BUILTIN_VPSHRDVV2DI_MASKZ, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > >

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi,

> > > "__builtin_ia32_vpshldv_v32hi", IX86_BUILTIN_VPSHLDVV32HI, UNKNOWN,

> > > (int) V32HI_FTYPE_V32HI_V32HI_V32HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v32hi_mask,

> > > "__builtin_ia32_vpshldv_v32hi_mask", IX86_BUILTIN_VPSHLDVV32HI_MASK,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_vpshldv_v32hi_maskz,

> > > "__builtin_ia32_vpshldv_v32hi_maskz",

> > IX86_BUILTIN_VPSHLDVV32HI_MASKZ,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi,

> > > "__builtin_ia32_vpshldv_v16hi", IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN,

> > > (int) V16HI_FTYPE_V16HI_V16HI_V16HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v16hi_mask,

> > > "__builtin_ia32_vpshldv_v16hi_mask", IX86_BUILTIN_VPSHLDVV16HI_MASK,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> > CODE_FOR_vpshldv_v16hi_maskz,

> > > "__builtin_ia32_vpshldv_v16hi_maskz",

> > IX86_BUILTIN_VPSHLDVV16HI_MASKZ,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi,

> > > "__builtin_ia32_vpshldv_v8hi", IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN,

> (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v8hi_mask,

> > > "__builtin_ia32_vpshldv_v8hi_mask", IX86_BUILTIN_VPSHLDVV8HI_MASK,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v8hi_maskz,

> > > "__builtin_ia32_vpshldv_v8hi_maskz", IX86_BUILTIN_VPSHLDVV8HI_MASKZ,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshldv_v32hi_mask, "__builtin_ia32_vpshldv_v32hi_mask",

> > > IX86_BUILTIN_VPSHLDVV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpshldv_v32hi_maskz, "__builtin_ia32_vpshldv_v32hi_maskz",

> > > IX86_BUILTIN_VPSHLDVV32HI_MASKZ, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_V32HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v16hi, "__builtin_ia32_vpshldv_v16hi",

> > > IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v16hi_mask, "__builtin_ia32_vpshldv_v16hi_mask",

> > > IX86_BUILTIN_VPSHLDVV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v16hi_maskz, "__builtin_ia32_vpshldv_v16hi_maskz",

> > > IX86_BUILTIN_VPSHLDVV16HI_MASKZ, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_V16HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8hi, "__builtin_ia32_vpshldv_v8hi",

> > > IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int)

> V8HI_FTYPE_V8HI_V8HI_V8HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8hi_mask, "__builtin_ia32_vpshldv_v8hi_mask",

> > > IX86_BUILTIN_VPSHLDVV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8hi_maskz, "__builtin_ia32_vpshldv_v8hi_maskz",

> > > IX86_BUILTIN_VPSHLDVV8HI_MASKZ, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_V8HI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si,

> > > "__builtin_ia32_vpshldv_v16si", IX86_BUILTIN_VPSHLDVV16SI, UNKNOWN,

> > (int)

> > > V16SI_FTYPE_V16SI_V16SI_V16SI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v16si_mask,

> > > "__builtin_ia32_vpshldv_v16si_mask", IX86_BUILTIN_VPSHLDVV16SI_MASK,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v16si_maskz,

> > > "__builtin_ia32_vpshldv_v16si_maskz",

> IX86_BUILTIN_VPSHLDVV16SI_MASKZ,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si,

> > > "__builtin_ia32_vpshldv_v8si", IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN,

> (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_mask,

> > > "__builtin_ia32_vpshldv_v8si_mask", IX86_BUILTIN_VPSHLDVV8SI_MASK,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v8si_maskz,

> > > "__builtin_ia32_vpshldv_v8si_maskz", IX86_BUILTIN_VPSHLDVV8SI_MASKZ,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si,

> > > "__builtin_ia32_vpshldv_v4si", IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN,

> (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_mask,

> > > "__builtin_ia32_vpshldv_v4si_mask", IX86_BUILTIN_VPSHLDVV4SI_MASK,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v4si_maskz,

> > > "__builtin_ia32_vpshldv_v4si_maskz", IX86_BUILTIN_VPSHLDVV4SI_MASKZ,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8si, "__builtin_ia32_vpshldv_v8si",

> > > IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8si_mask, "__builtin_ia32_vpshldv_v8si_mask",

> > > IX86_BUILTIN_VPSHLDVV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v8si_maskz, "__builtin_ia32_vpshldv_v8si_maskz",

> > > IX86_BUILTIN_VPSHLDVV8SI_MASKZ, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_V8SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4si, "__builtin_ia32_vpshldv_v4si",

> > > IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4si_mask, "__builtin_ia32_vpshldv_v4si_mask",

> > > IX86_BUILTIN_VPSHLDVV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4si_maskz, "__builtin_ia32_vpshldv_v4si_maskz",

> > > IX86_BUILTIN_VPSHLDVV4SI_MASKZ, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_V4SI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di,

> > > "__builtin_ia32_vpshldv_v8di", IX86_BUILTIN_VPSHLDVV8DI, UNKNOWN,

> (int)

> > > V8DI_FTYPE_V8DI_V8DI_V8DI)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_mask,

> > > "__builtin_ia32_vpshldv_v8di_mask", IX86_BUILTIN_VPSHLDVV8DI_MASK,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > >  BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v8di_maskz,

> > > "__builtin_ia32_vpshldv_v8di_maskz", IX86_BUILTIN_VPSHLDVV8DI_MASKZ,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di,

> > > "__builtin_ia32_vpshldv_v4di", IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN,

> (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v4di_mask,

> > > "__builtin_ia32_vpshldv_v4di_mask", IX86_BUILTIN_VPSHLDVV4DI_MASK,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v4di_maskz,

> > > "__builtin_ia32_vpshldv_v4di_maskz", IX86_BUILTIN_VPSHLDVV4DI_MASKZ,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di,

> > > "__builtin_ia32_vpshldv_v2di", IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN,

> (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v2di_mask,

> > > "__builtin_ia32_vpshldv_v2di_mask", IX86_BUILTIN_VPSHLDVV2DI_MASK,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > -BDESC (OPTION_MASK_ISA_AVX512VBMI2,

> CODE_FOR_vpshldv_v2di_maskz,

> > > "__builtin_ia32_vpshldv_v2di_maskz", IX86_BUILTIN_VPSHLDVV2DI_MASKZ,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4di, "__builtin_ia32_vpshldv_v4di",

> > > IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int)

> V4DI_FTYPE_V4DI_V4DI_V4DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4di_mask, "__builtin_ia32_vpshldv_v4di_mask",

> > > IX86_BUILTIN_VPSHLDVV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v4di_maskz, "__builtin_ia32_vpshldv_v4di_maskz",

> > > IX86_BUILTIN_VPSHLDVV4DI_MASKZ, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_V4DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v2di, "__builtin_ia32_vpshldv_v2di",

> > > IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int)

> V2DI_FTYPE_V2DI_V2DI_V2DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v2di_mask, "__builtin_ia32_vpshldv_v2di_mask",

> > > IX86_BUILTIN_VPSHLDVV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > > +BDESC (OPTION_MASK_ISA_AVX512VBMI2 |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpshldv_v2di_maskz, "__builtin_ia32_vpshldv_v2di_maskz",

> > > IX86_BUILTIN_VPSHLDVV2DI_MASKZ, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_V2DI_INT)

> > >

> > >  /* GFNI */

> > >  BDESC (OPTION_MASK_ISA_GFNI, CODE_FOR_vgf2p8affineinvqb_v64qi,

> > > "__builtin_ia32_vgf2p8affineinvqb_v64qi",

> > > IX86_BUILTIN_VGF2P8AFFINEINVQB512, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_INT)

> > > @@ -2596,6 +2596,40 @@ BDESC (OPTION_MASK_ISA_VPCLMULQDQ |

> OPTI

> > >  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX,

> > > CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di",

> > > IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int)

> > V4DI_FTYPE_V4DI_V4DI_INT)

> > >  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX512F,

> > > CODE_FOR_vpclmulqdq_v8di, "__builtin_ia32_vpclmulqdq_v8di",

> > > IX86_BUILTIN_VPCLMULQDQ8, UNKNOWN, (int)

> > V8DI_FTYPE_V8DI_V8DI_INT)

> > >

> > > +/* VPOPCNTDQ */

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv16si,

> > > "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > > CODE_FOR_vpopcountv16si_mask,

> "__builtin_ia32_vpopcountd_v16si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> > > V16SI_FTYPE_V16SI_V16SI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv8di,

> > > "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > > CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> > > V8DI_FTYPE_V8DI_V8DI_UQI)

> > > +

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> > > "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> > > "__builtin_ia32_vpopcountq_v4di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_UQI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> > > "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> > > "__builtin_ia32_vpopcountq_v2di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_UQI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> > > "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> > > "__builtin_ia32_vpopcountd_v4si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> > > "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI)

> > > +BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> > > "__builtin_ia32_vpopcountd_v8si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_UHI)

> > > +

> > > +/* BITALG */

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> > > "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpopcountv64qi_mask,

> > "__builtin_ia32_vpopcountb_v64qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_UDI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv32qi, "__builtin_ia32_vpopcountb_v32qi",

> > > IX86_BUILTIN_VPOPCOUNTBV32QI, UNKNOWN, (int) V32QI_FTYPE_V32QI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL

> > |

> > > OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv32qi_mask,

> > > "__builtin_ia32_vpopcountb_v32qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> > > V32QI_FTYPE_V32QI_V32QI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv16qi, "__builtin_ia32_vpopcountb_v16qi",

> > > IX86_BUILTIN_VPOPCOUNTBV16QI, UNKNOWN, (int) V16QI_FTYPE_V16QI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv16qi_mask,

> > "__builtin_ia32_vpopcountb_v16qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> > > V16QI_FTYPE_V16QI_V16QI_UHI)

> > > +

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> > > "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_vpopcountv32hi_mask,

> > "__builtin_ia32_vpopcountw_v32hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv16hi, "__builtin_ia32_vpopcountw_v16hi",

> > > IX86_BUILTIN_VPOPCOUNTWV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv16hi_mask,

> > "__builtin_ia32_vpopcountw_v16hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_UHI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv8hi, "__builtin_ia32_vpopcountw_v8hi",

> > > IX86_BUILTIN_VPOPCOUNTWV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_vpopcountv8hi_mask, "__builtin_ia32_vpopcountw_v8hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_UQI)

> > > +

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> > OPTION_MASK_ISA_AVX512BW,

> > > CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> > > "__builtin_ia32_vpshufbitqmb512_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> > > UQI_FTYPE_V8DI_V8DI_UQI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL

> > |

> > > OPTION_MASK_ISA_AVX512BW,

> > CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> > > "__builtin_ia32_vpshufbitqmb256_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> > > USI_FTYPE_V4DI_V4DI_USI)

> > > +BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> > > "__builtin_ia32_vpshufbitqmb128_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> > > UHI_FTYPE_V2DI_V2DI_UHI)

> > > +

> > >  /* Builtins with rounding support.  */

> > >  BDESC_END (ARGS, ROUND_ARGS)

> > >

> > > @@ -2783,20 +2817,6 @@ BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> COD

> > >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > > CODE_FOR_avx5124vnniw_vp4dpwssd_mask,

> > > "__builtin_ia32_vp4dpwssd_mask", IX86_BUILTIN_4DPWSSD_MASK,

> > > UNKNOWN, (int)

> > > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

> > >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > > CODE_FOR_avx5124vnniw_vp4dpwssds, "__builtin_ia32_vp4dpwssds",

> > > IX86_BUILTIN_4DPWSSDS, UNKNOWN, (int)

> > > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI)

> > >  BDESC (OPTION_MASK_ISA_AVX5124VNNIW,

> > > CODE_FOR_avx5124vnniw_vp4dpwssds_mask,

> > > "__builtin_ia32_vp4dpwssds_mask", IX86_BUILTIN_4DPWSSDS_MASK,

> > > UNKNOWN, (int)

> > > V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv16si,

> > > "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI,

> > > UNKNOWN, (int) V16SI_FTYPE_V16SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > > CODE_FOR_vpopcountv16si_mask,

> "__builtin_ia32_vpopcountd_v16si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int)

> > > V16SI_FTYPE_V16SI_V16SI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > CODE_FOR_vpopcountv8di,

> > > "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI,

> > > UNKNOWN, (int) V8DI_FTYPE_V8DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ,

> > > CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int)

> > > V8DI_FTYPE_V8DI_V8DI_UQI)

> > > -

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di,

> > > "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI,

> > > UNKNOWN, (int) V4DI_FTYPE_V4DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask,

> > > "__builtin_ia32_vpopcountq_v4di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int)

> > > V4DI_FTYPE_V4DI_V4DI_UQI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di,

> > > "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI,

> > > UNKNOWN, (int) V2DI_FTYPE_V2DI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask,

> > > "__builtin_ia32_vpopcountq_v2di_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int)

> > > V2DI_FTYPE_V2DI_V2DI_UQI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si,

> > > "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI,

> > > UNKNOWN, (int) V4SI_FTYPE_V4SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask,

> > > "__builtin_ia32_vpopcountd_v4si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int)

> > > V4SI_FTYPE_V4SI_V4SI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si,

> > > "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI,

> > > UNKNOWN, (int) V8SI_FTYPE_V8SI)

> > > -BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask,

> > > "__builtin_ia32_vpopcountd_v8si_mask",

> > > IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int)

> > > V8SI_FTYPE_V8SI_V8SI_UHI)

> > > -

> > >

> > >  /* RDPID */

> > >  BDESC (OPTION_MASK_ISA_RDPID, CODE_FOR_rdpid,

> "__builtin_ia32_rdpid",

> > > IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)

> > > @@ -2815,24 +2835,6 @@ BDESC (OPTION_MASK_ISA_VAES,

> CODE_FOR_va

> > >  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v32qi,

> > > "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32,

> > > UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)

> > >  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v64qi,

> > > "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)

> > >

> > > -/* BITALG */

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi,

> > > "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI,

> > > UNKNOWN, (int) V64QI_FTYPE_V64QI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_vpopcountv64qi_mask,

> > "__builtin_ia32_vpopcountb_v64qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int)

> > > V64QI_FTYPE_V64QI_V64QI_UDI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32qi,

> > > "__builtin_ia32_vpopcountb_v32qi", IX86_BUILTIN_VPOPCOUNTBV32QI,

> > > UNKNOWN, (int) V32QI_FTYPE_V32QI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_vpopcountv32qi_mask,

> > "__builtin_ia32_vpopcountb_v32qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int)

> > > V32QI_FTYPE_V32QI_V32QI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16qi,

> > > "__builtin_ia32_vpopcountb_v16qi", IX86_BUILTIN_VPOPCOUNTBV16QI,

> > > UNKNOWN, (int) V16QI_FTYPE_V16QI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_vpopcountv16qi_mask,

> > "__builtin_ia32_vpopcountb_v16qi_mask",

> > > IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int)

> > > V16QI_FTYPE_V16QI_V16QI_UHI)

> > > -

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi,

> > > "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI,

> > > UNKNOWN, (int) V32HI_FTYPE_V32HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_vpopcountv32hi_mask,

> > "__builtin_ia32_vpopcountw_v32hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int)

> > > V32HI_FTYPE_V32HI_V32HI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16hi,

> > > "__builtin_ia32_vpopcountw_v16hi", IX86_BUILTIN_VPOPCOUNTWV16HI,

> > > UNKNOWN, (int) V16HI_FTYPE_V16HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_vpopcountv16hi_mask,

> > "__builtin_ia32_vpopcountw_v16hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int)

> > > V16HI_FTYPE_V16HI_V16HI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi,

> > > "__builtin_ia32_vpopcountw_v8hi", IX86_BUILTIN_VPOPCOUNTWV8HI,

> > > UNKNOWN, (int) V8HI_FTYPE_V8HI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > CODE_FOR_vpopcountv8hi_mask,

> > > "__builtin_ia32_vpopcountw_v8hi_mask",

> > > IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int)

> > > V8HI_FTYPE_V8HI_V8HI_UQI)

> > > -

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_avx512vl_vpshufbitqmbv2di_mask,

> > > "__builtin_ia32_vpshufbitqmb128_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int)

> > > UHI_FTYPE_V2DI_V2DI_UHI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG |

> OPTION_MASK_ISA_AVX512VL,

> > > CODE_FOR_avx512vl_vpshufbitqmbv4di_mask,

> > > "__builtin_ia32_vpshufbitqmb256_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int)

> > > USI_FTYPE_V4DI_V4DI_USI)

> > > -BDESC (OPTION_MASK_ISA_AVX512BITALG,

> > > CODE_FOR_avx512vl_vpshufbitqmbv8di_mask,

> > > "__builtin_ia32_vpshufbitqmb512_mask",

> > > IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int)

> > > UQI_FTYPE_V8DI_V8DI_UQI)

> > >  BDESC_END (ARGS2, MPX)

> > >

> > >  /* Builtins for MPX.  */

> > > --- gcc/config/i386/avx512vbmi2intrin.h.jj	2017-11-30

> > > 09:42:46.000000000 +0100

> > > +++ gcc/config/i386/avx512vbmi2intrin.h	2017-12-22

> > > 17:37:50.395929142 +0100

> > > @@ -28,127 +28,11 @@

> > >  #ifndef __AVX512VBMI2INTRIN_H_INCLUDED

> > >  #define __AVX512VBMI2INTRIN_H_INCLUDED

> > >

> > > -#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> > > +#if !defined(__AVX512VBMI2__)

> > >  #pragma GCC push_options

> > > -#pragma GCC target("avx512vbmi2,avx512bw")

> > > -#define __DISABLE_AVX512VBMI2BW__

> > > -#endif /* __AVX512VBMI2BW__ */

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i

> > __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> > > -						(__v64qi)__A,

> > > (__mmask64)__B);

> > > -}

> > > -

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> > > -			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> > > -}

> > > -

> > > -

> > > -extern __inline void

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B,

> __m512i

> > > __C)

> > > -{

> > > -  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi)

> __C,

> > > -							(__mmask64) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i

> > __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> > > -						(__v32hi)__A,

> > > (__mmask32)__B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> > > -			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> > > -}

> > > -

> > > -extern __inline void

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B,

> > __m512i

> > > __C)

> > > -{

> > > -  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi)

> __C,

> > > -							(__mmask32) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> > > -						    (__v64qi) __A,

> > > -						    (__mmask64) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> > > -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const

> > void

> > > * __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> > > __C,

> > > -					(__v64qi) __A, (__mmask64) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi

> *)

> > > __B,

> > > -			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i

> __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> > > -						    (__v32hi) __A,

> > > -						    (__mmask32) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> > > -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const

> > void

> > > * __C)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> > > __C,

> > > -					(__v32hi) __A, (__mmask32) __B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> > > -{

> > > -  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi

> *)

> > > __B,

> > > -			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > > -}

> > > +#pragma GCC target("avx512vbmi2")

> > > +#define __DISABLE_AVX512VBMI2__

> > > +#endif /* __AVX512VBMI2__ */

> > >

> > >  #ifdef __OPTIMIZE__

> > >  extern __inline __m512i

> > > @@ -161,23 +45,6 @@ _mm512_shrdi_epi16 (__m512i __A, __m512i

> > >

> > >  extern __inline __m512i

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D,

> > > -								int __E)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> > > -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > int

> > > __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> > > -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > > (__mmask32)__A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > >  _mm512_shrdi_epi32 (__m512i __A, __m512i __B, int __C)

> > >  {

> > >    return (__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)__A, (__v16si) __B,

> > > @@ -235,23 +102,6 @@ _mm512_shldi_epi16 (__m512i __A, __m512i

> > >

> > >  extern __inline __m512i

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D,

> > > -								int __E)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> > > -			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > int

> > > __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> > > -	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > > (__mmask32)__A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > >  _mm512_shldi_epi32 (__m512i __A, __m512i __B, int __C)

> > >  {

> > >    return (__m512i) __builtin_ia32_vpshld_v16si ((__v16si)__A, (__v16si) __B,

> > > @@ -302,13 +152,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

> > >  #define _mm512_shrdi_epi16(A, B, C) \

> > >    ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \

> > >  						(__v32hi)(__m512i)(B),(int)(C))

> > > -#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> > > -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> > > -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > > -#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> > > -  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> > > -	(__v32hi)(__m512i)(C),(int)(D), \

> > > -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > >  #define _mm512_shrdi_epi32(A, B, C) \

> > >    ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \

> > >  	(__v16si)(__m512i)(B),(int)(C))

> > > @@ -332,13 +175,6 @@ _mm512_maskz_shldi_epi64 (__mmask8 __A,

> > >  #define _mm512_shldi_epi16(A, B, C) \

> > >    ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \

> > >  						(__v32hi)(__m512i)(B),(int)(C))

> > > -#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> > > -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> > > -	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > > -#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> > > -  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> > > -	(__v32hi)(__m512i)(C),(int)(D), 				\

> > > -	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > >  #define _mm512_shldi_epi32(A, B, C) \

> > >    ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A), 	\

> > >  				(__v16si)(__m512i)(B),(int)(C))

> > > @@ -371,22 +207,6 @@ _mm512_shrdv_epi16 (__m512i __A, __m512i

> > >

> > >  extern __inline __m512i

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> > > -				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i

> __C,

> > > __m512i __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> > > -				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > >  _mm512_shrdv_epi32 (__m512i __A, __m512i __B, __m512i __C)

> > >  {

> > >    return (__m512i) __builtin_ia32_vpshrdv_v16si ((__v16si)__A, (__v16si)

> __B,

> > > @@ -442,22 +262,6 @@ _mm512_shldv_epi16 (__m512i __A, __m512i

> > >

> > >  extern __inline __m512i

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> > > -				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__B);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > > __m512i __D)

> > > -{

> > > -  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> > > -				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__A);

> > > -}

> > > -

> > > -extern __inline __m512i

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > >  _mm512_shldv_epi32 (__m512i __A, __m512i __B, __m512i __C)

> > >  {

> > >    return (__m512i) __builtin_ia32_vpshldv_v16si ((__v16si)__A, (__v16si)

> __B,

> > > @@ -504,6 +308,218 @@ _mm512_maskz_shldv_epi64 (__mmask8 __A,

> > >  						(__v8di) __D, (__mmask8)__A);

> > >  }

> > >

> > > +#ifdef __DISABLE_AVX512VBMI2__

> > > +#undef __DISABLE_AVX512VBMI2__

> > > +

> > > +#pragma GCC pop_options

> > > +#endif /* __DISABLE_AVX512VBMI2__ */

> > > +

> > > +#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)

> > > +#pragma GCC push_options

> > > +#pragma GCC target("avx512vbmi2,avx512bw")

> > > +#define __DISABLE_AVX512VBMI2BW__

> > > +#endif /* __AVX512VBMI2BW__ */

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i

> > __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,

> > > +						(__v64qi)__A,

> > > (__mmask64)__B);

> > > +}

> > > +

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,

> > > +			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);

> > > +}

> > > +

> > > +

> > > +extern __inline void

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B,

> __m512i

> > > __C)

> > > +{

> > > +  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi)

> __C,

> > > +							(__mmask64) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i

> > > __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,

> > > +						(__v32hi)__A,

> > > (__mmask32)__B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,

> > > +			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);

> > > +}

> > > +

> > > +extern __inline void

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B,

> > __m512i

> > > __C)

> > > +{

> > > +  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi)

> __C,

> > > +							(__mmask32) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i

> __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,

> > > +						    (__v64qi) __A,

> > > +						    (__mmask64) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,

> > > +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const

> > void

> > > * __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *)

> > > __C,

> > > +					(__v64qi) __A, (__mmask64) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi

> *)

> > > __B,

> > > +			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i

> __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,

> > > +						    (__v32hi) __A,

> > > +						    (__mmask32) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,

> > > +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const

> > > void * __C)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *)

> > > __C,

> > > +					(__v32hi) __A, (__mmask32) __B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)

> > > +{

> > > +  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi

> *)

> > > __B,

> > > +			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);

> > > +}

> > > +

> > > +#ifdef __OPTIMIZE__

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D,

> > > +								int __E)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,

> > > +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > int

> > > __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,

> > > +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > > (__mmask32)__A);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D,

> > > +								int __E)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,

> > > +			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C,

> > int

> > > __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,

> > > +	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (),

> > > (__mmask32)__A);

> > > +}

> > > +

> > > +#else

> > > +#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \

> > > +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \

> > > +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > > +#define _mm512_maskz_shrdi_epi16(A, B, C, D) \

> > > +  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \

> > > +	(__v32hi)(__m512i)(C),(int)(D), \

> > > +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > > +#define _mm512_mask_shldi_epi16(A, B, C, D, E) \

> > > +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \

> > > +	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))

> > > +#define _mm512_maskz_shldi_epi16(A, B, C, D) \

> > > +  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \

> > > +	(__v32hi)(__m512i)(C),(int)(D), 				\

> > > +	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))

> > > +#endif

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,

> > > +				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i

> __C,

> > > __m512i __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,

> > > +				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__A);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C,

> > > __m512i __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,

> > > +				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__B);

> > > +}

> > > +

> > > +extern __inline __m512i

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i

> __C,

> > > __m512i __D)

> > > +{

> > > +  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,

> > > +				(__v32hi) __C, (__v32hi) __D,

> > > (__mmask32)__A);

> > > +}

> > > +

> > >  #ifdef __DISABLE_AVX512VBMI2BW__

> > >  #undef __DISABLE_AVX512VBMI2BW__

> > >

> > > --- gcc/config/i386/avx512bitalgintrin.h.jj	2017-12-22

> > > 14:00:04.000000000 +0100

> > > +++ gcc/config/i386/avx512bitalgintrin.h	2017-12-22

> > > 17:39:52.615409924 +0100

> > > @@ -143,23 +143,6 @@ _mm256_maskz_popcnt_epi8 (__mmask32 __U,

> > >  						 _mm256_setzero_si256 (),

> > >  						(__mmask32) __U);

> > >  }

> > > -extern __inline __mmask16

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> > > -{

> > > -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > > -						 (__v2di) __B,

> > > -						 (__mmask16) -1);

> > > -}

> > > -

> > > -extern __inline __mmask16

> > > -__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > -_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A,

> __m128i

> > > __B)

> > > -{

> > > -  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > > -						 (__v2di) __B,

> > > -						 (__mmask16) __M);

> > > -}

> > >

> > >  extern __inline __mmask32

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > @@ -191,6 +174,24 @@ _mm256_mask_bitshuffle_epi64_mask (__mma

> > >  #define __DISABLE_AVX512BITALGVL__

> > >  #endif /* __AVX512VLBW__ */

> > >

> > > +extern __inline __mmask16

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)

> > > +{

> > > +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > > +						 (__v2di) __B,

> > > +						 (__mmask16) -1);

> > > +}

> > > +

> > > +extern __inline __mmask16

> > > +__attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > > +_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A,

> > __m128i

> > > __B)

> > > +{

> > > +  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,

> > > +						 (__v2di) __B,

> > > +						 (__mmask16) __M);

> > > +}

> > > +

> > >  extern __inline __m256i

> > >  __attribute__((__gnu_inline__, __always_inline__, __artificial__))

> > >  _mm256_popcnt_epi8 (__m256i __A)

> > > --- gcc/common/config/i386/i386-common.c.jj	2017-12-22

> > > 14:00:03.000000000 +0100

> > > +++ gcc/common/config/i386/i386-common.c	2017-12-22

> > > 15:09:07.875074385 +0100

> > > @@ -84,8 +84,10 @@ along with GCC; see the file COPYING3.

> > >    (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)

> > >  #define OPTION_MASK_ISA_AVX512VNNI_SET \

> > >    (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)

> > > -#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ

> > > -#define OPTION_MASK_ISA_AVX512BITALG_SET

> > > OPTION_MASK_ISA_AVX512BITALG

> > > +#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \

> > > +  (OPTION_MASK_ISA_AVX512VPOPCNTDQ |

> > > OPTION_MASK_ISA_AVX512F_SET)

> > > +#define OPTION_MASK_ISA_AVX512BITALG_SET \

> > > +  (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512F_SET)

> > >  #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM

> > >  #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW

> > >  #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED

> > > @@ -187,7 +189,8 @@ along with GCC; see the file COPYING3.

> > >     | OPTION_MASK_ISA_AVX512PF_UNSET |

> > > OPTION_MASK_ISA_AVX512ER_UNSET \

> > >     | OPTION_MASK_ISA_AVX512DQ_UNSET |

> > > OPTION_MASK_ISA_AVX512BW_UNSET \

> > >     | OPTION_MASK_ISA_AVX512VL_UNSET |

> > > OPTION_MASK_ISA_AVX512VBMI2_UNSET \

> > > -   | OPTION_MASK_ISA_AVX512VNNI_UNSET)

> > > +   | OPTION_MASK_ISA_AVX512VNNI_UNSET |

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \

> > > +   | OPTION_MASK_ISA_AVX512BITALG_UNSET)

> > >  #define OPTION_MASK_ISA_AVX512CD_UNSET

> > OPTION_MASK_ISA_AVX512CD

> > >  #define OPTION_MASK_ISA_AVX512PF_UNSET

> OPTION_MASK_ISA_AVX512PF

> > >  #define OPTION_MASK_ISA_AVX512ER_UNSET

> > OPTION_MASK_ISA_AVX512ER

> > > @@ -257,6 +260,11 @@ along with GCC; see the file COPYING3.

> > >    (OPTION_MASK_ISA_MMX_UNSET \

> > >     | OPTION_MASK_ISA_SSE_UNSET)

> > >

> > > +#define OPTION_MASK_ISA2_AVX512F_UNSET \

> > > +  (OPTION_MASK_ISA_AVX5124FMAPS_UNSET |

> > > OPTION_MASK_ISA_AVX5124VNNIW_UNSET)

> > > +#define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \

> > > +  (OPTION_MASK_ISA2_AVX512F_UNSET | OPTION_MASK_ISA_MPX)

> > > +

> > >  /* Implement TARGET_HANDLE_OPTION.  */

> > >

> > >  bool

> > > @@ -278,11 +286,11 @@ ix86_handle_option (struct gcc_options *

> > >  	  opts->x_ix86_isa_flags

> > >  	    &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

> > >  	  opts->x_ix86_isa_flags2

> > > -	    &= ~OPTION_MASK_ISA_MPX;

> > > +	    &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit

> > >  	    |= OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;

> > >  	  opts->x_ix86_isa_flags2_explicit

> > > -	    |= OPTION_MASK_ISA_MPX;

> > > +	    |= OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;

> > >

> > >  	  opts->x_target_flags &= ~MASK_80387;

> > >  	}

> > > @@ -339,6 +347,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -352,6 +362,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -365,6 +377,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -378,6 +392,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -391,6 +407,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -404,6 +422,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -417,6 +437,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -430,6 +452,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -443,20 +467,8 @@ ix86_handle_option (struct gcc_options *

> > >  	{

> > >  	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;

> > >  	  opts->x_ix86_isa_flags_explicit |=

> > > OPTION_MASK_ISA_AVX512F_UNSET;

> > > -

> > > -	  /* Turn off additional isa flags.  */

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit

> > > -		|= OPTION_MASK_ISA_AVX5124FMAPS_UNSET;

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit

> > > -		|= OPTION_MASK_ISA_AVX5124VNNIW_UNSET;

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit

> > > -		|= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit

> > > -		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > > +	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >  	}

> > >        return true;

> > >

> > > @@ -639,30 +651,28 @@ ix86_handle_option (struct gcc_options *

> > >      case OPT_mavx512vpopcntdq:

> > >        if (value)

> > >  	{

> > > -	  opts->x_ix86_isa_flags2 |=

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > > -	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > > -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> > > -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> > > +	  opts->x_ix86_isa_flags |=

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > > +	  opts->x_ix86_isa_flags_explicit

> > > +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;

> > >  	}

> > >        else

> > >  	{

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > > +	  opts->x_ix86_isa_flags &=

> > > ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > > +	  opts->x_ix86_isa_flags_explicit

> > > +	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;

> > >  	}

> > >        return true;

> > >

> > >      case OPT_mavx512bitalg:

> > >        if (value)

> > >  	{

> > > -	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512BITALG_SET;

> > > -	  opts->x_ix86_isa_flags2_explicit |=

> > > OPTION_MASK_ISA_AVX512BITALG_SET;

> > > -	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;

> > > -	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;

> > > +	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;

> > > +	  opts->x_ix86_isa_flags_explicit |=

> > > OPTION_MASK_ISA_AVX512BITALG_SET;

> > >  	}

> > >        else

> > >  	{

> > > -	  opts->x_ix86_isa_flags2 &=

> > > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > > -	  opts->x_ix86_isa_flags2_explicit

> > > +	  opts->x_ix86_isa_flags &=

> > > ~OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > > +	  opts->x_ix86_isa_flags_explicit

> > >  		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;

> > >  	}

> > >        return true;

> > > @@ -779,6 +789,8 @@ ix86_handle_option (struct gcc_options *

> > >      case OPT_mno_sse4:

> > >        opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;

> > >        opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;

> > > +      opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;

> > > +      opts->x_ix86_isa_flags2_explicit |=

> > OPTION_MASK_ISA2_AVX512F_UNSET;

> > >        return true;

> > >

> > >      case OPT_msse4a:

> > >

> > >

> > > 	Jakub
Kirill Yukhin Jan. 20, 2018, 10:49 a.m. | #5
Hello Julia,
On 12 Jan 08:55, Koval, Julia wrote:
> Changelog

> 

> gcc/

> 	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,

> 	_mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,

> 	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,

> 	_mm_mask_bitshuffle_epi64_mask): Fix type.

> 	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,

> 	USI_FTYPE_V4DI_V4DI_USI): Remove.

> 	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,

> 	__builtin_ia32_vpshufbitqmb256_mask,

> 	__builtin_ia32_vpshufbitqmb128_mask): Fix types.

> 	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.

> 	* config/i386/sse.md (VI48_AVX512VLBW): Change types.

> 

> gcc/testsuite/

> 	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -mavx512bw.

> 	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.

> 	* gcc.target/i386/i386.exp: Fix types.


 (define_mode_iterator VI48_AVX512VLBW
-  [(V8DI "TARGET_AVX512BW") (V4DI  "TARGET_AVX512VL")
-       (V2DI  "TARGET_AVX512VL")])
+  [(V64QI "TARGET_AVX512BW") (V32QI  "TARGET_AVX512VL")
+       (V16QI  "TARGET_AVX512VL")])
I'd call this iterator VI1_AVX512VLBW.

--
Thanks, K
Koval, Julia Jan. 24, 2018, 2 p.m. | #6
Hi,
Fixed it. Ok for trunk?

gcc/
	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
	_mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
	_mm_mask_bitshuffle_epi64_mask): Fix type.
	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
	USI_FTYPE_V4DI_V4DI_USI): Remove.
	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
	__builtin_ia32_vpshufbitqmb256_mask,
	__builtin_ia32_vpshufbitqmb128_mask): Fix types.
	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
	* config/i386/sse.md (VI1_AVX512VLBW): Change types.

gcc/testsuite/
	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -mavx512bw.
	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.
	* gcc.target/i386/i386.exp: Fix types.

Thanks,
Julia

> -----Original Message-----

> From: Kirill Yukhin [mailto:kirill.yukhin@gmail.com]

> Sent: Saturday, January 20, 2018 11:49 AM

> To: Koval, Julia <julia.koval@intel.com>

> Cc: 'Jakub Jelinek' <jakub@redhat.com>; 'Uros Bizjak' <ubizjak@gmail.com>;

> 'GCC Patches' <gcc-patches@gcc.gnu.org>

> Subject: Re: [PATCH] Fix various x86 avx512{bitalg, vpopcntdq, vbmi2} issues (PR

> target/83488)

> 

> Hello Julia,

> On 12 Jan 08:55, Koval, Julia wrote:

> > Changelog

> >

> > gcc/

> > 	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,

> > 	_mm512_mask_bitshuffle_epi64_mask,

> _mm256_bitshuffle_epi64_mask,

> > 	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,

> > 	_mm_mask_bitshuffle_epi64_mask): Fix type.

> > 	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,

> > 	USI_FTYPE_V4DI_V4DI_USI): Remove.

> > 	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,

> > 	__builtin_ia32_vpshufbitqmb256_mask,

> > 	__builtin_ia32_vpshufbitqmb128_mask): Fix types.

> > 	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.

> > 	* config/i386/sse.md (VI48_AVX512VLBW): Change types.

> >

> > gcc/testsuite/

> > 	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -

> mavx512bw.

> > 	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.

> > 	* gcc.target/i386/i386.exp: Fix types.

> 

>  (define_mode_iterator VI48_AVX512VLBW

> -  [(V8DI "TARGET_AVX512BW") (V4DI  "TARGET_AVX512VL")

> -       (V2DI  "TARGET_AVX512VL")])

> +  [(V64QI "TARGET_AVX512BW") (V32QI  "TARGET_AVX512VL")

> +       (V16QI  "TARGET_AVX512VL")])

> I'd call this iterator VI1_AVX512VLBW.

> 

> --

> Thanks, K
Kirill Yukhin Jan. 26, 2018, 4:14 a.m. | #7
Hello Julia,
On 24 Jan 14:00, Koval, Julia wrote:
> Hi,

> Fixed it. Ok for trunk?

> 

> gcc/

> 	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,

> 	_mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,

> 	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,

> 	_mm_mask_bitshuffle_epi64_mask): Fix type.

> 	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,

> 	USI_FTYPE_V4DI_V4DI_USI): Remove.

> 	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,

> 	__builtin_ia32_vpshufbitqmb256_mask,

> 	__builtin_ia32_vpshufbitqmb128_mask): Fix types.

> 	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.

> 	* config/i386/sse.md (VI1_AVX512VLBW): Change types.

> 

> gcc/testsuite/

> 	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -mavx512bw.

> 	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.

> 	* gcc.target/i386/i386.exp: Fix types.

Your patch is OK for trunk. I've checked it in.

--
Thanks, K
> 

> Thanks,

> Julia

> 

> > -----Original Message-----

> > From: Kirill Yukhin [mailto:kirill.yukhin@gmail.com]

> > Sent: Saturday, January 20, 2018 11:49 AM

> > To: Koval, Julia <julia.koval@intel.com>

> > Cc: 'Jakub Jelinek' <jakub@redhat.com>; 'Uros Bizjak' <ubizjak@gmail.com>;

> > 'GCC Patches' <gcc-patches@gcc.gnu.org>

> > Subject: Re: [PATCH] Fix various x86 avx512{bitalg, vpopcntdq, vbmi2} issues (PR

> > target/83488)

> > 

> > Hello Julia,

> > On 12 Jan 08:55, Koval, Julia wrote:

> > > Changelog

> > >

> > > gcc/

> > > 	* config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,

> > > 	_mm512_mask_bitshuffle_epi64_mask,

> > _mm256_bitshuffle_epi64_mask,

> > > 	_mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,

> > > 	_mm_mask_bitshuffle_epi64_mask): Fix type.

> > > 	* config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,

> > > 	USI_FTYPE_V4DI_V4DI_USI): Remove.

> > > 	* config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,

> > > 	__builtin_ia32_vpshufbitqmb256_mask,

> > > 	__builtin_ia32_vpshufbitqmb128_mask): Fix types.

> > > 	* config/i386/i386.c (ix86_expand_args_builtin): Remove old types.

> > > 	* config/i386/sse.md (VI48_AVX512VLBW): Change types.

> > >

> > > gcc/testsuite/

> > > 	* gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -

> > mavx512bw.

> > > 	* gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c: Add -mavx512bw.

> > > 	* gcc.target/i386/i386.exp: Fix types.

> > 

> >  (define_mode_iterator VI48_AVX512VLBW

> > -  [(V8DI "TARGET_AVX512BW") (V4DI  "TARGET_AVX512VL")

> > -       (V2DI  "TARGET_AVX512VL")])

> > +  [(V64QI "TARGET_AVX512BW") (V32QI  "TARGET_AVX512VL")

> > +       (V16QI  "TARGET_AVX512VL")])

> > I'd call this iterator VI1_AVX512VLBW.

> > 

> > --

> > Thanks, K

>

Patch

--- gcc/config/i386/i386.opt.jj	2017-12-22 14:00:04.000000000 +0100
+++ gcc/config/i386/i386.opt	2017-12-22 14:18:30.113511523 +0100
@@ -734,7 +734,7 @@  Target Report Mask(ISA_AVX5124VNNIW) Var
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
 
 mavx512vpopcntdq
-Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags2) Save
+Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
 
 mavx512vbmi2
@@ -746,7 +746,7 @@  Target Report Mask(ISA_AVX512VNNI) Var(i
 Support AVX512VNNI built-in functions and code generation.
 
 mavx512bitalg
-Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags2) Save
+Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
 
 mfma
--- gcc/config/i386/i386-c.c.jj	2017-12-22 14:00:04.000000000 +0100
+++ gcc/config/i386/i386-c.c	2017-12-22 14:22:54.154146866 +0100
@@ -402,9 +402,9 @@  ix86_target_macros_internal (HOST_WIDE_I
     def_or_undef (parse_in, "__SGX__");
   if (isa_flag2 & OPTION_MASK_ISA_AVX5124FMAPS)
     def_or_undef (parse_in, "__AVX5124FMAPS__");
-  if (isa_flag2 & OPTION_MASK_ISA_AVX512BITALG)
+  if (isa_flag & OPTION_MASK_ISA_AVX512BITALG)
     def_or_undef (parse_in, "__AVX512BITALG__");
-  if (isa_flag2 & OPTION_MASK_ISA_AVX512VPOPCNTDQ)
+  if (isa_flag & OPTION_MASK_ISA_AVX512VPOPCNTDQ)
     def_or_undef (parse_in, "__AVX512VPOPCNTDQ__");
   if (isa_flag & OPTION_MASK_ISA_FMA)
     def_or_undef (parse_in, "__FMA__");
--- gcc/config/i386/i386.c.jj	2017-12-22 14:00:04.000000000 +0100
+++ gcc/config/i386/i386.c	2017-12-22 15:52:29.345353491 +0100
@@ -2758,16 +2758,16 @@  ix86_target_string (HOST_WIDE_INT isa, H
     { "-msgx",		OPTION_MASK_ISA_SGX },
     { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },
     { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },
-    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },
     { "-mibt",		OPTION_MASK_ISA_IBT },
     { "-mhle",		OPTION_MASK_ISA_HLE },
     { "-mmovbe",	OPTION_MASK_ISA_MOVBE },
     { "-mclzero",	OPTION_MASK_ISA_CLZERO },
-    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX },
-    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG }
+    { "-mmwaitx",	OPTION_MASK_ISA_MWAITX }
   };
   static struct ix86_target_opts isa_opts[] =
   {
+    { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },
+    { "-mavx512bitalg", OPTION_MASK_ISA_AVX512BITALG },
     { "-mvpclmulqdq",	OPTION_MASK_ISA_VPCLMULQDQ },
     { "-mgfni",		OPTION_MASK_ISA_GFNI },
     { "-mavx512vnni",	OPTION_MASK_ISA_AVX512VNNI },
@@ -4104,14 +4104,17 @@  ix86_option_override_internal (bool main
 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA;
 
 	if (processor_alias_table[i].flags & PTA_AVX5124VNNIW
-	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_AVX5124VNNIW))
+	    && !(opts->x_ix86_isa_flags2_explicit
+		 & OPTION_MASK_ISA_AVX5124VNNIW))
 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124VNNIW;
 	if (processor_alias_table[i].flags & PTA_AVX5124FMAPS
-	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_AVX5124FMAPS))
+	    && !(opts->x_ix86_isa_flags2_explicit
+		 & OPTION_MASK_ISA_AVX5124FMAPS))
 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX5124FMAPS;
 	if (processor_alias_table[i].flags & PTA_AVX512VPOPCNTDQ
-	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_AVX512VPOPCNTDQ))
-	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;
+	    && !(opts->x_ix86_isa_flags_explicit
+		 & OPTION_MASK_ISA_AVX512VPOPCNTDQ))
+	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;
 	if (processor_alias_table[i].flags & PTA_SGX
 	    && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA_SGX))
 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_SGX;
@@ -29795,13 +29798,21 @@  def_builtin (HOST_WIDE_INT mask, const c
     {
       ix86_builtins_isa[(int) code].isa = mask;
 
-      /* OPTION_MASK_ISA_AVX512VL has special meaning. Despite of generic case,
-	 where any bit set means that built-in is enable, this bit must be *and-ed*
-	 with another one. E.g.: OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL
-	 means that *both* cpuid bits must be set for the built-in to be available.
-	 Handle this here.  */
-      if (mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)
+      /* OPTION_MASK_ISA_AVX512{F,VL,BW} have special meaning. Despite of
+	 generic case, where any bit set means that built-in is enable, this
+	 bit must be *and-ed* with another one. E.g.:
+	 OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL
+	 means that *both* cpuid bits must be set for the built-in to
+	 be available. Handle this here.  */
+      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)
+	  && mask != OPTION_MASK_ISA_AVX512VL)
 	mask &= ~OPTION_MASK_ISA_AVX512VL;
+      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512BW)
+	  && mask != OPTION_MASK_ISA_AVX512BW)
+	mask &= ~OPTION_MASK_ISA_AVX512BW;
+      if ((mask & ix86_isa_flags & OPTION_MASK_ISA_AVX512F)
+	  && mask != OPTION_MASK_ISA_AVX512F)
+	mask &= ~OPTION_MASK_ISA_AVX512F;
 
       mask &= ~OPTION_MASK_ISA_64BIT;
       if (mask == 0
@@ -35364,25 +35375,28 @@  ix86_expand_builtin (tree exp, rtx targe
      Originally the builtin was not created if it wasn't applicable to the
      current ISA based on the command line switches.  With function specific
      options, we need to check in the context of the function making the call
-     whether it is supported.  Treat AVX512VL and MMX specially.  For other flags,
-     if isa includes more than one ISA bit, treat those are requiring any
-     of them.  For AVX512VL, require both AVX512VL and the non-AVX512VL
-     ISAs.  Likewise for MMX, require both MMX and the non-MMX ISAs.
+     whether it is supported.  Treat AVX512{VL,BW,F} and MMX specially.  For
+     other flags, if isa includes more than one ISA bit, treat those are
+     requiring any of them.  For AVX512VL, require both AVX512VL and the
+     non-AVX512VL ISAs.  Likewise for MMX, require both MMX and the non-MMX
+     ISAs.  Similarly for AVX512F and AVX512BW.
      Similarly for 64BIT, but we shouldn't be building such builtins
      at all, -m64 is a whole TU option.  */
   if (((ix86_builtins_isa[fcode].isa
 	& ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX
-	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI
-	    | OPTION_MASK_ISA_VPCLMULQDQ))
+	    | OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW
+	    | OPTION_MASK_ISA_AVX512F))
        && !(ix86_builtins_isa[fcode].isa
 	    & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX
-		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_GFNI
-		| OPTION_MASK_ISA_VPCLMULQDQ)
+		| OPTION_MASK_ISA_64BIT | OPTION_MASK_ISA_AVX512BW
+		| OPTION_MASK_ISA_AVX512F)
 	    & ix86_isa_flags))
       || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL)
 	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL))
-      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_GFNI)
-	  && !(ix86_isa_flags & OPTION_MASK_ISA_GFNI))
+      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512BW)
+	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512BW))
+      || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512F)
+	  && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512F))
       || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_MMX)
 	  && !(ix86_isa_flags & OPTION_MASK_ISA_MMX))
       || (ix86_builtins_isa[fcode].isa2
--- gcc/config/i386/i386-builtin.def.jj	2017-12-22 14:03:05.000000000 +0100
+++ gcc/config/i386/i386-builtin.def	2017-12-22 18:00:12.579239678 +0100
@@ -393,27 +393,27 @@  BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_rdp
 BDESC (OPTION_MASK_ISA_PKU, CODE_FOR_wrpkru,  "__builtin_ia32_wrpkru", IX86_BUILTIN_WRPKRU, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)
 
 /* VBMI2 */
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressstorev64qi_mask, "__builtin_ia32_compressstoreuqi512_mask", IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int) VOID_FTYPE_PV64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressstorev32hi_mask, "__builtin_ia32_compressstoreuhi512_mask", IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int) VOID_FTYPE_PV32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressstorev32qi_mask, "__builtin_ia32_compressstoreuqi256_mask", IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev64qi_mask, "__builtin_ia32_compressstoreuqi512_mask", IX86_BUILTIN_PCOMPRESSBSTORE512, UNKNOWN, (int) VOID_FTYPE_PV64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev32hi_mask, "__builtin_ia32_compressstoreuhi512_mask", IX86_BUILTIN_PCOMPRESSWSTORE512, UNKNOWN, (int) VOID_FTYPE_PV32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressstorev32qi_mask, "__builtin_ia32_compressstoreuqi256_mask", IX86_BUILTIN_PCOMPRESSBSTORE256, UNKNOWN, (int) VOID_FTYPE_PV32QI_V32QI_USI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressstorev16qi_mask, "__builtin_ia32_compressstoreuqi128_mask", IX86_BUILTIN_PCOMPRESSBSTORE128, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16QI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressstorev16hi_mask, "__builtin_ia32_compressstoreuhi256_mask", IX86_BUILTIN_PCOMPRESSWSTORE256, UNKNOWN, (int) VOID_FTYPE_PV16HI_V16HI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressstorev8hi_mask, "__builtin_ia32_compressstoreuhi128_mask", IX86_BUILTIN_PCOMPRESSWSTORE128, UNKNOWN, (int) VOID_FTYPE_PV8HI_V8HI_UQI)
 
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandloadqi512_mask", IX86_BUILTIN_PEXPANDBLOAD512, UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandloadqi512_maskz", IX86_BUILTIN_PEXPANDBLOAD512Z, UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandloadhi512_mask", IX86_BUILTIN_PEXPANDWLOAD512, UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandloadhi512_maskz", IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)
-
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256, UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandloadqi256_maskz", IX86_BUILTIN_PEXPANDBLOAD256Z, UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandloadhi256_mask", IX86_BUILTIN_PEXPANDWLOAD256, UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16hi_maskz, "__builtin_ia32_expandloadhi256_maskz", IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)
-
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandloadqi128_mask", IX86_BUILTIN_PEXPANDBLOAD128, UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandloadqi128_maskz", IX86_BUILTIN_PEXPANDBLOAD128Z, UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandloadhi128_mask", IX86_BUILTIN_PEXPANDWLOAD128, UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandloadhi128_maskz", IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandloadqi512_mask", IX86_BUILTIN_PEXPANDBLOAD512, UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandloadqi512_maskz", IX86_BUILTIN_PEXPANDBLOAD512Z, UNKNOWN, (int) V64QI_FTYPE_PCV64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandloadhi512_mask", IX86_BUILTIN_PEXPANDWLOAD512, UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandloadhi512_maskz", IX86_BUILTIN_PEXPANDWLOAD512Z, UNKNOWN, (int) V32HI_FTYPE_PCV32HI_V32HI_USI)
+
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandloadqi256_mask", IX86_BUILTIN_PEXPANDBLOAD256, UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandloadqi256_maskz", IX86_BUILTIN_PEXPANDBLOAD256Z, UNKNOWN, (int) V32QI_FTYPE_PCV32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandloadhi256_mask", IX86_BUILTIN_PEXPANDWLOAD256, UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16hi_maskz, "__builtin_ia32_expandloadhi256_maskz", IX86_BUILTIN_PEXPANDWLOAD256Z, UNKNOWN, (int) V16HI_FTYPE_PCV16HI_V16HI_UHI)
+
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandloadqi128_mask", IX86_BUILTIN_PEXPANDBLOAD128, UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandloadqi128_maskz", IX86_BUILTIN_PEXPANDBLOAD128Z, UNKNOWN, (int) V16QI_FTYPE_PCV16QI_V16QI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandloadhi128_mask", IX86_BUILTIN_PEXPANDWLOAD128, UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandloadhi128_maskz", IX86_BUILTIN_PEXPANDWLOAD128Z, UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)
 
 BDESC_END (SPECIAL_ARGS, ARGS)
 
@@ -2418,18 +2418,18 @@  BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTI
 BDESC (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_vpermi2varv16qi3_mask, "__builtin_ia32_vpermi2varqi128_mask", IX86_BUILTIN_VPERMI2VARQI128, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_V16QI_UHI)
 
 /* VBMI2 */
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressv64qi_mask, "__builtin_ia32_compressqi512_mask", IX86_BUILTIN_PCOMPRESSB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_compressv32hi_mask, "__builtin_ia32_compresshi512_mask", IX86_BUILTIN_PCOMPRESSW512, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressv32qi_mask, "__builtin_ia32_compressqi256_mask", IX86_BUILTIN_PCOMPRESSB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv64qi_mask, "__builtin_ia32_compressqi512_mask", IX86_BUILTIN_PCOMPRESSB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv32hi_mask, "__builtin_ia32_compresshi512_mask", IX86_BUILTIN_PCOMPRESSW512, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_compressv32qi_mask, "__builtin_ia32_compressqi256_mask", IX86_BUILTIN_PCOMPRESSB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressv16qi_mask, "__builtin_ia32_compressqi128_mask", IX86_BUILTIN_PCOMPRESSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressv16hi_mask, "__builtin_ia32_compresshi256_mask", IX86_BUILTIN_PCOMPRESSW256, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_compressv8hi_mask, "__builtin_ia32_compresshi128_mask", IX86_BUILTIN_PCOMPRESSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandqi512_mask", IX86_BUILTIN_PEXPANDB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandqi512_maskz", IX86_BUILTIN_PEXPANDB512Z, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandhi512_mask", IX86_BUILTIN_PEXPANDW512, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandhi512_maskz", IX86_BUILTIN_PEXPANDW512Z, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandqi256_mask", IX86_BUILTIN_PEXPANDB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandqi256_maskz", IX86_BUILTIN_PEXPANDB256Z, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv64qi_mask, "__builtin_ia32_expandqi512_mask", IX86_BUILTIN_PEXPANDB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv64qi_maskz, "__builtin_ia32_expandqi512_maskz", IX86_BUILTIN_PEXPANDB512Z, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32hi_mask, "__builtin_ia32_expandhi512_mask", IX86_BUILTIN_PEXPANDW512, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32hi_maskz, "__builtin_ia32_expandhi512_maskz", IX86_BUILTIN_PEXPANDW512Z, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_mask, "__builtin_ia32_expandqi256_mask", IX86_BUILTIN_PEXPANDB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_expandv32qi_maskz, "__builtin_ia32_expandqi256_maskz", IX86_BUILTIN_PEXPANDB256Z, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16qi_mask, "__builtin_ia32_expandqi128_mask", IX86_BUILTIN_PEXPANDB128, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16qi_maskz, "__builtin_ia32_expandqi128_maskz", IX86_BUILTIN_PEXPANDB128Z, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv16hi_mask, "__builtin_ia32_expandhi256_mask", IX86_BUILTIN_PEXPANDW256, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_UHI)
@@ -2437,97 +2437,97 @@  BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPT
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv8hi_mask, "__builtin_ia32_expandhi128_mask", IX86_BUILTIN_PEXPANDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_expandv8hi_maskz, "__builtin_ia32_expandhi128_maskz", IX86_BUILTIN_PEXPANDW128Z, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi, "__builtin_ia32_vpshrd_v32hi", IX86_BUILTIN_VPSHRDV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v32hi_mask, "__builtin_ia32_vpshrd_v32hi_mask", IX86_BUILTIN_VPSHRDV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi, "__builtin_ia32_vpshrd_v16hi", IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16hi_mask, "__builtin_ia32_vpshrd_v16hi_mask", IX86_BUILTIN_VPSHRDV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi, "__builtin_ia32_vpshrd_v8hi", IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8hi_mask, "__builtin_ia32_vpshrd_v8hi_mask", IX86_BUILTIN_VPSHRDV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshrd_v32hi_mask, "__builtin_ia32_vpshrd_v32hi_mask", IX86_BUILTIN_VPSHRDV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v16hi, "__builtin_ia32_vpshrd_v16hi", IX86_BUILTIN_VPSHRDV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v16hi_mask, "__builtin_ia32_vpshrd_v16hi_mask", IX86_BUILTIN_VPSHRDV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v8hi, "__builtin_ia32_vpshrd_v8hi", IX86_BUILTIN_VPSHRDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v8hi_mask, "__builtin_ia32_vpshrd_v8hi_mask", IX86_BUILTIN_VPSHRDV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si, "__builtin_ia32_vpshrd_v16si", IX86_BUILTIN_VPSHRDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v16si_mask, "__builtin_ia32_vpshrd_v16si_mask", IX86_BUILTIN_VPSHRDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si, "__builtin_ia32_vpshrd_v8si", IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8si_mask, "__builtin_ia32_vpshrd_v8si_mask", IX86_BUILTIN_VPSHRDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si, "__builtin_ia32_vpshrd_v4si", IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4si_mask, "__builtin_ia32_vpshrd_v4si_mask", IX86_BUILTIN_VPSHRDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v8si, "__builtin_ia32_vpshrd_v8si", IX86_BUILTIN_VPSHRDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v8si_mask, "__builtin_ia32_vpshrd_v8si_mask", IX86_BUILTIN_VPSHRDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v4si, "__builtin_ia32_vpshrd_v4si", IX86_BUILTIN_VPSHRDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v4si_mask, "__builtin_ia32_vpshrd_v4si_mask", IX86_BUILTIN_VPSHRDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di, "__builtin_ia32_vpshrd_v8di", IX86_BUILTIN_VPSHRDV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v8di_mask, "__builtin_ia32_vpshrd_v8di_mask", IX86_BUILTIN_VPSHRDV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di, "__builtin_ia32_vpshrd_v4di", IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v4di_mask, "__builtin_ia32_vpshrd_v4di_mask", IX86_BUILTIN_VPSHRDV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di, "__builtin_ia32_vpshrd_v2di", IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrd_v2di_mask, "__builtin_ia32_vpshrd_v2di_mask", IX86_BUILTIN_VPSHRDV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v4di, "__builtin_ia32_vpshrd_v4di", IX86_BUILTIN_VPSHRDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v4di_mask, "__builtin_ia32_vpshrd_v4di_mask", IX86_BUILTIN_VPSHRDV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v2di, "__builtin_ia32_vpshrd_v2di", IX86_BUILTIN_VPSHRDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrd_v2di_mask, "__builtin_ia32_vpshrd_v2di_mask", IX86_BUILTIN_VPSHRDV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi, "__builtin_ia32_vpshld_v32hi", IX86_BUILTIN_VPSHLDV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v32hi_mask, "__builtin_ia32_vpshld_v32hi_mask", IX86_BUILTIN_VPSHLDV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi, "__builtin_ia32_vpshld_v16hi", IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16hi_mask, "__builtin_ia32_vpshld_v16hi_mask", IX86_BUILTIN_VPSHLDV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi, "__builtin_ia32_vpshld_v8hi", IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8hi_mask, "__builtin_ia32_vpshld_v8hi_mask", IX86_BUILTIN_VPSHLDV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshld_v32hi_mask, "__builtin_ia32_vpshld_v32hi_mask", IX86_BUILTIN_VPSHLDV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v16hi, "__builtin_ia32_vpshld_v16hi", IX86_BUILTIN_VPSHLDV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v16hi_mask, "__builtin_ia32_vpshld_v16hi_mask", IX86_BUILTIN_VPSHLDV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v8hi, "__builtin_ia32_vpshld_v8hi", IX86_BUILTIN_VPSHLDV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v8hi_mask, "__builtin_ia32_vpshld_v8hi_mask", IX86_BUILTIN_VPSHLDV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si, "__builtin_ia32_vpshld_v16si", IX86_BUILTIN_VPSHLDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v16si_mask, "__builtin_ia32_vpshld_v16si_mask", IX86_BUILTIN_VPSHLDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si, "__builtin_ia32_vpshld_v8si", IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8si_mask, "__builtin_ia32_vpshld_v8si_mask", IX86_BUILTIN_VPSHLDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si, "__builtin_ia32_vpshld_v4si", IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4si_mask, "__builtin_ia32_vpshld_v4si_mask", IX86_BUILTIN_VPSHLDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v8si, "__builtin_ia32_vpshld_v8si", IX86_BUILTIN_VPSHLDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v8si_mask, "__builtin_ia32_vpshld_v8si_mask", IX86_BUILTIN_VPSHLDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v4si, "__builtin_ia32_vpshld_v4si", IX86_BUILTIN_VPSHLDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v4si_mask, "__builtin_ia32_vpshld_v4si_mask", IX86_BUILTIN_VPSHLDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di, "__builtin_ia32_vpshld_v8di", IX86_BUILTIN_VPSHLDV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v8di_mask, "__builtin_ia32_vpshld_v8di_mask", IX86_BUILTIN_VPSHLDV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di, "__builtin_ia32_vpshld_v4di", IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v4di_mask, "__builtin_ia32_vpshld_v4di_mask", IX86_BUILTIN_VPSHLDV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di, "__builtin_ia32_vpshld_v2di", IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshld_v2di_mask, "__builtin_ia32_vpshld_v2di_mask", IX86_BUILTIN_VPSHLDV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v4di, "__builtin_ia32_vpshld_v4di", IX86_BUILTIN_VPSHLDV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v4di_mask, "__builtin_ia32_vpshld_v4di_mask", IX86_BUILTIN_VPSHLDV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v2di, "__builtin_ia32_vpshld_v2di", IX86_BUILTIN_VPSHLDV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshld_v2di_mask, "__builtin_ia32_vpshld_v2di_mask", IX86_BUILTIN_VPSHLDV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT)
 
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi, "__builtin_ia32_vpshrdv_v32hi", IX86_BUILTIN_VPSHRDVV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi_mask, "__builtin_ia32_vpshrdv_v32hi_mask", IX86_BUILTIN_VPSHRDVV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v32hi_maskz, "__builtin_ia32_vpshrdv_v32hi_maskz", IX86_BUILTIN_VPSHRDVV32HI_MASKZ, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi, "__builtin_ia32_vpshrdv_v16hi", IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi_mask, "__builtin_ia32_vpshrdv_v16hi_mask", IX86_BUILTIN_VPSHRDVV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16hi_maskz, "__builtin_ia32_vpshrdv_v16hi_maskz", IX86_BUILTIN_VPSHRDVV16HI_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi, "__builtin_ia32_vpshrdv_v8hi", IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_mask, "__builtin_ia32_vpshrdv_v8hi_mask", IX86_BUILTIN_VPSHRDVV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8hi_maskz, "__builtin_ia32_vpshrdv_v8hi_maskz", IX86_BUILTIN_VPSHRDVV8HI_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshrdv_v32hi_mask, "__builtin_ia32_vpshrdv_v32hi_mask", IX86_BUILTIN_VPSHRDVV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshrdv_v32hi_maskz, "__builtin_ia32_vpshrdv_v32hi_maskz", IX86_BUILTIN_VPSHRDVV32HI_MASKZ, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v16hi, "__builtin_ia32_vpshrdv_v16hi", IX86_BUILTIN_VPSHRDVV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v16hi_mask, "__builtin_ia32_vpshrdv_v16hi_mask", IX86_BUILTIN_VPSHRDVV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v16hi_maskz, "__builtin_ia32_vpshrdv_v16hi_maskz", IX86_BUILTIN_VPSHRDVV16HI_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8hi, "__builtin_ia32_vpshrdv_v8hi", IX86_BUILTIN_VPSHRDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8hi_mask, "__builtin_ia32_vpshrdv_v8hi_mask", IX86_BUILTIN_VPSHRDVV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8hi_maskz, "__builtin_ia32_vpshrdv_v8hi_maskz", IX86_BUILTIN_VPSHRDVV8HI_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si, "__builtin_ia32_vpshrdv_v16si", IX86_BUILTIN_VPSHRDVV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si_mask, "__builtin_ia32_vpshrdv_v16si_mask", IX86_BUILTIN_VPSHRDVV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v16si_maskz, "__builtin_ia32_vpshrdv_v16si_maskz", IX86_BUILTIN_VPSHRDVV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si, "__builtin_ia32_vpshrdv_v8si", IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_mask, "__builtin_ia32_vpshrdv_v8si_mask", IX86_BUILTIN_VPSHRDVV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8si_maskz, "__builtin_ia32_vpshrdv_v8si_maskz", IX86_BUILTIN_VPSHRDVV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si, "__builtin_ia32_vpshrdv_v4si", IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_mask, "__builtin_ia32_vpshrdv_v4si_mask", IX86_BUILTIN_VPSHRDVV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4si_maskz, "__builtin_ia32_vpshrdv_v4si_maskz", IX86_BUILTIN_VPSHRDVV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8si, "__builtin_ia32_vpshrdv_v8si", IX86_BUILTIN_VPSHRDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8si_mask, "__builtin_ia32_vpshrdv_v8si_mask", IX86_BUILTIN_VPSHRDVV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v8si_maskz, "__builtin_ia32_vpshrdv_v8si_maskz", IX86_BUILTIN_VPSHRDVV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4si, "__builtin_ia32_vpshrdv_v4si", IX86_BUILTIN_VPSHRDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4si_mask, "__builtin_ia32_vpshrdv_v4si_mask", IX86_BUILTIN_VPSHRDVV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4si_maskz, "__builtin_ia32_vpshrdv_v4si_maskz", IX86_BUILTIN_VPSHRDVV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di, "__builtin_ia32_vpshrdv_v8di", IX86_BUILTIN_VPSHRDVV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_mask, "__builtin_ia32_vpshrdv_v8di_mask", IX86_BUILTIN_VPSHRDVV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v8di_maskz, "__builtin_ia32_vpshrdv_v8di_maskz", IX86_BUILTIN_VPSHRDVV8DI_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di, "__builtin_ia32_vpshrdv_v4di", IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_mask, "__builtin_ia32_vpshrdv_v4di_mask", IX86_BUILTIN_VPSHRDVV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v4di_maskz, "__builtin_ia32_vpshrdv_v4di_maskz", IX86_BUILTIN_VPSHRDVV4DI_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di, "__builtin_ia32_vpshrdv_v2di", IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_mask, "__builtin_ia32_vpshrdv_v2di_mask", IX86_BUILTIN_VPSHRDVV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshrdv_v2di_maskz, "__builtin_ia32_vpshrdv_v2di_maskz", IX86_BUILTIN_VPSHRDVV2DI_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4di, "__builtin_ia32_vpshrdv_v4di", IX86_BUILTIN_VPSHRDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4di_mask, "__builtin_ia32_vpshrdv_v4di_mask", IX86_BUILTIN_VPSHRDVV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v4di_maskz, "__builtin_ia32_vpshrdv_v4di_maskz", IX86_BUILTIN_VPSHRDVV4DI_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v2di, "__builtin_ia32_vpshrdv_v2di", IX86_BUILTIN_VPSHRDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v2di_mask, "__builtin_ia32_vpshrdv_v2di_mask", IX86_BUILTIN_VPSHRDVV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshrdv_v2di_maskz, "__builtin_ia32_vpshrdv_v2di_maskz", IX86_BUILTIN_VPSHRDVV2DI_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
 
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi, "__builtin_ia32_vpshldv_v32hi", IX86_BUILTIN_VPSHLDVV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi_mask, "__builtin_ia32_vpshldv_v32hi_mask", IX86_BUILTIN_VPSHLDVV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v32hi_maskz, "__builtin_ia32_vpshldv_v32hi_maskz", IX86_BUILTIN_VPSHLDVV32HI_MASKZ, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi, "__builtin_ia32_vpshldv_v16hi", IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi_mask, "__builtin_ia32_vpshldv_v16hi_mask", IX86_BUILTIN_VPSHLDVV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16hi_maskz, "__builtin_ia32_vpshldv_v16hi_maskz", IX86_BUILTIN_VPSHLDVV16HI_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi, "__builtin_ia32_vpshldv_v8hi", IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_mask, "__builtin_ia32_vpshldv_v8hi_mask", IX86_BUILTIN_VPSHLDVV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8hi_maskz, "__builtin_ia32_vpshldv_v8hi_maskz", IX86_BUILTIN_VPSHLDVV8HI_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshldv_v32hi_mask, "__builtin_ia32_vpshldv_v32hi_mask", IX86_BUILTIN_VPSHLDVV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpshldv_v32hi_maskz, "__builtin_ia32_vpshldv_v32hi_maskz", IX86_BUILTIN_VPSHLDVV32HI_MASKZ, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_V32HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v16hi, "__builtin_ia32_vpshldv_v16hi", IX86_BUILTIN_VPSHLDVV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v16hi_mask, "__builtin_ia32_vpshldv_v16hi_mask", IX86_BUILTIN_VPSHLDVV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v16hi_maskz, "__builtin_ia32_vpshldv_v16hi_maskz", IX86_BUILTIN_VPSHLDVV16HI_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_V16HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8hi, "__builtin_ia32_vpshldv_v8hi", IX86_BUILTIN_VPSHLDVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8hi_mask, "__builtin_ia32_vpshldv_v8hi_mask", IX86_BUILTIN_VPSHLDVV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8hi_maskz, "__builtin_ia32_vpshldv_v8hi_maskz", IX86_BUILTIN_VPSHLDVV8HI_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si, "__builtin_ia32_vpshldv_v16si", IX86_BUILTIN_VPSHLDVV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_mask, "__builtin_ia32_vpshldv_v16si_mask", IX86_BUILTIN_VPSHLDVV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v16si_maskz, "__builtin_ia32_vpshldv_v16si_maskz", IX86_BUILTIN_VPSHLDVV16SI_MASKZ, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si, "__builtin_ia32_vpshldv_v8si", IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_mask, "__builtin_ia32_vpshldv_v8si_mask", IX86_BUILTIN_VPSHLDVV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8si_maskz, "__builtin_ia32_vpshldv_v8si_maskz", IX86_BUILTIN_VPSHLDVV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si, "__builtin_ia32_vpshldv_v4si", IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_mask, "__builtin_ia32_vpshldv_v4si_mask", IX86_BUILTIN_VPSHLDVV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4si_maskz, "__builtin_ia32_vpshldv_v4si_maskz", IX86_BUILTIN_VPSHLDVV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8si, "__builtin_ia32_vpshldv_v8si", IX86_BUILTIN_VPSHLDVV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8si_mask, "__builtin_ia32_vpshldv_v8si_mask", IX86_BUILTIN_VPSHLDVV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v8si_maskz, "__builtin_ia32_vpshldv_v8si_maskz", IX86_BUILTIN_VPSHLDVV8SI_MASKZ, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4si, "__builtin_ia32_vpshldv_v4si", IX86_BUILTIN_VPSHLDVV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4si_mask, "__builtin_ia32_vpshldv_v4si_mask", IX86_BUILTIN_VPSHLDVV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4si_maskz, "__builtin_ia32_vpshldv_v4si_maskz", IX86_BUILTIN_VPSHLDVV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di, "__builtin_ia32_vpshldv_v8di", IX86_BUILTIN_VPSHLDVV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_mask, "__builtin_ia32_vpshldv_v8di_mask", IX86_BUILTIN_VPSHLDVV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)
 BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v8di_maskz, "__builtin_ia32_vpshldv_v8di_maskz", IX86_BUILTIN_VPSHLDVV8DI_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di, "__builtin_ia32_vpshldv_v4di", IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_mask, "__builtin_ia32_vpshldv_v4di_mask", IX86_BUILTIN_VPSHLDVV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v4di_maskz, "__builtin_ia32_vpshldv_v4di_maskz", IX86_BUILTIN_VPSHLDVV4DI_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di, "__builtin_ia32_vpshldv_v2di", IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_mask, "__builtin_ia32_vpshldv_v2di_mask", IX86_BUILTIN_VPSHLDVV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
-BDESC (OPTION_MASK_ISA_AVX512VBMI2, CODE_FOR_vpshldv_v2di_maskz, "__builtin_ia32_vpshldv_v2di_maskz", IX86_BUILTIN_VPSHLDVV2DI_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4di, "__builtin_ia32_vpshldv_v4di", IX86_BUILTIN_VPSHLDVV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4di_mask, "__builtin_ia32_vpshldv_v4di_mask", IX86_BUILTIN_VPSHLDVV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v4di_maskz, "__builtin_ia32_vpshldv_v4di_maskz", IX86_BUILTIN_VPSHLDVV4DI_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v2di, "__builtin_ia32_vpshldv_v2di", IX86_BUILTIN_VPSHLDVV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v2di_mask, "__builtin_ia32_vpshldv_v2di_mask", IX86_BUILTIN_VPSHLDVV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
+BDESC (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpshldv_v2di_maskz, "__builtin_ia32_vpshldv_v2di_maskz", IX86_BUILTIN_VPSHLDVV2DI_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_INT)
 
 /* GFNI */
 BDESC (OPTION_MASK_ISA_GFNI, CODE_FOR_vgf2p8affineinvqb_v64qi, "__builtin_ia32_vgf2p8affineinvqb_v64qi", IX86_BUILTIN_VGF2P8AFFINEINVQB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_INT)
@@ -2596,6 +2596,40 @@  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTI
 BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX, CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di", IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
 BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX512F, CODE_FOR_vpclmulqdq_v8di, "__builtin_ia32_vpclmulqdq_v8di", IX86_BUILTIN_VPCLMULQDQ8, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_INT)
 
+/* VPOPCNTDQ */
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si, "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask", IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di, "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask", IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_UQI)
+
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di, "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask, "__builtin_ia32_vpopcountq_v4di_mask", IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_UQI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di, "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask, "__builtin_ia32_vpopcountq_v2di_mask", IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_UQI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si, "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask, "__builtin_ia32_vpopcountd_v4si_mask", IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si, "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI)
+BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask, "__builtin_ia32_vpopcountd_v8si_mask", IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_UHI)
+
+/* BITALG */
+BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi, "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI, UNKNOWN, (int) V64QI_FTYPE_V64QI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv64qi_mask, "__builtin_ia32_vpopcountb_v64qi_mask", IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv32qi, "__builtin_ia32_vpopcountb_v32qi", IX86_BUILTIN_VPOPCOUNTBV32QI, UNKNOWN, (int) V32QI_FTYPE_V32QI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv32qi_mask, "__builtin_ia32_vpopcountb_v32qi_mask", IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv16qi, "__builtin_ia32_vpopcountb_v16qi", IX86_BUILTIN_VPOPCOUNTBV16QI, UNKNOWN, (int) V16QI_FTYPE_V16QI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv16qi_mask, "__builtin_ia32_vpopcountb_v16qi_mask", IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
+
+BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi, "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW, CODE_FOR_vpopcountv32hi_mask, "__builtin_ia32_vpopcountw_v32hi_mask", IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv16hi, "__builtin_ia32_vpopcountw_v16hi", IX86_BUILTIN_VPOPCOUNTWV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv16hi_mask, "__builtin_ia32_vpopcountw_v16hi_mask", IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_UHI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8hi, "__builtin_ia32_vpopcountw_v8hi", IX86_BUILTIN_VPOPCOUNTWV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8hi_mask, "__builtin_ia32_vpopcountw_v8hi_mask", IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)
+
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW, CODE_FOR_avx512vl_vpshufbitqmbv8di_mask, "__builtin_ia32_vpshufbitqmb512_mask", IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int) UQI_FTYPE_V8DI_V8DI_UQI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW, CODE_FOR_avx512vl_vpshufbitqmbv4di_mask, "__builtin_ia32_vpshufbitqmb256_mask", IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int) USI_FTYPE_V4DI_V4DI_USI)
+BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_vpshufbitqmbv2di_mask, "__builtin_ia32_vpshufbitqmb128_mask", IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int) UHI_FTYPE_V2DI_V2DI_UHI)
+
 /* Builtins with rounding support.  */
 BDESC_END (ARGS, ROUND_ARGS)
 
@@ -2783,20 +2817,6 @@  BDESC (OPTION_MASK_ISA_AVX5124VNNIW, COD
 BDESC (OPTION_MASK_ISA_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssd_mask, "__builtin_ia32_vp4dpwssd_mask", IX86_BUILTIN_4DPWSSD_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)
 BDESC (OPTION_MASK_ISA_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssds, "__builtin_ia32_vp4dpwssds", IX86_BUILTIN_4DPWSSDS, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI)
 BDESC (OPTION_MASK_ISA_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssds_mask, "__builtin_ia32_vp4dpwssds_mask", IX86_BUILTIN_4DPWSSDS_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si, "__builtin_ia32_vpopcountd_v16si", IX86_BUILTIN_VPOPCOUNTDV16SI, UNKNOWN, (int) V16SI_FTYPE_V16SI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv16si_mask, "__builtin_ia32_vpopcountd_v16si_mask", IX86_BUILTIN_VPOPCOUNTDV16SI_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di, "__builtin_ia32_vpopcountq_v8di", IX86_BUILTIN_VPOPCOUNTQV8DI, UNKNOWN, (int) V8DI_FTYPE_V8DI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ, CODE_FOR_vpopcountv8di_mask, "__builtin_ia32_vpopcountq_v8di_mask", IX86_BUILTIN_VPOPCOUNTQV8DI_MASK, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_UQI)
-
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di, "__builtin_ia32_vpopcountq_v4di", IX86_BUILTIN_VPOPCOUNTQV4DI, UNKNOWN, (int) V4DI_FTYPE_V4DI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4di_mask, "__builtin_ia32_vpopcountq_v4di_mask", IX86_BUILTIN_VPOPCOUNTQV4DI_MASK, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di, "__builtin_ia32_vpopcountq_v2di", IX86_BUILTIN_VPOPCOUNTQV2DI, UNKNOWN, (int) V2DI_FTYPE_V2DI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv2di_mask, "__builtin_ia32_vpopcountq_v2di_mask", IX86_BUILTIN_VPOPCOUNTQV2DI_MASK, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_UQI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si, "__builtin_ia32_vpopcountd_v4si", IX86_BUILTIN_VPOPCOUNTDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv4si_mask, "__builtin_ia32_vpopcountd_v4si_mask", IX86_BUILTIN_VPOPCOUNTDV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si, "__builtin_ia32_vpopcountd_v8si", IX86_BUILTIN_VPOPCOUNTDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI)
-BDESC (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512VL, CODE_FOR_vpopcountv8si_mask, "__builtin_ia32_vpopcountd_v8si_mask", IX86_BUILTIN_VPOPCOUNTDV8SI_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_UHI)
-
 
 /* RDPID */
 BDESC (OPTION_MASK_ISA_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid", IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
@@ -2815,24 +2835,6 @@  BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_va
 BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v32qi, "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
 BDESC (OPTION_MASK_ISA_VAES, CODE_FOR_vaesenclast_v64qi, "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
 
-/* BITALG */
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi, "__builtin_ia32_vpopcountb_v64qi", IX86_BUILTIN_VPOPCOUNTBV64QI, UNKNOWN, (int) V64QI_FTYPE_V64QI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv64qi_mask, "__builtin_ia32_vpopcountb_v64qi_mask", IX86_BUILTIN_VPOPCOUNTBV64QI_MASK, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32qi, "__builtin_ia32_vpopcountb_v32qi", IX86_BUILTIN_VPOPCOUNTBV32QI, UNKNOWN, (int) V32QI_FTYPE_V32QI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32qi_mask, "__builtin_ia32_vpopcountb_v32qi_mask", IX86_BUILTIN_VPOPCOUNTBV32QI_MASK, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16qi, "__builtin_ia32_vpopcountb_v16qi", IX86_BUILTIN_VPOPCOUNTBV16QI, UNKNOWN, (int) V16QI_FTYPE_V16QI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16qi_mask, "__builtin_ia32_vpopcountb_v16qi_mask", IX86_BUILTIN_VPOPCOUNTBV16QI_MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
-
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi, "__builtin_ia32_vpopcountw_v32hi", IX86_BUILTIN_VPOPCOUNTWV32HI, UNKNOWN, (int) V32HI_FTYPE_V32HI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv32hi_mask, "__builtin_ia32_vpopcountw_v32hi_mask", IX86_BUILTIN_VPOPCOUNTQV32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V32HI_V32HI_USI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16hi, "__builtin_ia32_vpopcountw_v16hi", IX86_BUILTIN_VPOPCOUNTWV16HI, UNKNOWN, (int) V16HI_FTYPE_V16HI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv16hi_mask, "__builtin_ia32_vpopcountw_v16hi_mask", IX86_BUILTIN_VPOPCOUNTQV16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V16HI_V16HI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi, "__builtin_ia32_vpopcountw_v8hi", IX86_BUILTIN_VPOPCOUNTWV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_vpopcountv8hi_mask, "__builtin_ia32_vpopcountw_v8hi_mask", IX86_BUILTIN_VPOPCOUNTQV8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_UQI)
-
-BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_vpshufbitqmbv2di_mask, "__builtin_ia32_vpshufbitqmb128_mask", IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int) UHI_FTYPE_V2DI_V2DI_UHI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, CODE_FOR_avx512vl_vpshufbitqmbv4di_mask, "__builtin_ia32_vpshufbitqmb256_mask", IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int) USI_FTYPE_V4DI_V4DI_USI)
-BDESC (OPTION_MASK_ISA_AVX512BITALG, CODE_FOR_avx512vl_vpshufbitqmbv8di_mask, "__builtin_ia32_vpshufbitqmb512_mask", IX86_BUILTIN_VPSHUFBITQMB512_MASK, UNKNOWN, (int) UQI_FTYPE_V8DI_V8DI_UQI)
 BDESC_END (ARGS2, MPX)
 
 /* Builtins for MPX.  */
--- gcc/config/i386/avx512vbmi2intrin.h.jj	2017-11-30 09:42:46.000000000 +0100
+++ gcc/config/i386/avx512vbmi2intrin.h	2017-12-22 17:37:50.395929142 +0100
@@ -28,127 +28,11 @@ 
 #ifndef __AVX512VBMI2INTRIN_H_INCLUDED
 #define __AVX512VBMI2INTRIN_H_INCLUDED
 
-#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)
+#if !defined(__AVX512VBMI2__)
 #pragma GCC push_options
-#pragma GCC target("avx512vbmi2,avx512bw")
-#define __DISABLE_AVX512VBMI2BW__
-#endif /* __AVX512VBMI2BW__ */
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i __C)
-{
-  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,
-						(__v64qi)__A, (__mmask64)__B);
-}
-
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)
-{
-  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,
-			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);
-}
-
-
-extern __inline void
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i __C)
-{
-  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,
-							(__mmask64) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i __C)
-{
-  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,
-						(__v32hi)__A, (__mmask32)__B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)
-{
-  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,
-			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);
-}
-
-extern __inline void
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B, __m512i __C)
-{
-  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,
-							(__mmask32) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)
-{
-  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,
-						    (__v64qi) __A,
-						    (__mmask64) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)
-{
-  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,
-			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const void * __C)
-{
-  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *) __C,
-					(__v64qi) __A, (__mmask64) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)
-{
-  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *) __B,
-			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)
-{
-  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,
-						    (__v32hi) __A,
-						    (__mmask32) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)
-{
-  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,
-			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const void * __C)
-{
-  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *) __C,
-					(__v32hi) __A, (__mmask32) __B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)
-{
-  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *) __B,
-			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);
-}
+#pragma GCC target("avx512vbmi2")
+#define __DISABLE_AVX512VBMI2__
+#endif /* __AVX512VBMI2__ */
 
 #ifdef __OPTIMIZE__
 extern __inline __m512i
@@ -161,23 +45,6 @@  _mm512_shrdi_epi16 (__m512i __A, __m512i
 
 extern __inline __m512i
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D,
-								int __E)
-{
-  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,
-			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int __D)
-{
-  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,
-	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (), (__mmask32)__A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm512_shrdi_epi32 (__m512i __A, __m512i __B, int __C)
 {
   return (__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)__A, (__v16si) __B,
@@ -235,23 +102,6 @@  _mm512_shldi_epi16 (__m512i __A, __m512i
 
 extern __inline __m512i
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D,
-								int __E)
-{
-  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,
-			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int __D)
-{
-  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,
-	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (), (__mmask32)__A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm512_shldi_epi32 (__m512i __A, __m512i __B, int __C)
 {
   return (__m512i) __builtin_ia32_vpshld_v16si ((__v16si)__A, (__v16si) __B,
@@ -302,13 +152,6 @@  _mm512_maskz_shldi_epi64 (__mmask8 __A,
 #define _mm512_shrdi_epi16(A, B, C) \
   ((__m512i) __builtin_ia32_vpshrd_v32hi ((__v32hi)(__m512i)(A), \
 						(__v32hi)(__m512i)(B),(int)(C))
-#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \
-  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \
-	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
-#define _mm512_maskz_shrdi_epi16(A, B, C, D) \
-  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \
-	(__v32hi)(__m512i)(C),(int)(D), \
-	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
 #define _mm512_shrdi_epi32(A, B, C) \
   ((__m512i) __builtin_ia32_vpshrd_v16si ((__v16si)(__m512i)(A), \
 	(__v16si)(__m512i)(B),(int)(C))
@@ -332,13 +175,6 @@  _mm512_maskz_shldi_epi64 (__mmask8 __A,
 #define _mm512_shldi_epi16(A, B, C) \
   ((__m512i) __builtin_ia32_vpshld_v32hi ((__v32hi)(__m512i)(A), \
 						(__v32hi)(__m512i)(B),(int)(C))
-#define _mm512_mask_shldi_epi16(A, B, C, D, E) \
-  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \
-	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
-#define _mm512_maskz_shldi_epi16(A, B, C, D) \
-  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \
-	(__v32hi)(__m512i)(C),(int)(D), 				\
-	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
 #define _mm512_shldi_epi32(A, B, C) \
   ((__m512i) __builtin_ia32_vpshld_v16si ((__v16si)(__m512i)(A), 	\
 				(__v16si)(__m512i)(B),(int)(C))
@@ -371,22 +207,6 @@  _mm512_shrdv_epi16 (__m512i __A, __m512i
 
 extern __inline __m512i
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D)
-{
-  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,
-				(__v32hi) __C, (__v32hi) __D, (__mmask32)__B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C, __m512i __D)
-{
-  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,
-				(__v32hi) __C, (__v32hi) __D, (__mmask32)__A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm512_shrdv_epi32 (__m512i __A, __m512i __B, __m512i __C)
 {
   return (__m512i) __builtin_ia32_vpshrdv_v16si ((__v16si)__A, (__v16si) __B,
@@ -442,22 +262,6 @@  _mm512_shldv_epi16 (__m512i __A, __m512i
 
 extern __inline __m512i
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D)
-{
-  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,
-				(__v32hi) __C, (__v32hi) __D, (__mmask32)__B);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C, __m512i __D)
-{
-  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,
-				(__v32hi) __C, (__v32hi) __D, (__mmask32)__A);
-}
-
-extern __inline __m512i
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm512_shldv_epi32 (__m512i __A, __m512i __B, __m512i __C)
 {
   return (__m512i) __builtin_ia32_vpshldv_v16si ((__v16si)__A, (__v16si) __B,
@@ -504,6 +308,218 @@  _mm512_maskz_shldv_epi64 (__mmask8 __A,
 						(__v8di) __D, (__mmask8)__A);
 }
 
+#ifdef __DISABLE_AVX512VBMI2__
+#undef __DISABLE_AVX512VBMI2__
+
+#pragma GCC pop_options
+#endif /* __DISABLE_AVX512VBMI2__ */
+
+#if !defined(__AVX512VBMI2__) || !defined(__AVX512BW__)
+#pragma GCC push_options
+#pragma GCC target("avx512vbmi2,avx512bw")
+#define __DISABLE_AVX512VBMI2BW__
+#endif /* __AVX512VBMI2BW__ */
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_epi8 (__m512i __A, __mmask64 __B, __m512i __C)
+{
+  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__C,
+						(__v64qi)__A, (__mmask64)__B);
+}
+
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_epi8 (__mmask64 __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)__B,
+			(__v64qi)_mm512_setzero_si512 (), (__mmask64)__A);
+}
+
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_epi8 (void * __A, __mmask64 __B, __m512i __C)
+{
+  __builtin_ia32_compressstoreuqi512_mask ((__v64qi *) __A, (__v64qi) __C,
+							(__mmask64) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compress_epi16 (__m512i __A, __mmask32 __B, __m512i __C)
+{
+  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__C,
+						(__v32hi)__A, (__mmask32)__B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_compress_epi16 (__mmask32 __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)__B,
+			(__v32hi)_mm512_setzero_si512 (), (__mmask32)__A);
+}
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_compressstoreu_epi16 (void * __A, __mmask32 __B, __m512i __C)
+{
+  __builtin_ia32_compressstoreuhi512_mask ((__v32hi *) __A, (__v32hi) __C,
+							(__mmask32) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_epi8 (__m512i __A, __mmask64 __B, __m512i __C)
+{
+  return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi) __C,
+						    (__v64qi) __A,
+						    (__mmask64) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_epi8 (__mmask64 __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_expandqi512_maskz ((__v64qi) __B,
+			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_epi8 (__m512i __A, __mmask64 __B, const void * __C)
+{
+  return (__m512i) __builtin_ia32_expandloadqi512_mask ((const __v64qi *) __C,
+					(__v64qi) __A, (__mmask64) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_epi8 (__mmask64 __A, const void * __B)
+{
+  return (__m512i) __builtin_ia32_expandloadqi512_maskz ((const __v64qi *) __B,
+			(__v64qi) _mm512_setzero_si512 (), (__mmask64) __A);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expand_epi16 (__m512i __A, __mmask32 __B, __m512i __C)
+{
+  return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi) __C,
+						    (__v32hi) __A,
+						    (__mmask32) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expand_epi16 (__mmask32 __A, __m512i __B)
+{
+  return (__m512i) __builtin_ia32_expandhi512_maskz ((__v32hi) __B,
+			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_expandloadu_epi16 (__m512i __A, __mmask32 __B, const void * __C)
+{
+  return (__m512i) __builtin_ia32_expandloadhi512_mask ((const __v32hi *) __C,
+					(__v32hi) __A, (__mmask32) __B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_expandloadu_epi16 (__mmask32 __A, const void * __B)
+{
+  return (__m512i) __builtin_ia32_expandloadhi512_maskz ((const __v32hi *) __B,
+			(__v32hi) _mm512_setzero_si512 (), (__mmask32) __A);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shrdi_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D,
+								int __E)
+{
+  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__C,
+			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shrdi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int __D)
+{
+  return (__m512i)__builtin_ia32_vpshrd_v32hi_mask ((__v32hi)__B,
+	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (), (__mmask32)__A);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shldi_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D,
+								int __E)
+{
+  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__C,
+			(__v32hi) __D, __E, (__v32hi) __A, (__mmask32)__B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shldi_epi16 (__mmask32 __A, __m512i __B, __m512i __C, int __D)
+{
+  return (__m512i)__builtin_ia32_vpshld_v32hi_mask ((__v32hi)__B,
+	(__v32hi) __C, __D, (__v32hi) _mm512_setzero_si512 (), (__mmask32)__A);
+}
+
+#else
+#define _mm512_mask_shrdi_epi16(A, B, C, D, E) \
+  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(C), \
+	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
+#define _mm512_maskz_shrdi_epi16(A, B, C, D) \
+  ((__m512i) __builtin_ia32_vpshrd_v32hi_mask ((__v32hi)(__m512i)(B), \
+	(__v32hi)(__m512i)(C),(int)(D), \
+	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
+#define _mm512_mask_shldi_epi16(A, B, C, D, E) \
+  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(C), \
+	(__v32hi)(__m512i)(D), (int)(E), (__v32hi)(__m512i)(A),(__mmask32)(B))
+#define _mm512_maskz_shldi_epi16(A, B, C, D) \
+  ((__m512i) __builtin_ia32_vpshld_v32hi_mask ((__v32hi)(__m512i)(B),   \
+	(__v32hi)(__m512i)(C),(int)(D), 				\
+	(__v32hi)(__m512i)_mm512_setzero_si512 (), (__mmask32)(A))
+#endif
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shrdv_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D)
+{
+  return (__m512i)__builtin_ia32_vpshrdv_v32hi_mask ((__v32hi)__A,
+				(__v32hi) __C, (__v32hi) __D, (__mmask32)__B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shrdv_epi16 (__mmask32 __A, __m512i __B, __m512i __C, __m512i __D)
+{
+  return (__m512i)__builtin_ia32_vpshrdv_v32hi_maskz ((__v32hi)__B,
+				(__v32hi) __C, (__v32hi) __D, (__mmask32)__A);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_mask_shldv_epi16 (__m512i __A, __mmask32 __B, __m512i __C, __m512i __D)
+{
+  return (__m512i)__builtin_ia32_vpshldv_v32hi_mask ((__v32hi)__A,
+				(__v32hi) __C, (__v32hi) __D, (__mmask32)__B);
+}
+
+extern __inline __m512i
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm512_maskz_shldv_epi16 (__mmask32 __A, __m512i __B, __m512i __C, __m512i __D)
+{
+  return (__m512i)__builtin_ia32_vpshldv_v32hi_maskz ((__v32hi)__B,
+				(__v32hi) __C, (__v32hi) __D, (__mmask32)__A);
+}
+
 #ifdef __DISABLE_AVX512VBMI2BW__
 #undef __DISABLE_AVX512VBMI2BW__
 
--- gcc/config/i386/avx512bitalgintrin.h.jj	2017-12-22 14:00:04.000000000 +0100
+++ gcc/config/i386/avx512bitalgintrin.h	2017-12-22 17:39:52.615409924 +0100
@@ -143,23 +143,6 @@  _mm256_maskz_popcnt_epi8 (__mmask32 __U,
 						 _mm256_setzero_si256 (),
 						(__mmask32) __U);
 }
-extern __inline __mmask16
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)
-{
-  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,
-						 (__v2di) __B,
-						 (__mmask16) -1);
-}
-
-extern __inline __mmask16
-__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A, __m128i __B)
-{
-  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,
-						 (__v2di) __B,
-						 (__mmask16) __M);
-}
 
 extern __inline __mmask32
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@@ -191,6 +174,24 @@  _mm256_mask_bitshuffle_epi64_mask (__mma
 #define __DISABLE_AVX512BITALGVL__
 #endif /* __AVX512VLBW__ */
 
+extern __inline __mmask16
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_bitshuffle_epi64_mask (__m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__mmask16) -1);
+}
+
+extern __inline __mmask16
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_mask_bitshuffle_epi64_mask (__mmask16 __M, __m128i __A, __m128i __B)
+{
+  return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask ((__v2di) __A,
+						 (__v2di) __B,
+						 (__mmask16) __M);
+}
+
 extern __inline __m256i
 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_popcnt_epi8 (__m256i __A)
--- gcc/common/config/i386/i386-common.c.jj	2017-12-22 14:00:03.000000000 +0100
+++ gcc/common/config/i386/i386-common.c	2017-12-22 15:09:07.875074385 +0100
@@ -84,8 +84,10 @@  along with GCC; see the file COPYING3.
   (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)
 #define OPTION_MASK_ISA_AVX512VNNI_SET \
   (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)
-#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET OPTION_MASK_ISA_AVX512VPOPCNTDQ
-#define OPTION_MASK_ISA_AVX512BITALG_SET OPTION_MASK_ISA_AVX512BITALG
+#define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \
+  (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512F_SET)
+#define OPTION_MASK_ISA_AVX512BITALG_SET \
+  (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512F_SET)
 #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM
 #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW
 #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED
@@ -187,7 +189,8 @@  along with GCC; see the file COPYING3.
    | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
    | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
    | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
-   | OPTION_MASK_ISA_AVX512VNNI_UNSET)
+   | OPTION_MASK_ISA_AVX512VNNI_UNSET | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
+   | OPTION_MASK_ISA_AVX512BITALG_UNSET)
 #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
 #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF
 #define OPTION_MASK_ISA_AVX512ER_UNSET OPTION_MASK_ISA_AVX512ER
@@ -257,6 +260,11 @@  along with GCC; see the file COPYING3.
   (OPTION_MASK_ISA_MMX_UNSET \
    | OPTION_MASK_ISA_SSE_UNSET)
 
+#define OPTION_MASK_ISA2_AVX512F_UNSET \
+  (OPTION_MASK_ISA_AVX5124FMAPS_UNSET | OPTION_MASK_ISA_AVX5124VNNIW_UNSET)
+#define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
+  (OPTION_MASK_ISA2_AVX512F_UNSET | OPTION_MASK_ISA_MPX)
+
 /* Implement TARGET_HANDLE_OPTION.  */
 
 bool
@@ -278,11 +286,11 @@  ix86_handle_option (struct gcc_options *
 	  opts->x_ix86_isa_flags
 	    &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;
 	  opts->x_ix86_isa_flags2
-	    &= ~OPTION_MASK_ISA_MPX;
+	    &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;
 	  opts->x_ix86_isa_flags_explicit
 	    |= OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;
 	  opts->x_ix86_isa_flags2_explicit
-	    |= OPTION_MASK_ISA_MPX;
+	    |= OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;
 
 	  opts->x_target_flags &= ~MASK_80387;
 	}
@@ -339,6 +347,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -352,6 +362,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -365,6 +377,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -378,6 +392,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -391,6 +407,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -404,6 +422,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -417,6 +437,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -430,6 +452,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -443,20 +467,8 @@  ix86_handle_option (struct gcc_options *
 	{
 	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;
 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_UNSET;
-
-	  /* Turn off additional isa flags.  */
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX5124FMAPS_UNSET;
-	  opts->x_ix86_isa_flags2_explicit
-		|= OPTION_MASK_ISA_AVX5124FMAPS_UNSET;
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX5124VNNIW_UNSET;
-	  opts->x_ix86_isa_flags2_explicit
-		|= OPTION_MASK_ISA_AVX5124VNNIW_UNSET;
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
-	  opts->x_ix86_isa_flags2_explicit
-		|= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX512BITALG_UNSET;
-	  opts->x_ix86_isa_flags2_explicit
-		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;
+	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
 	}
       return true;
 
@@ -639,30 +651,28 @@  ix86_handle_option (struct gcc_options *
     case OPT_mavx512vpopcntdq:
       if (value)
 	{
-	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
-	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
-	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
-	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
+	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
+	  opts->x_ix86_isa_flags_explicit
+	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
 	}
       else
 	{
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
-	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
+	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
+	  opts->x_ix86_isa_flags_explicit
+	    |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
 	}
       return true;
 
     case OPT_mavx512bitalg:
       if (value)
 	{
-	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA_AVX512BITALG_SET;
-	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA_AVX512BITALG_SET;
-	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
-	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
+	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;
+	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BITALG_SET;
 	}
       else
 	{
-	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA_AVX512BITALG_UNSET;
-	  opts->x_ix86_isa_flags2_explicit
+	  opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512BITALG_UNSET;
+	  opts->x_ix86_isa_flags_explicit
 		|= OPTION_MASK_ISA_AVX512BITALG_UNSET;
 	}
       return true;
@@ -779,6 +789,8 @@  ix86_handle_option (struct gcc_options *
     case OPT_mno_sse4:
       opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;
       opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;
+      opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
+      opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
       return true;
 
     case OPT_msse4a: