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 <ja...@redhat.com>; Kirill Yukhin <kirill.yuk...@gmail.com>;
> Uros Bizjak <ubiz...@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-ow...@gcc.gnu.org [mailto:gcc-patches-
> > ow...@gcc.gnu.org] On Behalf Of Jakub Jelinek
> > Sent: Friday, December 22, 2017 7:40 PM
> > To: Kirill Yukhin <kirill.yuk...@gmail.com>; Uros Bizjak <ubiz...@gmail.com>
> > Cc: Koval, Julia <julia.ko...@intel.com>; GCC Patches <gcc-
> > patc...@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  <ja...@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

Attachment: 0001-bitalg-fix.patch
Description: 0001-bitalg-fix.patch

Reply via email to