i386.c (enum ix86_builtins): Reorder enumerators...
authorJakub Jelinek <jakub@redhat.com>
Tue, 16 Aug 2016 19:27:41 +0000 (21:27 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 16 Aug 2016 19:27:41 +0000 (21:27 +0200)
* config/i386/i386.c (enum ix86_builtins): Reorder enumerators, so
that builtins not mentioned in bdesc_* arrays come first, then
the ones mentioned in bdesc_* arrays in the order they appear in
the arrays in between IX86_BUILTIN__BDESC_*_FIRST and
IX86_BUILTIN__BDESC_*_LAST enumerator.
(bdesc_mpx): Fix up a comment typo.
(bdesc_multi_arg): Remove __builtin_ia32_vpcomne[bwdq] and
__builtin_ia32_vpcomneu[bwdq] builtins.
(BDESC_VERIFY, BDESC_VERIFYS): Define.
(ix86_init_mmx_sse_builtins, ix86_init_mpx_builtins): Verify
enum ix86_builtins ordering.
(ix86_expand_builtin): Use enum ix86_builtins ordering assumption
for direct bdesc_* array member access instead of searching all the
arrays until an fcode match is found.

From-SVN: r239512

gcc/ChangeLog
gcc/config/i386/i386.c

index b128931ccb3830411e3b8bf89d0da0c121c836ca..9667b7ce268f4fd0a18ff98e7a13ec952e70d7bc 100644 (file)
@@ -1,3 +1,20 @@
+2016-08-16  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/i386/i386.c (enum ix86_builtins): Reorder enumerators, so
+       that builtins not mentioned in bdesc_* arrays come first, then
+       the ones mentioned in bdesc_* arrays in the order they appear in
+       the arrays in between IX86_BUILTIN__BDESC_*_FIRST and
+       IX86_BUILTIN__BDESC_*_LAST enumerator.
+       (bdesc_mpx): Fix up a comment typo.
+       (bdesc_multi_arg): Remove __builtin_ia32_vpcomne[bwdq] and
+       __builtin_ia32_vpcomneu[bwdq] builtins.
+       (BDESC_VERIFY, BDESC_VERIFYS): Define.
+       (ix86_init_mmx_sse_builtins, ix86_init_mpx_builtins): Verify
+       enum ix86_builtins ordering.
+       (ix86_expand_builtin): Use enum ix86_builtins ordering assumption
+       for direct bdesc_* array member access instead of searching all the
+       arrays until an fcode match is found.
+
 2016-08-16  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (*ashl<mode>3_mask): Rewrite define_insn
index 02bfcbf49b23ddfe303715386aa8f99e8c7243f3..3805817f8683917347519fa7b68f4254f3e8ea40 100644 (file)
@@ -30512,40 +30512,159 @@ ix86_get_builtin_func_type (enum ix86_builtin_func_type tcode)
 }
 
 
-/* Codes for all the SSE/MMX builtins.  */
+/* Codes for all the SSE/MMX builtins.  Builtins not mentioned in any
+   bdesc_* arrays below should come first, then builtins for each bdesc_*
+   array in ascending order, so that we can use direct array accesses.  */
 enum ix86_builtins
 {
-  IX86_BUILTIN_ADDPS,
-  IX86_BUILTIN_ADDSS,
-  IX86_BUILTIN_DIVPS,
-  IX86_BUILTIN_DIVSS,
-  IX86_BUILTIN_MULPS,
-  IX86_BUILTIN_MULSS,
-  IX86_BUILTIN_SUBPS,
-  IX86_BUILTIN_SUBSS,
-
-  IX86_BUILTIN_CMPEQPS,
-  IX86_BUILTIN_CMPLTPS,
-  IX86_BUILTIN_CMPLEPS,
-  IX86_BUILTIN_CMPGTPS,
-  IX86_BUILTIN_CMPGEPS,
-  IX86_BUILTIN_CMPNEQPS,
-  IX86_BUILTIN_CMPNLTPS,
-  IX86_BUILTIN_CMPNLEPS,
-  IX86_BUILTIN_CMPNGTPS,
-  IX86_BUILTIN_CMPNGEPS,
-  IX86_BUILTIN_CMPORDPS,
-  IX86_BUILTIN_CMPUNORDPS,
-  IX86_BUILTIN_CMPEQSS,
-  IX86_BUILTIN_CMPLTSS,
-  IX86_BUILTIN_CMPLESS,
-  IX86_BUILTIN_CMPNEQSS,
-  IX86_BUILTIN_CMPNLTSS,
-  IX86_BUILTIN_CMPNLESS,
-  IX86_BUILTIN_CMPORDSS,
-  IX86_BUILTIN_CMPUNORDSS,
+  IX86_BUILTIN_MASKMOVQ,
+  IX86_BUILTIN_LDMXCSR,
+  IX86_BUILTIN_STMXCSR,
+  IX86_BUILTIN_MASKMOVDQU,
+  IX86_BUILTIN_PSLLDQ128,
+  IX86_BUILTIN_CLFLUSH,
+  IX86_BUILTIN_MONITOR,
+  IX86_BUILTIN_MWAIT,
+  IX86_BUILTIN_CLZERO,
+  IX86_BUILTIN_VEC_INIT_V2SI,
+  IX86_BUILTIN_VEC_INIT_V4HI,
+  IX86_BUILTIN_VEC_INIT_V8QI,
+  IX86_BUILTIN_VEC_EXT_V2DF,
+  IX86_BUILTIN_VEC_EXT_V2DI,
+  IX86_BUILTIN_VEC_EXT_V4SF,
+  IX86_BUILTIN_VEC_EXT_V4SI,
+  IX86_BUILTIN_VEC_EXT_V8HI,
+  IX86_BUILTIN_VEC_EXT_V2SI,
+  IX86_BUILTIN_VEC_EXT_V4HI,
+  IX86_BUILTIN_VEC_EXT_V16QI,
+  IX86_BUILTIN_VEC_SET_V2DI,
+  IX86_BUILTIN_VEC_SET_V4SF,
+  IX86_BUILTIN_VEC_SET_V4SI,
+  IX86_BUILTIN_VEC_SET_V8HI,
+  IX86_BUILTIN_VEC_SET_V4HI,
+  IX86_BUILTIN_VEC_SET_V16QI,
+  IX86_BUILTIN_GATHERSIV2DF,
+  IX86_BUILTIN_GATHERSIV4DF,
+  IX86_BUILTIN_GATHERDIV2DF,
+  IX86_BUILTIN_GATHERDIV4DF,
+  IX86_BUILTIN_GATHERSIV4SF,
+  IX86_BUILTIN_GATHERSIV8SF,
+  IX86_BUILTIN_GATHERDIV4SF,
+  IX86_BUILTIN_GATHERDIV8SF,
+  IX86_BUILTIN_GATHERSIV2DI,
+  IX86_BUILTIN_GATHERSIV4DI,
+  IX86_BUILTIN_GATHERDIV2DI,
+  IX86_BUILTIN_GATHERDIV4DI,
+  IX86_BUILTIN_GATHERSIV4SI,
+  IX86_BUILTIN_GATHERSIV8SI,
+  IX86_BUILTIN_GATHERDIV4SI,
+  IX86_BUILTIN_GATHERDIV8SI,
+  IX86_BUILTIN_VFMSUBSD3_MASK3,
+  IX86_BUILTIN_VFMSUBSS3_MASK3,
+  IX86_BUILTIN_GATHER3SIV8SF,
+  IX86_BUILTIN_GATHER3SIV4SF,
+  IX86_BUILTIN_GATHER3SIV4DF,
+  IX86_BUILTIN_GATHER3SIV2DF,
+  IX86_BUILTIN_GATHER3DIV8SF,
+  IX86_BUILTIN_GATHER3DIV4SF,
+  IX86_BUILTIN_GATHER3DIV4DF,
+  IX86_BUILTIN_GATHER3DIV2DF,
+  IX86_BUILTIN_GATHER3SIV8SI,
+  IX86_BUILTIN_GATHER3SIV4SI,
+  IX86_BUILTIN_GATHER3SIV4DI,
+  IX86_BUILTIN_GATHER3SIV2DI,
+  IX86_BUILTIN_GATHER3DIV8SI,
+  IX86_BUILTIN_GATHER3DIV4SI,
+  IX86_BUILTIN_GATHER3DIV4DI,
+  IX86_BUILTIN_GATHER3DIV2DI,
+  IX86_BUILTIN_SCATTERSIV8SF,
+  IX86_BUILTIN_SCATTERSIV4SF,
+  IX86_BUILTIN_SCATTERSIV4DF,
+  IX86_BUILTIN_SCATTERSIV2DF,
+  IX86_BUILTIN_SCATTERDIV8SF,
+  IX86_BUILTIN_SCATTERDIV4SF,
+  IX86_BUILTIN_SCATTERDIV4DF,
+  IX86_BUILTIN_SCATTERDIV2DF,
+  IX86_BUILTIN_SCATTERSIV8SI,
+  IX86_BUILTIN_SCATTERSIV4SI,
+  IX86_BUILTIN_SCATTERSIV4DI,
+  IX86_BUILTIN_SCATTERSIV2DI,
+  IX86_BUILTIN_SCATTERDIV8SI,
+  IX86_BUILTIN_SCATTERDIV4SI,
+  IX86_BUILTIN_SCATTERDIV4DI,
+  IX86_BUILTIN_SCATTERDIV2DI,
+  /* Alternate 4 and 8 element gather/scatter for the vectorizer
+     where all operands are 32-byte or 64-byte wide respectively.  */
+  IX86_BUILTIN_GATHERALTSIV4DF,
+  IX86_BUILTIN_GATHERALTDIV8SF,
+  IX86_BUILTIN_GATHERALTSIV4DI,
+  IX86_BUILTIN_GATHERALTDIV8SI,
+  IX86_BUILTIN_GATHER3ALTDIV16SF,
+  IX86_BUILTIN_GATHER3ALTDIV16SI,
+  IX86_BUILTIN_GATHER3ALTSIV4DF,
+  IX86_BUILTIN_GATHER3ALTDIV8SF,
+  IX86_BUILTIN_GATHER3ALTSIV4DI,
+  IX86_BUILTIN_GATHER3ALTDIV8SI,
+  IX86_BUILTIN_GATHER3ALTSIV8DF,
+  IX86_BUILTIN_GATHER3ALTSIV8DI,
+  IX86_BUILTIN_GATHER3DIV16SF,
+  IX86_BUILTIN_GATHER3DIV16SI,
+  IX86_BUILTIN_GATHER3DIV8DF,
+  IX86_BUILTIN_GATHER3DIV8DI,
+  IX86_BUILTIN_GATHER3SIV16SF,
+  IX86_BUILTIN_GATHER3SIV16SI,
+  IX86_BUILTIN_GATHER3SIV8DF,
+  IX86_BUILTIN_GATHER3SIV8DI,
+  IX86_BUILTIN_SCATTERALTSIV8DF,
+  IX86_BUILTIN_SCATTERALTDIV16SF,
+  IX86_BUILTIN_SCATTERALTSIV8DI,
+  IX86_BUILTIN_SCATTERALTDIV16SI,
+  IX86_BUILTIN_SCATTERDIV16SF,
+  IX86_BUILTIN_SCATTERDIV16SI,
+  IX86_BUILTIN_SCATTERDIV8DF,
+  IX86_BUILTIN_SCATTERDIV8DI,
+  IX86_BUILTIN_SCATTERSIV16SF,
+  IX86_BUILTIN_SCATTERSIV16SI,
+  IX86_BUILTIN_SCATTERSIV8DF,
+  IX86_BUILTIN_SCATTERSIV8DI,
+  IX86_BUILTIN_GATHERPFQPD,
+  IX86_BUILTIN_GATHERPFDPS,
+  IX86_BUILTIN_GATHERPFDPD,
+  IX86_BUILTIN_GATHERPFQPS,
+  IX86_BUILTIN_SCATTERPFDPD,
+  IX86_BUILTIN_SCATTERPFDPS,
+  IX86_BUILTIN_SCATTERPFQPD,
+  IX86_BUILTIN_SCATTERPFQPS,
+  IX86_BUILTIN_CLWB,
+  IX86_BUILTIN_CLFLUSHOPT,
+  IX86_BUILTIN_INFQ,
+  IX86_BUILTIN_HUGE_VALQ,
+  IX86_BUILTIN_NANQ,
+  IX86_BUILTIN_NANSQ,
+  IX86_BUILTIN_XABORT,
+  IX86_BUILTIN_ADDCARRYX32,
+  IX86_BUILTIN_ADDCARRYX64,
+  IX86_BUILTIN_SBB32,
+  IX86_BUILTIN_SBB64,
+  IX86_BUILTIN_RDRAND16_STEP,
+  IX86_BUILTIN_RDRAND32_STEP,
+  IX86_BUILTIN_RDRAND64_STEP,
+  IX86_BUILTIN_RDSEED16_STEP,
+  IX86_BUILTIN_RDSEED32_STEP,
+  IX86_BUILTIN_RDSEED64_STEP,
+  IX86_BUILTIN_MONITORX,
+  IX86_BUILTIN_MWAITX,
+  IX86_BUILTIN_CFSTRING,
+  IX86_BUILTIN_CPU_INIT,
+  IX86_BUILTIN_CPU_IS,
+  IX86_BUILTIN_CPU_SUPPORTS,
+  IX86_BUILTIN_READ_FLAGS,
+  IX86_BUILTIN_WRITE_FLAGS,
 
-  IX86_BUILTIN_COMIEQSS,
+  /* All the remaining builtins are tracked in bdesc_* arrays.
+     The enumerator ordering should match ordering in those arrays.  */
+  IX86_BUILTIN__BDESC_COMI_FIRST,
+  IX86_BUILTIN_COMIEQSS = IX86_BUILTIN__BDESC_COMI_FIRST,
   IX86_BUILTIN_COMILTSS,
   IX86_BUILTIN_COMILESS,
   IX86_BUILTIN_COMIGTSS,
@@ -30557,167 +30676,359 @@ enum ix86_builtins
   IX86_BUILTIN_UCOMIGTSS,
   IX86_BUILTIN_UCOMIGESS,
   IX86_BUILTIN_UCOMINEQSS,
+  IX86_BUILTIN_COMIEQSD,
+  IX86_BUILTIN_COMILTSD,
+  IX86_BUILTIN_COMILESD,
+  IX86_BUILTIN_COMIGTSD,
+  IX86_BUILTIN_COMIGESD,
+  IX86_BUILTIN_COMINEQSD,
+  IX86_BUILTIN_UCOMIEQSD,
+  IX86_BUILTIN_UCOMILTSD,
+  IX86_BUILTIN_UCOMILESD,
+  IX86_BUILTIN_UCOMIGTSD,
+  IX86_BUILTIN_UCOMIGESD,
+  IX86_BUILTIN_UCOMINEQSD,
+  IX86_BUILTIN__BDESC_COMI_LAST = IX86_BUILTIN_UCOMINEQSD,
 
-  IX86_BUILTIN_CVTPI2PS,
-  IX86_BUILTIN_CVTPS2PI,
-  IX86_BUILTIN_CVTSI2SS,
-  IX86_BUILTIN_CVTSI642SS,
-  IX86_BUILTIN_CVTSS2SI,
-  IX86_BUILTIN_CVTSS2SI64,
-  IX86_BUILTIN_CVTTPS2PI,
-  IX86_BUILTIN_CVTTSS2SI,
-  IX86_BUILTIN_CVTTSS2SI64,
+  IX86_BUILTIN__BDESC_PCMPESTR_FIRST,
+  IX86_BUILTIN_PCMPESTRI128 = IX86_BUILTIN__BDESC_PCMPESTR_FIRST,
+  IX86_BUILTIN_PCMPESTRM128,
+  IX86_BUILTIN_PCMPESTRA128,
+  IX86_BUILTIN_PCMPESTRC128,
+  IX86_BUILTIN_PCMPESTRO128,
+  IX86_BUILTIN_PCMPESTRS128,
+  IX86_BUILTIN_PCMPESTRZ128,
+  IX86_BUILTIN__BDESC_PCMPESTR_LAST = IX86_BUILTIN_PCMPESTRZ128,
 
-  IX86_BUILTIN_MAXPS,
-  IX86_BUILTIN_MAXSS,
-  IX86_BUILTIN_MINPS,
-  IX86_BUILTIN_MINSS,
+  IX86_BUILTIN__BDESC_PCMPISTR_FIRST,
+  IX86_BUILTIN_PCMPISTRI128 = IX86_BUILTIN__BDESC_PCMPISTR_FIRST,
+  IX86_BUILTIN_PCMPISTRM128,
+  IX86_BUILTIN_PCMPISTRA128,
+  IX86_BUILTIN_PCMPISTRC128,
+  IX86_BUILTIN_PCMPISTRO128,
+  IX86_BUILTIN_PCMPISTRS128,
+  IX86_BUILTIN_PCMPISTRZ128,
+  IX86_BUILTIN__BDESC_PCMPISTR_LAST = IX86_BUILTIN_PCMPISTRZ128,
 
-  IX86_BUILTIN_LOADUPS,
+  /* Special builtins with variable number of arguments.  */
+  IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST,
+  IX86_BUILTIN_RDTSC = IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST,
+  IX86_BUILTIN_RDTSCP,
+  IX86_BUILTIN_PAUSE,
+  IX86_BUILTIN_FNSTENV,
+  IX86_BUILTIN_FLDENV,
+  IX86_BUILTIN_FNSTSW,
+  IX86_BUILTIN_FNCLEX,
+  IX86_BUILTIN_EMMS,
+  IX86_BUILTIN_FEMMS,
+  IX86_BUILTIN_FXSAVE,
+  IX86_BUILTIN_FXRSTOR,
+  IX86_BUILTIN_XSAVE,
+  IX86_BUILTIN_XRSTOR,
+  IX86_BUILTIN_XSAVEOPT,
+  IX86_BUILTIN_XSAVES,
+  IX86_BUILTIN_XRSTORS,
+  IX86_BUILTIN_XSAVEC,
+  IX86_BUILTIN_FXSAVE64,
+  IX86_BUILTIN_FXRSTOR64,
+  IX86_BUILTIN_XSAVE64,
+  IX86_BUILTIN_XRSTOR64,
+  IX86_BUILTIN_XSAVEOPT64,
+  IX86_BUILTIN_XSAVES64,
+  IX86_BUILTIN_XRSTORS64,
+  IX86_BUILTIN_XSAVEC64,
   IX86_BUILTIN_STOREUPS,
-  IX86_BUILTIN_MOVSS,
-
-  IX86_BUILTIN_MOVHLPS,
-  IX86_BUILTIN_MOVLHPS,
+  IX86_BUILTIN_MOVNTPS,
+  IX86_BUILTIN_LOADUPS,
   IX86_BUILTIN_LOADHPS,
   IX86_BUILTIN_LOADLPS,
   IX86_BUILTIN_STOREHPS,
   IX86_BUILTIN_STORELPS,
-
-  IX86_BUILTIN_MASKMOVQ,
-  IX86_BUILTIN_MOVMSKPS,
-  IX86_BUILTIN_PMOVMSKB,
-
-  IX86_BUILTIN_MOVNTPS,
+  IX86_BUILTIN_SFENCE,
   IX86_BUILTIN_MOVNTQ,
-
-  IX86_BUILTIN_LOADDQU,
+  IX86_BUILTIN_LFENCE,
+  IX86_BUILTIN_MFENCE,
+  IX86_BUILTIN_STOREUPD,
   IX86_BUILTIN_STOREDQU,
+  IX86_BUILTIN_MOVNTPD,
+  IX86_BUILTIN_MOVNTDQ,
+  IX86_BUILTIN_MOVNTI,
+  IX86_BUILTIN_MOVNTI64,
+  IX86_BUILTIN_LOADUPD,
+  IX86_BUILTIN_LOADDQU,
+  IX86_BUILTIN_LOADHPD,
+  IX86_BUILTIN_LOADLPD,
+  IX86_BUILTIN_LDDQU,
+  IX86_BUILTIN_MOVNTDQA,
+  IX86_BUILTIN_MOVNTSD,
+  IX86_BUILTIN_MOVNTSS,
+  IX86_BUILTIN_VZEROALL,
+  IX86_BUILTIN_VZEROUPPER,
+  IX86_BUILTIN_VBROADCASTSS,
+  IX86_BUILTIN_VBROADCASTSD256,
+  IX86_BUILTIN_VBROADCASTSS256,
+  IX86_BUILTIN_VBROADCASTPD256,
+  IX86_BUILTIN_VBROADCASTPS256,
+  IX86_BUILTIN_LOADUPD256,
+  IX86_BUILTIN_LOADUPS256,
+  IX86_BUILTIN_STOREUPD256,
+  IX86_BUILTIN_STOREUPS256,
+  IX86_BUILTIN_LOADDQU256,
+  IX86_BUILTIN_STOREDQU256,
+  IX86_BUILTIN_LDDQU256,
+  IX86_BUILTIN_MOVNTDQ256,
+  IX86_BUILTIN_MOVNTPD256,
+  IX86_BUILTIN_MOVNTPS256,
+  IX86_BUILTIN_MASKLOADPD,
+  IX86_BUILTIN_MASKLOADPS,
+  IX86_BUILTIN_MASKLOADPD256,
+  IX86_BUILTIN_MASKLOADPS256,
+  IX86_BUILTIN_MASKSTOREPD,
+  IX86_BUILTIN_MASKSTOREPS,
+  IX86_BUILTIN_MASKSTOREPD256,
+  IX86_BUILTIN_MASKSTOREPS256,
+  IX86_BUILTIN_MOVNTDQA256,
+  IX86_BUILTIN_MASKLOADD,
+  IX86_BUILTIN_MASKLOADQ,
+  IX86_BUILTIN_MASKLOADD256,
+  IX86_BUILTIN_MASKLOADQ256,
+  IX86_BUILTIN_MASKSTORED,
+  IX86_BUILTIN_MASKSTOREQ,
+  IX86_BUILTIN_MASKSTORED256,
+  IX86_BUILTIN_MASKSTOREQ256,
+  IX86_BUILTIN_COMPRESSPSSTORE512,
+  IX86_BUILTIN_PCOMPRESSDSTORE512,
+  IX86_BUILTIN_COMPRESSPDSTORE512,
+  IX86_BUILTIN_PCOMPRESSQSTORE512,
+  IX86_BUILTIN_EXPANDPSLOAD512,
+  IX86_BUILTIN_EXPANDPSLOAD512Z,
+  IX86_BUILTIN_PEXPANDDLOAD512,
+  IX86_BUILTIN_PEXPANDDLOAD512Z,
+  IX86_BUILTIN_EXPANDPDLOAD512,
+  IX86_BUILTIN_EXPANDPDLOAD512Z,
+  IX86_BUILTIN_PEXPANDQLOAD512,
+  IX86_BUILTIN_PEXPANDQLOAD512Z,
+  IX86_BUILTIN_LOADDQUSI512,
+  IX86_BUILTIN_LOADDQUDI512,
+  IX86_BUILTIN_LOADUPD512,
+  IX86_BUILTIN_LOADUPS512,
+  IX86_BUILTIN_LOADAPS512,
+  IX86_BUILTIN_MOVDQA32LOAD512,
+  IX86_BUILTIN_LOADAPD512,
+  IX86_BUILTIN_MOVDQA64LOAD512,
+  IX86_BUILTIN_MOVNTPS512,
+  IX86_BUILTIN_MOVNTPD512,
+  IX86_BUILTIN_MOVNTDQ512,
+  IX86_BUILTIN_MOVNTDQA512,
+  IX86_BUILTIN_STOREDQUSI512,
+  IX86_BUILTIN_STOREDQUDI512,
+  IX86_BUILTIN_STOREUPD512,
+  IX86_BUILTIN_PMOVUSQD512_MEM,
+  IX86_BUILTIN_PMOVSQD512_MEM,
+  IX86_BUILTIN_PMOVQD512_MEM,
+  IX86_BUILTIN_PMOVUSQW512_MEM,
+  IX86_BUILTIN_PMOVSQW512_MEM,
+  IX86_BUILTIN_PMOVQW512_MEM,
+  IX86_BUILTIN_PMOVUSDW512_MEM,
+  IX86_BUILTIN_PMOVSDW512_MEM,
+  IX86_BUILTIN_PMOVDW512_MEM,
+  IX86_BUILTIN_PMOVQB512_MEM,
+  IX86_BUILTIN_PMOVUSQB512_MEM,
+  IX86_BUILTIN_PMOVSQB512_MEM,
+  IX86_BUILTIN_PMOVUSDB512_MEM,
+  IX86_BUILTIN_PMOVSDB512_MEM,
+  IX86_BUILTIN_PMOVDB512_MEM,
+  IX86_BUILTIN_STOREUPS512,
+  IX86_BUILTIN_STOREAPS512,
+  IX86_BUILTIN_MOVDQA32STORE512,
+  IX86_BUILTIN_STOREAPD512,
+  IX86_BUILTIN_MOVDQA64STORE512,
+  IX86_BUILTIN_LLWPCB,
+  IX86_BUILTIN_SLWPCB,
+  IX86_BUILTIN_LWPVAL32,
+  IX86_BUILTIN_LWPVAL64,
+  IX86_BUILTIN_LWPINS32,
+  IX86_BUILTIN_LWPINS64,
+  IX86_BUILTIN_RDFSBASE32,
+  IX86_BUILTIN_RDFSBASE64,
+  IX86_BUILTIN_RDGSBASE32,
+  IX86_BUILTIN_RDGSBASE64,
+  IX86_BUILTIN_WRFSBASE32,
+  IX86_BUILTIN_WRFSBASE64,
+  IX86_BUILTIN_WRGSBASE32,
+  IX86_BUILTIN_WRGSBASE64,
+  IX86_BUILTIN_XBEGIN,
+  IX86_BUILTIN_XEND,
+  IX86_BUILTIN_XTEST,
+  IX86_BUILTIN_LOADDQUHI512_MASK,
+  IX86_BUILTIN_LOADDQUQI512_MASK,
+  IX86_BUILTIN_STOREDQUHI512_MASK,
+  IX86_BUILTIN_STOREDQUQI512_MASK,
+  IX86_BUILTIN_LOADDQUHI256_MASK,
+  IX86_BUILTIN_LOADDQUHI128_MASK,
+  IX86_BUILTIN_LOADDQUQI256_MASK,
+  IX86_BUILTIN_LOADDQUQI128_MASK,
+  IX86_BUILTIN_MOVDQA64LOAD256_MASK,
+  IX86_BUILTIN_MOVDQA64LOAD128_MASK,
+  IX86_BUILTIN_MOVDQA32LOAD256_MASK,
+  IX86_BUILTIN_MOVDQA32LOAD128_MASK,
+  IX86_BUILTIN_MOVDQA64STORE256_MASK,
+  IX86_BUILTIN_MOVDQA64STORE128_MASK,
+  IX86_BUILTIN_MOVDQA32STORE256_MASK,
+  IX86_BUILTIN_MOVDQA32STORE128_MASK,
+  IX86_BUILTIN_LOADAPD256_MASK,
+  IX86_BUILTIN_LOADAPD128_MASK,
+  IX86_BUILTIN_LOADAPS256_MASK,
+  IX86_BUILTIN_LOADAPS128_MASK,
+  IX86_BUILTIN_STOREAPD256_MASK,
+  IX86_BUILTIN_STOREAPD128_MASK,
+  IX86_BUILTIN_STOREAPS256_MASK,
+  IX86_BUILTIN_STOREAPS128_MASK,
+  IX86_BUILTIN_LOADUPD256_MASK,
+  IX86_BUILTIN_LOADUPD128_MASK,
+  IX86_BUILTIN_LOADUPS256_MASK,
+  IX86_BUILTIN_LOADUPS128_MASK,
+  IX86_BUILTIN_STOREUPD256_MASK,
+  IX86_BUILTIN_STOREUPD128_MASK,
+  IX86_BUILTIN_STOREUPS256_MASK,
+  IX86_BUILTIN_STOREUPS128_MASK,
+  IX86_BUILTIN_LOADDQUDI256_MASK,
+  IX86_BUILTIN_LOADDQUDI128_MASK,
+  IX86_BUILTIN_LOADDQUSI256_MASK,
+  IX86_BUILTIN_LOADDQUSI128_MASK,
+  IX86_BUILTIN_STOREDQUDI256_MASK,
+  IX86_BUILTIN_STOREDQUDI128_MASK,
+  IX86_BUILTIN_STOREDQUSI256_MASK,
+  IX86_BUILTIN_STOREDQUSI128_MASK,
+  IX86_BUILTIN_STOREDQUHI256_MASK,
+  IX86_BUILTIN_STOREDQUHI128_MASK,
+  IX86_BUILTIN_STOREDQUQI256_MASK,
+  IX86_BUILTIN_STOREDQUQI128_MASK,
+  IX86_BUILTIN_COMPRESSPDSTORE256,
+  IX86_BUILTIN_COMPRESSPDSTORE128,
+  IX86_BUILTIN_COMPRESSPSSTORE256,
+  IX86_BUILTIN_COMPRESSPSSTORE128,
+  IX86_BUILTIN_PCOMPRESSQSTORE256,
+  IX86_BUILTIN_PCOMPRESSQSTORE128,
+  IX86_BUILTIN_PCOMPRESSDSTORE256,
+  IX86_BUILTIN_PCOMPRESSDSTORE128,
+  IX86_BUILTIN_EXPANDPDLOAD256,
+  IX86_BUILTIN_EXPANDPDLOAD128,
+  IX86_BUILTIN_EXPANDPSLOAD256,
+  IX86_BUILTIN_EXPANDPSLOAD128,
+  IX86_BUILTIN_PEXPANDQLOAD256,
+  IX86_BUILTIN_PEXPANDQLOAD128,
+  IX86_BUILTIN_PEXPANDDLOAD256,
+  IX86_BUILTIN_PEXPANDDLOAD128,
+  IX86_BUILTIN_EXPANDPDLOAD256Z,
+  IX86_BUILTIN_EXPANDPDLOAD128Z,
+  IX86_BUILTIN_EXPANDPSLOAD256Z,
+  IX86_BUILTIN_EXPANDPSLOAD128Z,
+  IX86_BUILTIN_PEXPANDQLOAD256Z,
+  IX86_BUILTIN_PEXPANDQLOAD128Z,
+  IX86_BUILTIN_PEXPANDDLOAD256Z,
+  IX86_BUILTIN_PEXPANDDLOAD128Z,
+  IX86_BUILTIN_PMOVQD256_MEM,
+  IX86_BUILTIN_PMOVQD128_MEM,
+  IX86_BUILTIN_PMOVSQD256_MEM,
+  IX86_BUILTIN_PMOVSQD128_MEM,
+  IX86_BUILTIN_PMOVUSQD256_MEM,
+  IX86_BUILTIN_PMOVUSQD128_MEM,
+  IX86_BUILTIN_PMOVQW256_MEM,
+  IX86_BUILTIN_PMOVQW128_MEM,
+  IX86_BUILTIN_PMOVSQW256_MEM,
+  IX86_BUILTIN_PMOVSQW128_MEM,
+  IX86_BUILTIN_PMOVUSQW256_MEM,
+  IX86_BUILTIN_PMOVUSQW128_MEM,
+  IX86_BUILTIN_PMOVQB256_MEM,
+  IX86_BUILTIN_PMOVQB128_MEM,
+  IX86_BUILTIN_PMOVSQB256_MEM,
+  IX86_BUILTIN_PMOVSQB128_MEM,
+  IX86_BUILTIN_PMOVUSQB256_MEM,
+  IX86_BUILTIN_PMOVUSQB128_MEM,
+  IX86_BUILTIN_PMOVDB256_MEM,
+  IX86_BUILTIN_PMOVDB128_MEM,
+  IX86_BUILTIN_PMOVSDB256_MEM,
+  IX86_BUILTIN_PMOVSDB128_MEM,
+  IX86_BUILTIN_PMOVUSDB256_MEM,
+  IX86_BUILTIN_PMOVUSDB128_MEM,
+  IX86_BUILTIN_PMOVDW256_MEM,
+  IX86_BUILTIN_PMOVDW128_MEM,
+  IX86_BUILTIN_PMOVSDW256_MEM,
+  IX86_BUILTIN_PMOVSDW128_MEM,
+  IX86_BUILTIN_PMOVUSDW256_MEM,
+  IX86_BUILTIN_PMOVUSDW128_MEM,
+  IX86_BUILTIN_PCOMMIT,
+  IX86_BUILTIN_RDPKRU,
+  IX86_BUILTIN_WRPKRU,
+  IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST = IX86_BUILTIN_WRPKRU,
 
-  IX86_BUILTIN_PACKSSWB,
-  IX86_BUILTIN_PACKSSDW,
-  IX86_BUILTIN_PACKUSWB,
-
-  IX86_BUILTIN_PADDB,
-  IX86_BUILTIN_PADDW,
-  IX86_BUILTIN_PADDD,
-  IX86_BUILTIN_PADDQ,
-  IX86_BUILTIN_PADDSB,
-  IX86_BUILTIN_PADDSW,
-  IX86_BUILTIN_PADDUSB,
-  IX86_BUILTIN_PADDUSW,
-  IX86_BUILTIN_PSUBB,
-  IX86_BUILTIN_PSUBW,
-  IX86_BUILTIN_PSUBD,
-  IX86_BUILTIN_PSUBQ,
-  IX86_BUILTIN_PSUBSB,
-  IX86_BUILTIN_PSUBSW,
-  IX86_BUILTIN_PSUBUSB,
-  IX86_BUILTIN_PSUBUSW,
-
-  IX86_BUILTIN_PAND,
-  IX86_BUILTIN_PANDN,
-  IX86_BUILTIN_POR,
-  IX86_BUILTIN_PXOR,
-
-  IX86_BUILTIN_PAVGB,
-  IX86_BUILTIN_PAVGW,
-
-  IX86_BUILTIN_PCMPEQB,
-  IX86_BUILTIN_PCMPEQW,
-  IX86_BUILTIN_PCMPEQD,
-  IX86_BUILTIN_PCMPGTB,
-  IX86_BUILTIN_PCMPGTW,
-  IX86_BUILTIN_PCMPGTD,
-
-  IX86_BUILTIN_PMADDWD,
-
-  IX86_BUILTIN_PMAXSW,
-  IX86_BUILTIN_PMAXUB,
-  IX86_BUILTIN_PMINSW,
-  IX86_BUILTIN_PMINUB,
-
-  IX86_BUILTIN_PMULHUW,
-  IX86_BUILTIN_PMULHW,
-  IX86_BUILTIN_PMULLW,
-
-  IX86_BUILTIN_PSADBW,
-  IX86_BUILTIN_PSHUFW,
-
-  IX86_BUILTIN_PSLLW,
-  IX86_BUILTIN_PSLLD,
-  IX86_BUILTIN_PSLLQ,
-  IX86_BUILTIN_PSRAW,
-  IX86_BUILTIN_PSRAD,
-  IX86_BUILTIN_PSRLW,
-  IX86_BUILTIN_PSRLD,
-  IX86_BUILTIN_PSRLQ,
-  IX86_BUILTIN_PSLLWI,
-  IX86_BUILTIN_PSLLDI,
-  IX86_BUILTIN_PSLLQI,
-  IX86_BUILTIN_PSRAWI,
-  IX86_BUILTIN_PSRADI,
-  IX86_BUILTIN_PSRLWI,
-  IX86_BUILTIN_PSRLDI,
-  IX86_BUILTIN_PSRLQI,
-
-  IX86_BUILTIN_PUNPCKHBW,
-  IX86_BUILTIN_PUNPCKHWD,
-  IX86_BUILTIN_PUNPCKHDQ,
-  IX86_BUILTIN_PUNPCKLBW,
-  IX86_BUILTIN_PUNPCKLWD,
-  IX86_BUILTIN_PUNPCKLDQ,
-
-  IX86_BUILTIN_SHUFPS,
-
-  IX86_BUILTIN_RCPPS,
-  IX86_BUILTIN_RCPSS,
-  IX86_BUILTIN_RSQRTPS,
-  IX86_BUILTIN_RSQRTPS_NR,
-  IX86_BUILTIN_RSQRTSS,
-  IX86_BUILTIN_RSQRTF,
-  IX86_BUILTIN_SQRTPS,
-  IX86_BUILTIN_SQRTPS_NR,
-  IX86_BUILTIN_SQRTSS,
-
-  IX86_BUILTIN_UNPCKHPS,
-  IX86_BUILTIN_UNPCKLPS,
-
-  IX86_BUILTIN_ANDPS,
-  IX86_BUILTIN_ANDNPS,
-  IX86_BUILTIN_ORPS,
-  IX86_BUILTIN_XORPS,
-
-  IX86_BUILTIN_EMMS,
-  IX86_BUILTIN_LDMXCSR,
-  IX86_BUILTIN_STMXCSR,
-  IX86_BUILTIN_SFENCE,
-
-  IX86_BUILTIN_FXSAVE,
-  IX86_BUILTIN_FXRSTOR,
-  IX86_BUILTIN_FXSAVE64,
-  IX86_BUILTIN_FXRSTOR64,
-
-  IX86_BUILTIN_XSAVE,
-  IX86_BUILTIN_XRSTOR,
-  IX86_BUILTIN_XSAVE64,
-  IX86_BUILTIN_XRSTOR64,
-
-  IX86_BUILTIN_XSAVEOPT,
-  IX86_BUILTIN_XSAVEOPT64,
-
-  IX86_BUILTIN_XSAVEC,
-  IX86_BUILTIN_XSAVEC64,
-
-  IX86_BUILTIN_XSAVES,
-  IX86_BUILTIN_XRSTORS,
-  IX86_BUILTIN_XSAVES64,
-  IX86_BUILTIN_XRSTORS64,
-
-  /* 3DNow! Original */
-  IX86_BUILTIN_FEMMS,
-  IX86_BUILTIN_PAVGUSB,
+  /* Builtins with variable number of arguments.  */
+  IX86_BUILTIN__BDESC_ARGS_FIRST,
+  IX86_BUILTIN_BSRSI = IX86_BUILTIN__BDESC_ARGS_FIRST,
+  IX86_BUILTIN_BSRDI,
+  IX86_BUILTIN_RDPMC,
+  IX86_BUILTIN_ROLQI,
+  IX86_BUILTIN_ROLHI,
+  IX86_BUILTIN_RORQI,
+  IX86_BUILTIN_RORHI,
+  IX86_BUILTIN_PADDB,
+  IX86_BUILTIN_PADDW,
+  IX86_BUILTIN_PADDD,
+  IX86_BUILTIN_PSUBB,
+  IX86_BUILTIN_PSUBW,
+  IX86_BUILTIN_PSUBD,
+  IX86_BUILTIN_PADDSB,
+  IX86_BUILTIN_PADDSW,
+  IX86_BUILTIN_PSUBSB,
+  IX86_BUILTIN_PSUBSW,
+  IX86_BUILTIN_PADDUSB,
+  IX86_BUILTIN_PADDUSW,
+  IX86_BUILTIN_PSUBUSB,
+  IX86_BUILTIN_PSUBUSW,
+  IX86_BUILTIN_PMULLW,
+  IX86_BUILTIN_PMULHW,
+  IX86_BUILTIN_PAND,
+  IX86_BUILTIN_PANDN,
+  IX86_BUILTIN_POR,
+  IX86_BUILTIN_PXOR,
+  IX86_BUILTIN_PCMPEQB,
+  IX86_BUILTIN_PCMPEQW,
+  IX86_BUILTIN_PCMPEQD,
+  IX86_BUILTIN_PCMPGTB,
+  IX86_BUILTIN_PCMPGTW,
+  IX86_BUILTIN_PCMPGTD,
+  IX86_BUILTIN_PUNPCKHBW,
+  IX86_BUILTIN_PUNPCKHWD,
+  IX86_BUILTIN_PUNPCKHDQ,
+  IX86_BUILTIN_PUNPCKLBW,
+  IX86_BUILTIN_PUNPCKLWD,
+  IX86_BUILTIN_PUNPCKLDQ,
+  IX86_BUILTIN_PACKSSWB,
+  IX86_BUILTIN_PACKSSDW,
+  IX86_BUILTIN_PACKUSWB,
+  IX86_BUILTIN_PMADDWD,
+  IX86_BUILTIN_PSLLWI,
+  IX86_BUILTIN_PSLLDI,
+  IX86_BUILTIN_PSLLQI,
+  IX86_BUILTIN_PSLLW,
+  IX86_BUILTIN_PSLLD,
+  IX86_BUILTIN_PSLLQ,
+  IX86_BUILTIN_PSRLWI,
+  IX86_BUILTIN_PSRLDI,
+  IX86_BUILTIN_PSRLQI,
+  IX86_BUILTIN_PSRLW,
+  IX86_BUILTIN_PSRLD,
+  IX86_BUILTIN_PSRLQ,
+  IX86_BUILTIN_PSRAWI,
+  IX86_BUILTIN_PSRADI,
+  IX86_BUILTIN_PSRAW,
+  IX86_BUILTIN_PSRAD,
   IX86_BUILTIN_PF2ID,
+  IX86_BUILTIN_PI2FD,
+  IX86_BUILTIN_PFRCP,
+  IX86_BUILTIN_PFRSQRT,
+  IX86_BUILTIN_PAVGUSB,
   IX86_BUILTIN_PFACC,
   IX86_BUILTIN_PFADD,
   IX86_BUILTIN_PFCMPEQ,
@@ -30726,423 +31037,345 @@ enum ix86_builtins
   IX86_BUILTIN_PFMAX,
   IX86_BUILTIN_PFMIN,
   IX86_BUILTIN_PFMUL,
-  IX86_BUILTIN_PFRCP,
   IX86_BUILTIN_PFRCPIT1,
   IX86_BUILTIN_PFRCPIT2,
   IX86_BUILTIN_PFRSQIT1,
-  IX86_BUILTIN_PFRSQRT,
   IX86_BUILTIN_PFSUB,
   IX86_BUILTIN_PFSUBR,
-  IX86_BUILTIN_PI2FD,
   IX86_BUILTIN_PMULHRW,
-
-  /* 3DNow! Athlon Extensions */
   IX86_BUILTIN_PF2IW,
-  IX86_BUILTIN_PFNACC,
-  IX86_BUILTIN_PFPNACC,
   IX86_BUILTIN_PI2FW,
   IX86_BUILTIN_PSWAPDSI,
   IX86_BUILTIN_PSWAPDSF,
-
-  /* SSE2 */
+  IX86_BUILTIN_PFNACC,
+  IX86_BUILTIN_PFPNACC,
+  IX86_BUILTIN_MOVMSKPS,
+  IX86_BUILTIN_SQRTPS,
+  IX86_BUILTIN_SQRTPS_NR,
+  IX86_BUILTIN_RSQRTPS,
+  IX86_BUILTIN_RSQRTPS_NR,
+  IX86_BUILTIN_RCPPS,
+  IX86_BUILTIN_CVTPS2PI,
+  IX86_BUILTIN_CVTSS2SI,
+  IX86_BUILTIN_CVTSS2SI64,
+  IX86_BUILTIN_CVTTPS2PI,
+  IX86_BUILTIN_CVTTSS2SI,
+  IX86_BUILTIN_CVTTSS2SI64,
+  IX86_BUILTIN_SHUFPS,
+  IX86_BUILTIN_ADDPS,
+  IX86_BUILTIN_SUBPS,
+  IX86_BUILTIN_MULPS,
+  IX86_BUILTIN_DIVPS,
+  IX86_BUILTIN_ADDSS,
+  IX86_BUILTIN_SUBSS,
+  IX86_BUILTIN_MULSS,
+  IX86_BUILTIN_DIVSS,
+  IX86_BUILTIN_CMPEQPS,
+  IX86_BUILTIN_CMPLTPS,
+  IX86_BUILTIN_CMPLEPS,
+  IX86_BUILTIN_CMPGTPS,
+  IX86_BUILTIN_CMPGEPS,
+  IX86_BUILTIN_CMPUNORDPS,
+  IX86_BUILTIN_CMPNEQPS,
+  IX86_BUILTIN_CMPNLTPS,
+  IX86_BUILTIN_CMPNLEPS,
+  IX86_BUILTIN_CMPNGTPS,
+  IX86_BUILTIN_CMPNGEPS,
+  IX86_BUILTIN_CMPORDPS,
+  IX86_BUILTIN_CMPEQSS,
+  IX86_BUILTIN_CMPLTSS,
+  IX86_BUILTIN_CMPLESS,
+  IX86_BUILTIN_CMPUNORDSS,
+  IX86_BUILTIN_CMPNEQSS,
+  IX86_BUILTIN_CMPNLTSS,
+  IX86_BUILTIN_CMPNLESS,
+  IX86_BUILTIN_CMPORDSS,
+  IX86_BUILTIN_MINPS,
+  IX86_BUILTIN_MAXPS,
+  IX86_BUILTIN_MINSS,
+  IX86_BUILTIN_MAXSS,
+  IX86_BUILTIN_ANDPS,
+  IX86_BUILTIN_ANDNPS,
+  IX86_BUILTIN_ORPS,
+  IX86_BUILTIN_XORPS,
+  IX86_BUILTIN_CPYSGNPS,
+  IX86_BUILTIN_MOVSS,
+  IX86_BUILTIN_MOVHLPS,
+  IX86_BUILTIN_MOVLHPS,
+  IX86_BUILTIN_UNPCKHPS,
+  IX86_BUILTIN_UNPCKLPS,
+  IX86_BUILTIN_CVTPI2PS,
+  IX86_BUILTIN_CVTSI2SS,
+  IX86_BUILTIN_CVTSI642SS,
+  IX86_BUILTIN_RSQRTF,
+  IX86_BUILTIN_SQRTSS,
+  IX86_BUILTIN_RSQRTSS,
+  IX86_BUILTIN_RCPSS,
+  IX86_BUILTIN_FABSQ,
+  IX86_BUILTIN_COPYSIGNQ,
+  IX86_BUILTIN_PAVGB,
+  IX86_BUILTIN_PAVGW,
+  IX86_BUILTIN_PMULHUW,
+  IX86_BUILTIN_PMAXUB,
+  IX86_BUILTIN_PMAXSW,
+  IX86_BUILTIN_PMINUB,
+  IX86_BUILTIN_PMINSW,
+  IX86_BUILTIN_PSADBW,
+  IX86_BUILTIN_PMOVMSKB,
+  IX86_BUILTIN_PSHUFW,
+  IX86_BUILTIN_SHUFPD,
+  IX86_BUILTIN_MOVMSKPD,
+  IX86_BUILTIN_PMOVMSKB128,
+  IX86_BUILTIN_SQRTPD,
+  IX86_BUILTIN_CVTDQ2PD,
+  IX86_BUILTIN_CVTDQ2PS,
+  IX86_BUILTIN_CVTPD2DQ,
+  IX86_BUILTIN_CVTPD2PI,
+  IX86_BUILTIN_CVTPD2PS,
+  IX86_BUILTIN_CVTTPD2DQ,
+  IX86_BUILTIN_CVTTPD2PI,
+  IX86_BUILTIN_CVTPI2PD,
+  IX86_BUILTIN_CVTSD2SI,
+  IX86_BUILTIN_CVTTSD2SI,
+  IX86_BUILTIN_CVTSD2SI64,
+  IX86_BUILTIN_CVTTSD2SI64,
+  IX86_BUILTIN_CVTPS2DQ,
+  IX86_BUILTIN_CVTPS2PD,
+  IX86_BUILTIN_CVTTPS2DQ,
   IX86_BUILTIN_ADDPD,
-  IX86_BUILTIN_ADDSD,
-  IX86_BUILTIN_DIVPD,
-  IX86_BUILTIN_DIVSD,
-  IX86_BUILTIN_MULPD,
-  IX86_BUILTIN_MULSD,
   IX86_BUILTIN_SUBPD,
+  IX86_BUILTIN_MULPD,
+  IX86_BUILTIN_DIVPD,
+  IX86_BUILTIN_ADDSD,
   IX86_BUILTIN_SUBSD,
-
+  IX86_BUILTIN_MULSD,
+  IX86_BUILTIN_DIVSD,
   IX86_BUILTIN_CMPEQPD,
   IX86_BUILTIN_CMPLTPD,
   IX86_BUILTIN_CMPLEPD,
   IX86_BUILTIN_CMPGTPD,
   IX86_BUILTIN_CMPGEPD,
+  IX86_BUILTIN_CMPUNORDPD,
   IX86_BUILTIN_CMPNEQPD,
   IX86_BUILTIN_CMPNLTPD,
   IX86_BUILTIN_CMPNLEPD,
   IX86_BUILTIN_CMPNGTPD,
   IX86_BUILTIN_CMPNGEPD,
   IX86_BUILTIN_CMPORDPD,
-  IX86_BUILTIN_CMPUNORDPD,
   IX86_BUILTIN_CMPEQSD,
   IX86_BUILTIN_CMPLTSD,
   IX86_BUILTIN_CMPLESD,
-  IX86_BUILTIN_CMPNEQSD,
-  IX86_BUILTIN_CMPNLTSD,
-  IX86_BUILTIN_CMPNLESD,
-  IX86_BUILTIN_CMPORDSD,
-  IX86_BUILTIN_CMPUNORDSD,
-
-  IX86_BUILTIN_COMIEQSD,
-  IX86_BUILTIN_COMILTSD,
-  IX86_BUILTIN_COMILESD,
-  IX86_BUILTIN_COMIGTSD,
-  IX86_BUILTIN_COMIGESD,
-  IX86_BUILTIN_COMINEQSD,
-  IX86_BUILTIN_UCOMIEQSD,
-  IX86_BUILTIN_UCOMILTSD,
-  IX86_BUILTIN_UCOMILESD,
-  IX86_BUILTIN_UCOMIGTSD,
-  IX86_BUILTIN_UCOMIGESD,
-  IX86_BUILTIN_UCOMINEQSD,
-
-  IX86_BUILTIN_MAXPD,
-  IX86_BUILTIN_MAXSD,
-  IX86_BUILTIN_MINPD,
-  IX86_BUILTIN_MINSD,
-
-  IX86_BUILTIN_ANDPD,
-  IX86_BUILTIN_ANDNPD,
-  IX86_BUILTIN_ORPD,
-  IX86_BUILTIN_XORPD,
-
-  IX86_BUILTIN_SQRTPD,
-  IX86_BUILTIN_SQRTSD,
-
-  IX86_BUILTIN_UNPCKHPD,
-  IX86_BUILTIN_UNPCKLPD,
-
-  IX86_BUILTIN_SHUFPD,
-
-  IX86_BUILTIN_LOADUPD,
-  IX86_BUILTIN_STOREUPD,
-  IX86_BUILTIN_MOVSD,
-
-  IX86_BUILTIN_LOADHPD,
-  IX86_BUILTIN_LOADLPD,
-
-  IX86_BUILTIN_CVTDQ2PD,
-  IX86_BUILTIN_CVTDQ2PS,
-
-  IX86_BUILTIN_CVTPD2DQ,
-  IX86_BUILTIN_CVTPD2PI,
-  IX86_BUILTIN_CVTPD2PS,
-  IX86_BUILTIN_CVTTPD2DQ,
-  IX86_BUILTIN_CVTTPD2PI,
-
-  IX86_BUILTIN_CVTPI2PD,
-  IX86_BUILTIN_CVTSI2SD,
-  IX86_BUILTIN_CVTSI642SD,
-
-  IX86_BUILTIN_CVTSD2SI,
-  IX86_BUILTIN_CVTSD2SI64,
-  IX86_BUILTIN_CVTSD2SS,
-  IX86_BUILTIN_CVTSS2SD,
-  IX86_BUILTIN_CVTTSD2SI,
-  IX86_BUILTIN_CVTTSD2SI64,
-
-  IX86_BUILTIN_CVTPS2DQ,
-  IX86_BUILTIN_CVTPS2PD,
-  IX86_BUILTIN_CVTTPS2DQ,
-
-  IX86_BUILTIN_MOVNTI,
-  IX86_BUILTIN_MOVNTI64,
-  IX86_BUILTIN_MOVNTPD,
-  IX86_BUILTIN_MOVNTDQ,
-
-  IX86_BUILTIN_MOVQ128,
-
-  /* SSE2 MMX */
-  IX86_BUILTIN_MASKMOVDQU,
-  IX86_BUILTIN_MOVMSKPD,
-  IX86_BUILTIN_PMOVMSKB128,
-
-  IX86_BUILTIN_PACKSSWB128,
-  IX86_BUILTIN_PACKSSDW128,
-  IX86_BUILTIN_PACKUSWB128,
-
+  IX86_BUILTIN_CMPUNORDSD,
+  IX86_BUILTIN_CMPNEQSD,
+  IX86_BUILTIN_CMPNLTSD,
+  IX86_BUILTIN_CMPNLESD,
+  IX86_BUILTIN_CMPORDSD,
+  IX86_BUILTIN_MINPD,
+  IX86_BUILTIN_MAXPD,
+  IX86_BUILTIN_MINSD,
+  IX86_BUILTIN_MAXSD,
+  IX86_BUILTIN_ANDPD,
+  IX86_BUILTIN_ANDNPD,
+  IX86_BUILTIN_ORPD,
+  IX86_BUILTIN_XORPD,
+  IX86_BUILTIN_CPYSGNPD,
+  IX86_BUILTIN_MOVSD,
+  IX86_BUILTIN_UNPCKHPD,
+  IX86_BUILTIN_UNPCKLPD,
+  IX86_BUILTIN_VEC_PACK_SFIX,
   IX86_BUILTIN_PADDB128,
   IX86_BUILTIN_PADDW128,
   IX86_BUILTIN_PADDD128,
   IX86_BUILTIN_PADDQ128,
-  IX86_BUILTIN_PADDSB128,
-  IX86_BUILTIN_PADDSW128,
-  IX86_BUILTIN_PADDUSB128,
-  IX86_BUILTIN_PADDUSW128,
   IX86_BUILTIN_PSUBB128,
   IX86_BUILTIN_PSUBW128,
   IX86_BUILTIN_PSUBD128,
   IX86_BUILTIN_PSUBQ128,
+  IX86_BUILTIN_PADDSB128,
+  IX86_BUILTIN_PADDSW128,
   IX86_BUILTIN_PSUBSB128,
   IX86_BUILTIN_PSUBSW128,
+  IX86_BUILTIN_PADDUSB128,
+  IX86_BUILTIN_PADDUSW128,
   IX86_BUILTIN_PSUBUSB128,
   IX86_BUILTIN_PSUBUSW128,
-
+  IX86_BUILTIN_PMULLW128,
+  IX86_BUILTIN_PMULHW128,
   IX86_BUILTIN_PAND128,
   IX86_BUILTIN_PANDN128,
   IX86_BUILTIN_POR128,
   IX86_BUILTIN_PXOR128,
-
   IX86_BUILTIN_PAVGB128,
   IX86_BUILTIN_PAVGW128,
-
   IX86_BUILTIN_PCMPEQB128,
   IX86_BUILTIN_PCMPEQW128,
   IX86_BUILTIN_PCMPEQD128,
   IX86_BUILTIN_PCMPGTB128,
   IX86_BUILTIN_PCMPGTW128,
   IX86_BUILTIN_PCMPGTD128,
-
-  IX86_BUILTIN_PMADDWD128,
-
-  IX86_BUILTIN_PMAXSW128,
   IX86_BUILTIN_PMAXUB128,
-  IX86_BUILTIN_PMINSW128,
+  IX86_BUILTIN_PMAXSW128,
   IX86_BUILTIN_PMINUB128,
-
-  IX86_BUILTIN_PMULUDQ,
-  IX86_BUILTIN_PMULUDQ128,
+  IX86_BUILTIN_PMINSW128,
+  IX86_BUILTIN_PUNPCKHBW128,
+  IX86_BUILTIN_PUNPCKHWD128,
+  IX86_BUILTIN_PUNPCKHDQ128,
+  IX86_BUILTIN_PUNPCKHQDQ128,
+  IX86_BUILTIN_PUNPCKLBW128,
+  IX86_BUILTIN_PUNPCKLWD128,
+  IX86_BUILTIN_PUNPCKLDQ128,
+  IX86_BUILTIN_PUNPCKLQDQ128,
+  IX86_BUILTIN_PACKSSWB128,
+  IX86_BUILTIN_PACKSSDW128,
+  IX86_BUILTIN_PACKUSWB128,
   IX86_BUILTIN_PMULHUW128,
-  IX86_BUILTIN_PMULHW128,
-  IX86_BUILTIN_PMULLW128,
-
   IX86_BUILTIN_PSADBW128,
-  IX86_BUILTIN_PSHUFHW,
-  IX86_BUILTIN_PSHUFLW,
-  IX86_BUILTIN_PSHUFD,
-
+  IX86_BUILTIN_PMULUDQ,
+  IX86_BUILTIN_PMULUDQ128,
+  IX86_BUILTIN_PMADDWD128,
+  IX86_BUILTIN_CVTSI2SD,
+  IX86_BUILTIN_CVTSI642SD,
+  IX86_BUILTIN_CVTSD2SS,
+  IX86_BUILTIN_CVTSS2SD,
   IX86_BUILTIN_PSLLDQI128,
   IX86_BUILTIN_PSLLWI128,
   IX86_BUILTIN_PSLLDI128,
   IX86_BUILTIN_PSLLQI128,
-  IX86_BUILTIN_PSRAWI128,
-  IX86_BUILTIN_PSRADI128,
+  IX86_BUILTIN_PSLLW128,
+  IX86_BUILTIN_PSLLD128,
+  IX86_BUILTIN_PSLLQ128,
   IX86_BUILTIN_PSRLDQI128,
   IX86_BUILTIN_PSRLWI128,
   IX86_BUILTIN_PSRLDI128,
   IX86_BUILTIN_PSRLQI128,
-
-  IX86_BUILTIN_PSLLDQ128,
-  IX86_BUILTIN_PSLLW128,
-  IX86_BUILTIN_PSLLD128,
-  IX86_BUILTIN_PSLLQ128,
-  IX86_BUILTIN_PSRAW128,
-  IX86_BUILTIN_PSRAD128,
   IX86_BUILTIN_PSRLW128,
   IX86_BUILTIN_PSRLD128,
   IX86_BUILTIN_PSRLQ128,
-
-  IX86_BUILTIN_PUNPCKHBW128,
-  IX86_BUILTIN_PUNPCKHWD128,
-  IX86_BUILTIN_PUNPCKHDQ128,
-  IX86_BUILTIN_PUNPCKHQDQ128,
-  IX86_BUILTIN_PUNPCKLBW128,
-  IX86_BUILTIN_PUNPCKLWD128,
-  IX86_BUILTIN_PUNPCKLDQ128,
-  IX86_BUILTIN_PUNPCKLQDQ128,
-
-  IX86_BUILTIN_CLFLUSH,
-  IX86_BUILTIN_MFENCE,
-  IX86_BUILTIN_LFENCE,
-  IX86_BUILTIN_PAUSE,
-
-  IX86_BUILTIN_FNSTENV,
-  IX86_BUILTIN_FLDENV,
-  IX86_BUILTIN_FNSTSW,
-  IX86_BUILTIN_FNCLEX,
-
-  IX86_BUILTIN_BSRSI,
-  IX86_BUILTIN_BSRDI,
-  IX86_BUILTIN_RDPMC,
-  IX86_BUILTIN_RDTSC,
-  IX86_BUILTIN_RDTSCP,
-  IX86_BUILTIN_ROLQI,
-  IX86_BUILTIN_ROLHI,
-  IX86_BUILTIN_RORQI,
-  IX86_BUILTIN_RORHI,
-
-  /* SSE3.  */
-  IX86_BUILTIN_ADDSUBPS,
-  IX86_BUILTIN_HADDPS,
-  IX86_BUILTIN_HSUBPS,
+  IX86_BUILTIN_PSRAWI128,
+  IX86_BUILTIN_PSRADI128,
+  IX86_BUILTIN_PSRAW128,
+  IX86_BUILTIN_PSRAD128,
+  IX86_BUILTIN_PSHUFD,
+  IX86_BUILTIN_PSHUFLW,
+  IX86_BUILTIN_PSHUFHW,
+  IX86_BUILTIN_SQRTSD,
+  IX86_BUILTIN_MOVQ128,
+  IX86_BUILTIN_PADDQ,
+  IX86_BUILTIN_PSUBQ,
   IX86_BUILTIN_MOVSHDUP,
   IX86_BUILTIN_MOVSLDUP,
+  IX86_BUILTIN_ADDSUBPS,
   IX86_BUILTIN_ADDSUBPD,
+  IX86_BUILTIN_HADDPS,
   IX86_BUILTIN_HADDPD,
+  IX86_BUILTIN_HSUBPS,
   IX86_BUILTIN_HSUBPD,
-  IX86_BUILTIN_LDDQU,
-
-  IX86_BUILTIN_MONITOR,
-  IX86_BUILTIN_MWAIT,
-  IX86_BUILTIN_CLZERO,
-
-  /* SSSE3.  */
-  IX86_BUILTIN_PHADDW,
-  IX86_BUILTIN_PHADDD,
-  IX86_BUILTIN_PHADDSW,
-  IX86_BUILTIN_PHSUBW,
-  IX86_BUILTIN_PHSUBD,
-  IX86_BUILTIN_PHSUBSW,
-  IX86_BUILTIN_PMADDUBSW,
-  IX86_BUILTIN_PMULHRSW,
-  IX86_BUILTIN_PSHUFB,
-  IX86_BUILTIN_PSIGNB,
-  IX86_BUILTIN_PSIGNW,
-  IX86_BUILTIN_PSIGND,
-  IX86_BUILTIN_PALIGNR,
+  IX86_BUILTIN_PABSB128,
   IX86_BUILTIN_PABSB,
+  IX86_BUILTIN_PABSW128,
   IX86_BUILTIN_PABSW,
+  IX86_BUILTIN_PABSD128,
   IX86_BUILTIN_PABSD,
-
   IX86_BUILTIN_PHADDW128,
+  IX86_BUILTIN_PHADDW,
   IX86_BUILTIN_PHADDD128,
+  IX86_BUILTIN_PHADDD,
   IX86_BUILTIN_PHADDSW128,
+  IX86_BUILTIN_PHADDSW,
   IX86_BUILTIN_PHSUBW128,
+  IX86_BUILTIN_PHSUBW,
   IX86_BUILTIN_PHSUBD128,
+  IX86_BUILTIN_PHSUBD,
   IX86_BUILTIN_PHSUBSW128,
+  IX86_BUILTIN_PHSUBSW,
   IX86_BUILTIN_PMADDUBSW128,
+  IX86_BUILTIN_PMADDUBSW,
   IX86_BUILTIN_PMULHRSW128,
+  IX86_BUILTIN_PMULHRSW,
   IX86_BUILTIN_PSHUFB128,
+  IX86_BUILTIN_PSHUFB,
   IX86_BUILTIN_PSIGNB128,
+  IX86_BUILTIN_PSIGNB,
   IX86_BUILTIN_PSIGNW128,
+  IX86_BUILTIN_PSIGNW,
   IX86_BUILTIN_PSIGND128,
+  IX86_BUILTIN_PSIGND,
   IX86_BUILTIN_PALIGNR128,
-  IX86_BUILTIN_PABSB128,
-  IX86_BUILTIN_PABSW128,
-  IX86_BUILTIN_PABSD128,
-
-  /* AMDFAM10 - SSE4A New Instructions.  */
-  IX86_BUILTIN_MOVNTSD,
-  IX86_BUILTIN_MOVNTSS,
-  IX86_BUILTIN_EXTRQI,
-  IX86_BUILTIN_EXTRQ,
-  IX86_BUILTIN_INSERTQI,
-  IX86_BUILTIN_INSERTQ,
-
-  /* SSE4.1.  */
+  IX86_BUILTIN_PALIGNR,
   IX86_BUILTIN_BLENDPD,
   IX86_BUILTIN_BLENDPS,
   IX86_BUILTIN_BLENDVPD,
   IX86_BUILTIN_BLENDVPS,
-  IX86_BUILTIN_PBLENDVB128,
-  IX86_BUILTIN_PBLENDW128,
-
   IX86_BUILTIN_DPPD,
   IX86_BUILTIN_DPPS,
-
   IX86_BUILTIN_INSERTPS128,
-
-  IX86_BUILTIN_MOVNTDQA,
   IX86_BUILTIN_MPSADBW128,
-  IX86_BUILTIN_PACKUSDW128,
-  IX86_BUILTIN_PCMPEQQ,
-  IX86_BUILTIN_PHMINPOSUW128,
-
-  IX86_BUILTIN_PMAXSB128,
-  IX86_BUILTIN_PMAXSD128,
-  IX86_BUILTIN_PMAXUD128,
-  IX86_BUILTIN_PMAXUW128,
-
-  IX86_BUILTIN_PMINSB128,
-  IX86_BUILTIN_PMINSD128,
-  IX86_BUILTIN_PMINUD128,
-  IX86_BUILTIN_PMINUW128,
-
+  IX86_BUILTIN_PBLENDVB128,
+  IX86_BUILTIN_PBLENDW128,
   IX86_BUILTIN_PMOVSXBW128,
   IX86_BUILTIN_PMOVSXBD128,
   IX86_BUILTIN_PMOVSXBQ128,
   IX86_BUILTIN_PMOVSXWD128,
   IX86_BUILTIN_PMOVSXWQ128,
   IX86_BUILTIN_PMOVSXDQ128,
-
   IX86_BUILTIN_PMOVZXBW128,
   IX86_BUILTIN_PMOVZXBD128,
   IX86_BUILTIN_PMOVZXBQ128,
   IX86_BUILTIN_PMOVZXWD128,
   IX86_BUILTIN_PMOVZXWQ128,
   IX86_BUILTIN_PMOVZXDQ128,
-
+  IX86_BUILTIN_PHMINPOSUW128,
+  IX86_BUILTIN_PACKUSDW128,
+  IX86_BUILTIN_PCMPEQQ,
+  IX86_BUILTIN_PMAXSB128,
+  IX86_BUILTIN_PMAXSD128,
+  IX86_BUILTIN_PMAXUD128,
+  IX86_BUILTIN_PMAXUW128,
+  IX86_BUILTIN_PMINSB128,
+  IX86_BUILTIN_PMINSD128,
+  IX86_BUILTIN_PMINUD128,
+  IX86_BUILTIN_PMINUW128,
   IX86_BUILTIN_PMULDQ128,
   IX86_BUILTIN_PMULLD128,
-
-  IX86_BUILTIN_ROUNDSD,
-  IX86_BUILTIN_ROUNDSS,
-
   IX86_BUILTIN_ROUNDPD,
   IX86_BUILTIN_ROUNDPS,
-
+  IX86_BUILTIN_ROUNDSD,
+  IX86_BUILTIN_ROUNDSS,
   IX86_BUILTIN_FLOORPD,
   IX86_BUILTIN_CEILPD,
   IX86_BUILTIN_TRUNCPD,
-  IX86_BUILTIN_RINTPD,
-  IX86_BUILTIN_ROUNDPD_AZ,
-
-  IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX,
-  IX86_BUILTIN_CEILPD_VEC_PACK_SFIX,
-  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX,
-
-  IX86_BUILTIN_FLOORPS,
-  IX86_BUILTIN_CEILPS,
-  IX86_BUILTIN_TRUNCPS,
-  IX86_BUILTIN_RINTPS,
-  IX86_BUILTIN_ROUNDPS_AZ,
-
-  IX86_BUILTIN_FLOORPS_SFIX,
-  IX86_BUILTIN_CEILPS_SFIX,
-  IX86_BUILTIN_ROUNDPS_AZ_SFIX,
-
-  IX86_BUILTIN_PTESTZ,
-  IX86_BUILTIN_PTESTC,
-  IX86_BUILTIN_PTESTNZC,
-
-  IX86_BUILTIN_VEC_INIT_V2SI,
-  IX86_BUILTIN_VEC_INIT_V4HI,
-  IX86_BUILTIN_VEC_INIT_V8QI,
-  IX86_BUILTIN_VEC_EXT_V2DF,
-  IX86_BUILTIN_VEC_EXT_V2DI,
-  IX86_BUILTIN_VEC_EXT_V4SF,
-  IX86_BUILTIN_VEC_EXT_V4SI,
-  IX86_BUILTIN_VEC_EXT_V8HI,
-  IX86_BUILTIN_VEC_EXT_V2SI,
-  IX86_BUILTIN_VEC_EXT_V4HI,
-  IX86_BUILTIN_VEC_EXT_V16QI,
-  IX86_BUILTIN_VEC_SET_V2DI,
-  IX86_BUILTIN_VEC_SET_V4SF,
-  IX86_BUILTIN_VEC_SET_V4SI,
-  IX86_BUILTIN_VEC_SET_V8HI,
-  IX86_BUILTIN_VEC_SET_V4HI,
-  IX86_BUILTIN_VEC_SET_V16QI,
-
-  IX86_BUILTIN_VEC_PACK_SFIX,
-  IX86_BUILTIN_VEC_PACK_SFIX256,
-
-  /* SSE4.2.  */
+  IX86_BUILTIN_RINTPD,
+  IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX,
+  IX86_BUILTIN_CEILPD_VEC_PACK_SFIX,
+  IX86_BUILTIN_ROUNDPD_AZ,
+  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX,
+  IX86_BUILTIN_FLOORPS,
+  IX86_BUILTIN_CEILPS,
+  IX86_BUILTIN_TRUNCPS,
+  IX86_BUILTIN_RINTPS,
+  IX86_BUILTIN_FLOORPS_SFIX,
+  IX86_BUILTIN_CEILPS_SFIX,
+  IX86_BUILTIN_ROUNDPS_AZ,
+  IX86_BUILTIN_ROUNDPS_AZ_SFIX,
+  IX86_BUILTIN_PTESTZ,
+  IX86_BUILTIN_PTESTC,
+  IX86_BUILTIN_PTESTNZC,
+  IX86_BUILTIN_PCMPGTQ,
   IX86_BUILTIN_CRC32QI,
   IX86_BUILTIN_CRC32HI,
   IX86_BUILTIN_CRC32SI,
   IX86_BUILTIN_CRC32DI,
-
-  IX86_BUILTIN_PCMPESTRI128,
-  IX86_BUILTIN_PCMPESTRM128,
-  IX86_BUILTIN_PCMPESTRA128,
-  IX86_BUILTIN_PCMPESTRC128,
-  IX86_BUILTIN_PCMPESTRO128,
-  IX86_BUILTIN_PCMPESTRS128,
-  IX86_BUILTIN_PCMPESTRZ128,
-  IX86_BUILTIN_PCMPISTRI128,
-  IX86_BUILTIN_PCMPISTRM128,
-  IX86_BUILTIN_PCMPISTRA128,
-  IX86_BUILTIN_PCMPISTRC128,
-  IX86_BUILTIN_PCMPISTRO128,
-  IX86_BUILTIN_PCMPISTRS128,
-  IX86_BUILTIN_PCMPISTRZ128,
-
-  IX86_BUILTIN_PCMPGTQ,
-
-  /* AES instructions */
+  IX86_BUILTIN_EXTRQI,
+  IX86_BUILTIN_EXTRQ,
+  IX86_BUILTIN_INSERTQI,
+  IX86_BUILTIN_INSERTQ,
+  IX86_BUILTIN_AESKEYGENASSIST128,
+  IX86_BUILTIN_AESIMC128,
   IX86_BUILTIN_AESENC128,
   IX86_BUILTIN_AESENCLAST128,
   IX86_BUILTIN_AESDEC128,
   IX86_BUILTIN_AESDECLAST128,
-  IX86_BUILTIN_AESIMC128,
-  IX86_BUILTIN_AESKEYGENASSIST128,
-
-  /* PCLMUL instruction */
   IX86_BUILTIN_PCLMULQDQ128,
-
-  /* AVX */
   IX86_BUILTIN_ADDPD256,
   IX86_BUILTIN_ADDPS256,
   IX86_BUILTIN_ADDSUBPD256,
@@ -31151,17 +31384,12 @@ enum ix86_builtins
   IX86_BUILTIN_ANDPS256,
   IX86_BUILTIN_ANDNPD256,
   IX86_BUILTIN_ANDNPS256,
-  IX86_BUILTIN_BLENDPD256,
-  IX86_BUILTIN_BLENDPS256,
-  IX86_BUILTIN_BLENDVPD256,
-  IX86_BUILTIN_BLENDVPS256,
   IX86_BUILTIN_DIVPD256,
   IX86_BUILTIN_DIVPS256,
-  IX86_BUILTIN_DPPS256,
   IX86_BUILTIN_HADDPD256,
-  IX86_BUILTIN_HADDPS256,
-  IX86_BUILTIN_HSUBPD256,
   IX86_BUILTIN_HSUBPS256,
+  IX86_BUILTIN_HSUBPD256,
+  IX86_BUILTIN_HADDPS256,
   IX86_BUILTIN_MAXPD256,
   IX86_BUILTIN_MAXPS256,
   IX86_BUILTIN_MINPD256,
@@ -31170,18 +31398,30 @@ enum ix86_builtins
   IX86_BUILTIN_MULPS256,
   IX86_BUILTIN_ORPD256,
   IX86_BUILTIN_ORPS256,
-  IX86_BUILTIN_SHUFPD256,
-  IX86_BUILTIN_SHUFPS256,
   IX86_BUILTIN_SUBPD256,
   IX86_BUILTIN_SUBPS256,
   IX86_BUILTIN_XORPD256,
   IX86_BUILTIN_XORPS256,
+  IX86_BUILTIN_VPERMILVARPD,
+  IX86_BUILTIN_VPERMILVARPS,
+  IX86_BUILTIN_VPERMILVARPD256,
+  IX86_BUILTIN_VPERMILVARPS256,
+  IX86_BUILTIN_BLENDPD256,
+  IX86_BUILTIN_BLENDPS256,
+  IX86_BUILTIN_BLENDVPD256,
+  IX86_BUILTIN_BLENDVPS256,
+  IX86_BUILTIN_DPPS256,
+  IX86_BUILTIN_SHUFPD256,
+  IX86_BUILTIN_SHUFPS256,
   IX86_BUILTIN_CMPSD,
   IX86_BUILTIN_CMPSS,
   IX86_BUILTIN_CMPPD,
   IX86_BUILTIN_CMPPS,
   IX86_BUILTIN_CMPPD256,
   IX86_BUILTIN_CMPPS256,
+  IX86_BUILTIN_EXTRACTF128PD256,
+  IX86_BUILTIN_EXTRACTF128PS256,
+  IX86_BUILTIN_EXTRACTF128SI256,
   IX86_BUILTIN_CVTDQ2PD256,
   IX86_BUILTIN_CVTDQ2PS256,
   IX86_BUILTIN_CVTPD2PS256,
@@ -31190,99 +31430,53 @@ enum ix86_builtins
   IX86_BUILTIN_CVTTPD2DQ256,
   IX86_BUILTIN_CVTPD2DQ256,
   IX86_BUILTIN_CVTTPS2DQ256,
-  IX86_BUILTIN_EXTRACTF128PD256,
-  IX86_BUILTIN_EXTRACTF128PS256,
-  IX86_BUILTIN_EXTRACTF128SI256,
-  IX86_BUILTIN_VZEROALL,
-  IX86_BUILTIN_VZEROUPPER,
-  IX86_BUILTIN_VPERMILVARPD,
-  IX86_BUILTIN_VPERMILVARPS,
-  IX86_BUILTIN_VPERMILVARPD256,
-  IX86_BUILTIN_VPERMILVARPS256,
+  IX86_BUILTIN_VPERM2F128PD256,
+  IX86_BUILTIN_VPERM2F128PS256,
+  IX86_BUILTIN_VPERM2F128SI256,
   IX86_BUILTIN_VPERMILPD,
   IX86_BUILTIN_VPERMILPS,
   IX86_BUILTIN_VPERMILPD256,
   IX86_BUILTIN_VPERMILPS256,
-  IX86_BUILTIN_VPERMIL2PD,
-  IX86_BUILTIN_VPERMIL2PS,
-  IX86_BUILTIN_VPERMIL2PD256,
-  IX86_BUILTIN_VPERMIL2PS256,
-  IX86_BUILTIN_VPERM2F128PD256,
-  IX86_BUILTIN_VPERM2F128PS256,
-  IX86_BUILTIN_VPERM2F128SI256,
-  IX86_BUILTIN_VBROADCASTSS,
-  IX86_BUILTIN_VBROADCASTSD256,
-  IX86_BUILTIN_VBROADCASTSS256,
-  IX86_BUILTIN_VBROADCASTPD256,
-  IX86_BUILTIN_VBROADCASTPS256,
   IX86_BUILTIN_VINSERTF128PD256,
   IX86_BUILTIN_VINSERTF128PS256,
   IX86_BUILTIN_VINSERTF128SI256,
-  IX86_BUILTIN_LOADUPD256,
-  IX86_BUILTIN_LOADUPS256,
-  IX86_BUILTIN_STOREUPD256,
-  IX86_BUILTIN_STOREUPS256,
-  IX86_BUILTIN_LDDQU256,
-  IX86_BUILTIN_MOVNTDQ256,
-  IX86_BUILTIN_MOVNTPD256,
-  IX86_BUILTIN_MOVNTPS256,
-  IX86_BUILTIN_LOADDQU256,
-  IX86_BUILTIN_STOREDQU256,
-  IX86_BUILTIN_MASKLOADPD,
-  IX86_BUILTIN_MASKLOADPS,
-  IX86_BUILTIN_MASKSTOREPD,
-  IX86_BUILTIN_MASKSTOREPS,
-  IX86_BUILTIN_MASKLOADPD256,
-  IX86_BUILTIN_MASKLOADPS256,
-  IX86_BUILTIN_MASKSTOREPD256,
-  IX86_BUILTIN_MASKSTOREPS256,
   IX86_BUILTIN_MOVSHDUP256,
   IX86_BUILTIN_MOVSLDUP256,
   IX86_BUILTIN_MOVDDUP256,
-
   IX86_BUILTIN_SQRTPD256,
   IX86_BUILTIN_SQRTPS256,
   IX86_BUILTIN_SQRTPS_NR256,
   IX86_BUILTIN_RSQRTPS256,
   IX86_BUILTIN_RSQRTPS_NR256,
-
   IX86_BUILTIN_RCPPS256,
-
   IX86_BUILTIN_ROUNDPD256,
   IX86_BUILTIN_ROUNDPS256,
-
   IX86_BUILTIN_FLOORPD256,
   IX86_BUILTIN_CEILPD256,
   IX86_BUILTIN_TRUNCPD256,
   IX86_BUILTIN_RINTPD256,
   IX86_BUILTIN_ROUNDPD_AZ256,
-
+  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX256,
   IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX256,
   IX86_BUILTIN_CEILPD_VEC_PACK_SFIX256,
-  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX256,
-
   IX86_BUILTIN_FLOORPS256,
   IX86_BUILTIN_CEILPS256,
   IX86_BUILTIN_TRUNCPS256,
   IX86_BUILTIN_RINTPS256,
-  IX86_BUILTIN_ROUNDPS_AZ256,
-
   IX86_BUILTIN_FLOORPS_SFIX256,
   IX86_BUILTIN_CEILPS_SFIX256,
+  IX86_BUILTIN_ROUNDPS_AZ256,
   IX86_BUILTIN_ROUNDPS_AZ_SFIX256,
-
   IX86_BUILTIN_UNPCKHPD256,
   IX86_BUILTIN_UNPCKLPD256,
   IX86_BUILTIN_UNPCKHPS256,
   IX86_BUILTIN_UNPCKLPS256,
-
   IX86_BUILTIN_SI256_SI,
   IX86_BUILTIN_PS256_PS,
   IX86_BUILTIN_PD256_PD,
   IX86_BUILTIN_SI_SI256,
   IX86_BUILTIN_PS_PS256,
   IX86_BUILTIN_PD_PD256,
-
   IX86_BUILTIN_VTESTZPD,
   IX86_BUILTIN_VTESTCPD,
   IX86_BUILTIN_VTESTNZCPD,
@@ -31298,11 +31492,11 @@ enum ix86_builtins
   IX86_BUILTIN_PTESTZ256,
   IX86_BUILTIN_PTESTC256,
   IX86_BUILTIN_PTESTNZC256,
-
   IX86_BUILTIN_MOVMSKPD256,
   IX86_BUILTIN_MOVMSKPS256,
-
-  /* AVX2 */
+  IX86_BUILTIN_CPYSGNPS256,
+  IX86_BUILTIN_CPYSGNPD256,
+  IX86_BUILTIN_VEC_PACK_SFIX256,
   IX86_BUILTIN_MPSADBW256,
   IX86_BUILTIN_PABSB256,
   IX86_BUILTIN_PABSW256,
@@ -31418,13 +31612,12 @@ enum ix86_builtins
   IX86_BUILTIN_PUNPCKLDQ256,
   IX86_BUILTIN_PUNPCKLQDQ256,
   IX86_BUILTIN_PXOR256,
-  IX86_BUILTIN_MOVNTDQA256,
   IX86_BUILTIN_VBROADCASTSS_PS,
   IX86_BUILTIN_VBROADCASTSS_PS256,
   IX86_BUILTIN_VBROADCASTSD_PD256,
   IX86_BUILTIN_VBROADCASTSI256,
-  IX86_BUILTIN_PBLENDD256,
   IX86_BUILTIN_PBLENDD128,
+  IX86_BUILTIN_PBLENDD256,
   IX86_BUILTIN_PBROADCASTB256,
   IX86_BUILTIN_PBROADCASTW256,
   IX86_BUILTIN_PBROADCASTD256,
@@ -31434,20 +31627,12 @@ enum ix86_builtins
   IX86_BUILTIN_PBROADCASTD128,
   IX86_BUILTIN_PBROADCASTQ128,
   IX86_BUILTIN_VPERMVARSI256,
-  IX86_BUILTIN_VPERMDF256,
   IX86_BUILTIN_VPERMVARSF256,
+  IX86_BUILTIN_VPERMDF256,
   IX86_BUILTIN_VPERMDI256,
   IX86_BUILTIN_VPERMTI256,
   IX86_BUILTIN_VEXTRACT128I256,
   IX86_BUILTIN_VINSERT128I256,
-  IX86_BUILTIN_MASKLOADD,
-  IX86_BUILTIN_MASKLOADQ,
-  IX86_BUILTIN_MASKLOADD256,
-  IX86_BUILTIN_MASKLOADQ256,
-  IX86_BUILTIN_MASKSTORED,
-  IX86_BUILTIN_MASKSTOREQ,
-  IX86_BUILTIN_MASKSTORED256,
-  IX86_BUILTIN_MASKSTOREQ256,
   IX86_BUILTIN_PSLLVV4DI,
   IX86_BUILTIN_PSLLVV2DI,
   IX86_BUILTIN_PSLLVV8SI,
@@ -31458,35 +31643,28 @@ enum ix86_builtins
   IX86_BUILTIN_PSRLVV2DI,
   IX86_BUILTIN_PSRLVV8SI,
   IX86_BUILTIN_PSRLVV4SI,
-
-  IX86_BUILTIN_GATHERSIV2DF,
-  IX86_BUILTIN_GATHERSIV4DF,
-  IX86_BUILTIN_GATHERDIV2DF,
-  IX86_BUILTIN_GATHERDIV4DF,
-  IX86_BUILTIN_GATHERSIV4SF,
-  IX86_BUILTIN_GATHERSIV8SF,
-  IX86_BUILTIN_GATHERDIV4SF,
-  IX86_BUILTIN_GATHERDIV8SF,
-  IX86_BUILTIN_GATHERSIV2DI,
-  IX86_BUILTIN_GATHERSIV4DI,
-  IX86_BUILTIN_GATHERDIV2DI,
-  IX86_BUILTIN_GATHERDIV4DI,
-  IX86_BUILTIN_GATHERSIV4SI,
-  IX86_BUILTIN_GATHERSIV8SI,
-  IX86_BUILTIN_GATHERDIV4SI,
-  IX86_BUILTIN_GATHERDIV8SI,
-
-  /* AVX512F */
+  IX86_BUILTIN_CLZS,
+  IX86_BUILTIN_BEXTR32,
+  IX86_BUILTIN_BEXTR64,
+  IX86_BUILTIN_CTZS,
+  IX86_BUILTIN_BEXTRI32,
+  IX86_BUILTIN_BEXTRI64,
+  IX86_BUILTIN_CVTPH2PS,
+  IX86_BUILTIN_CVTPH2PS256,
+  IX86_BUILTIN_CVTPS2PH,
+  IX86_BUILTIN_CVTPS2PH256,
+  IX86_BUILTIN_BZHI32,
+  IX86_BUILTIN_BZHI64,
+  IX86_BUILTIN_PDEP32,
+  IX86_BUILTIN_PDEP64,
+  IX86_BUILTIN_PEXT32,
+  IX86_BUILTIN_PEXT64,
   IX86_BUILTIN_SI512_SI256,
-  IX86_BUILTIN_PD512_PD256,
   IX86_BUILTIN_PS512_PS256,
+  IX86_BUILTIN_PD512_PD256,
   IX86_BUILTIN_SI512_SI,
-  IX86_BUILTIN_PD512_PD,
   IX86_BUILTIN_PS512_PS,
-  IX86_BUILTIN_ADDPD512,
-  IX86_BUILTIN_ADDPS512,
-  IX86_BUILTIN_ADDSD_ROUND,
-  IX86_BUILTIN_ADDSS_ROUND,
+  IX86_BUILTIN_PD512_PD,
   IX86_BUILTIN_ALIGND512,
   IX86_BUILTIN_ALIGNQ512,
   IX86_BUILTIN_BLENDMD512,
@@ -31500,111 +31678,32 @@ enum ix86_builtins
   IX86_BUILTIN_BROADCASTSD512,
   IX86_BUILTIN_BROADCASTSS512,
   IX86_BUILTIN_CMPD512,
-  IX86_BUILTIN_CMPPD512,
-  IX86_BUILTIN_CMPPS512,
   IX86_BUILTIN_CMPQ512,
-  IX86_BUILTIN_CMPSD_MASK,
-  IX86_BUILTIN_CMPSS_MASK,
-  IX86_BUILTIN_COMIDF,
-  IX86_BUILTIN_COMISF,
   IX86_BUILTIN_COMPRESSPD512,
-  IX86_BUILTIN_COMPRESSPDSTORE512,
   IX86_BUILTIN_COMPRESSPS512,
-  IX86_BUILTIN_COMPRESSPSSTORE512,
   IX86_BUILTIN_CVTDQ2PD512,
-  IX86_BUILTIN_CVTDQ2PS512,
-  IX86_BUILTIN_CVTPD2DQ512,
-  IX86_BUILTIN_CVTPD2PS512,
-  IX86_BUILTIN_CVTPD2UDQ512,
-  IX86_BUILTIN_CVTPH2PS512,
-  IX86_BUILTIN_CVTPS2DQ512_MASK,
-  IX86_BUILTIN_CVTPS2PD512,
   IX86_BUILTIN_CVTPS2PH512,
-  IX86_BUILTIN_CVTPS2UDQ512,
-  IX86_BUILTIN_CVTSD2SS_ROUND,
-  IX86_BUILTIN_CVTSI2SD64,
-  IX86_BUILTIN_CVTSI2SS32,
-  IX86_BUILTIN_CVTSI2SS64,
-  IX86_BUILTIN_CVTSS2SD_ROUND,
-  IX86_BUILTIN_CVTTPD2DQ512,
-  IX86_BUILTIN_CVTTPD2UDQ512,
-  IX86_BUILTIN_CVTTPS2DQ512,
-  IX86_BUILTIN_CVTTPS2UDQ512,
   IX86_BUILTIN_CVTUDQ2PD512,
-  IX86_BUILTIN_CVTUDQ2PS512,
   IX86_BUILTIN_CVTUSI2SD32,
-  IX86_BUILTIN_CVTUSI2SD64,
-  IX86_BUILTIN_CVTUSI2SS32,
-  IX86_BUILTIN_CVTUSI2SS64,
-  IX86_BUILTIN_DIVPD512,
-  IX86_BUILTIN_DIVPS512,
-  IX86_BUILTIN_DIVSD_ROUND,
-  IX86_BUILTIN_DIVSS_ROUND,
   IX86_BUILTIN_EXPANDPD512,
   IX86_BUILTIN_EXPANDPD512Z,
-  IX86_BUILTIN_EXPANDPDLOAD512,
-  IX86_BUILTIN_EXPANDPDLOAD512Z,
   IX86_BUILTIN_EXPANDPS512,
   IX86_BUILTIN_EXPANDPS512Z,
-  IX86_BUILTIN_EXPANDPSLOAD512,
-  IX86_BUILTIN_EXPANDPSLOAD512Z,
   IX86_BUILTIN_EXTRACTF32X4,
   IX86_BUILTIN_EXTRACTF64X4,
   IX86_BUILTIN_EXTRACTI32X4,
   IX86_BUILTIN_EXTRACTI64X4,
-  IX86_BUILTIN_FIXUPIMMPD512_MASK,
-  IX86_BUILTIN_FIXUPIMMPD512_MASKZ,
-  IX86_BUILTIN_FIXUPIMMPS512_MASK,
-  IX86_BUILTIN_FIXUPIMMPS512_MASKZ,
-  IX86_BUILTIN_FIXUPIMMSD128_MASK,
-  IX86_BUILTIN_FIXUPIMMSD128_MASKZ,
-  IX86_BUILTIN_FIXUPIMMSS128_MASK,
-  IX86_BUILTIN_FIXUPIMMSS128_MASKZ,
-  IX86_BUILTIN_GETEXPPD512,
-  IX86_BUILTIN_GETEXPPS512,
-  IX86_BUILTIN_GETEXPSD128,
-  IX86_BUILTIN_GETEXPSS128,
-  IX86_BUILTIN_GETMANTPD512,
-  IX86_BUILTIN_GETMANTPS512,
-  IX86_BUILTIN_GETMANTSD128,
-  IX86_BUILTIN_GETMANTSS128,
   IX86_BUILTIN_INSERTF32X4,
-  IX86_BUILTIN_INSERTF64X4,
-  IX86_BUILTIN_INSERTI32X4,
-  IX86_BUILTIN_INSERTI64X4,
-  IX86_BUILTIN_LOADAPD512,
-  IX86_BUILTIN_LOADAPS512,
-  IX86_BUILTIN_LOADDQUDI512,
-  IX86_BUILTIN_LOADDQUSI512,
-  IX86_BUILTIN_LOADUPD512,
-  IX86_BUILTIN_LOADUPS512,
-  IX86_BUILTIN_MAXPD512,
-  IX86_BUILTIN_MAXPS512,
-  IX86_BUILTIN_MAXSD_ROUND,
-  IX86_BUILTIN_MAXSS_ROUND,
-  IX86_BUILTIN_MINPD512,
-  IX86_BUILTIN_MINPS512,
-  IX86_BUILTIN_MINSD_ROUND,
-  IX86_BUILTIN_MINSS_ROUND,
+  IX86_BUILTIN_INSERTF64X4,
+  IX86_BUILTIN_INSERTI32X4,
+  IX86_BUILTIN_INSERTI64X4,
   IX86_BUILTIN_MOVAPD512,
   IX86_BUILTIN_MOVAPS512,
   IX86_BUILTIN_MOVDDUP512,
-  IX86_BUILTIN_MOVDQA32LOAD512,
-  IX86_BUILTIN_MOVDQA32STORE512,
   IX86_BUILTIN_MOVDQA32_512,
-  IX86_BUILTIN_MOVDQA64LOAD512,
-  IX86_BUILTIN_MOVDQA64STORE512,
   IX86_BUILTIN_MOVDQA64_512,
-  IX86_BUILTIN_MOVNTDQ512,
-  IX86_BUILTIN_MOVNTDQA512,
-  IX86_BUILTIN_MOVNTPD512,
-  IX86_BUILTIN_MOVNTPS512,
   IX86_BUILTIN_MOVSHDUP512,
   IX86_BUILTIN_MOVSLDUP512,
-  IX86_BUILTIN_MULPD512,
-  IX86_BUILTIN_MULPS512,
-  IX86_BUILTIN_MULSD_ROUND,
-  IX86_BUILTIN_MULSS_ROUND,
   IX86_BUILTIN_PABSD512,
   IX86_BUILTIN_PABSQ512,
   IX86_BUILTIN_PADDD512,
@@ -31624,17 +31723,11 @@ enum ix86_builtins
   IX86_BUILTIN_PCMPGTD512_MASK,
   IX86_BUILTIN_PCMPGTQ512_MASK,
   IX86_BUILTIN_PCOMPRESSD512,
-  IX86_BUILTIN_PCOMPRESSDSTORE512,
   IX86_BUILTIN_PCOMPRESSQ512,
-  IX86_BUILTIN_PCOMPRESSQSTORE512,
   IX86_BUILTIN_PEXPANDD512,
   IX86_BUILTIN_PEXPANDD512Z,
-  IX86_BUILTIN_PEXPANDDLOAD512,
-  IX86_BUILTIN_PEXPANDDLOAD512Z,
   IX86_BUILTIN_PEXPANDQ512,
   IX86_BUILTIN_PEXPANDQ512Z,
-  IX86_BUILTIN_PEXPANDQLOAD512,
-  IX86_BUILTIN_PEXPANDQLOAD512Z,
   IX86_BUILTIN_PMAXSD512,
   IX86_BUILTIN_PMAXSQ512,
   IX86_BUILTIN_PMAXUD512,
@@ -31644,40 +31737,25 @@ enum ix86_builtins
   IX86_BUILTIN_PMINUD512,
   IX86_BUILTIN_PMINUQ512,
   IX86_BUILTIN_PMOVDB512,
-  IX86_BUILTIN_PMOVDB512_MEM,
   IX86_BUILTIN_PMOVDW512,
-  IX86_BUILTIN_PMOVDW512_MEM,
   IX86_BUILTIN_PMOVQB512,
-  IX86_BUILTIN_PMOVQB512_MEM,
   IX86_BUILTIN_PMOVQD512,
-  IX86_BUILTIN_PMOVQD512_MEM,
   IX86_BUILTIN_PMOVQW512,
-  IX86_BUILTIN_PMOVQW512_MEM,
   IX86_BUILTIN_PMOVSDB512,
-  IX86_BUILTIN_PMOVSDB512_MEM,
   IX86_BUILTIN_PMOVSDW512,
-  IX86_BUILTIN_PMOVSDW512_MEM,
   IX86_BUILTIN_PMOVSQB512,
-  IX86_BUILTIN_PMOVSQB512_MEM,
   IX86_BUILTIN_PMOVSQD512,
-  IX86_BUILTIN_PMOVSQD512_MEM,
   IX86_BUILTIN_PMOVSQW512,
-  IX86_BUILTIN_PMOVSQW512_MEM,
   IX86_BUILTIN_PMOVSXBD512,
   IX86_BUILTIN_PMOVSXBQ512,
   IX86_BUILTIN_PMOVSXDQ512,
   IX86_BUILTIN_PMOVSXWD512,
   IX86_BUILTIN_PMOVSXWQ512,
   IX86_BUILTIN_PMOVUSDB512,
-  IX86_BUILTIN_PMOVUSDB512_MEM,
   IX86_BUILTIN_PMOVUSDW512,
-  IX86_BUILTIN_PMOVUSDW512_MEM,
   IX86_BUILTIN_PMOVUSQB512,
-  IX86_BUILTIN_PMOVUSQB512_MEM,
   IX86_BUILTIN_PMOVUSQD512,
-  IX86_BUILTIN_PMOVUSQD512_MEM,
   IX86_BUILTIN_PMOVUSQW512,
-  IX86_BUILTIN_PMOVUSQW512_MEM,
   IX86_BUILTIN_PMOVZXBD512,
   IX86_BUILTIN_PMOVZXBQ512,
   IX86_BUILTIN_PMOVZXDQ512,
@@ -31731,226 +31809,88 @@ enum ix86_builtins
   IX86_BUILTIN_RCP14PS512,
   IX86_BUILTIN_RCP14SD,
   IX86_BUILTIN_RCP14SS,
-  IX86_BUILTIN_RNDSCALEPD,
-  IX86_BUILTIN_RNDSCALEPS,
-  IX86_BUILTIN_RNDSCALESD,
-  IX86_BUILTIN_RNDSCALESS,
-  IX86_BUILTIN_RSQRT14PD512,
-  IX86_BUILTIN_RSQRT14PS512,
-  IX86_BUILTIN_RSQRT14SD,
-  IX86_BUILTIN_RSQRT14SS,
-  IX86_BUILTIN_SCALEFPD512,
-  IX86_BUILTIN_SCALEFPS512,
-  IX86_BUILTIN_SCALEFSD,
-  IX86_BUILTIN_SCALEFSS,
-  IX86_BUILTIN_SHUFPD512,
-  IX86_BUILTIN_SHUFPS512,
-  IX86_BUILTIN_SHUF_F32x4,
-  IX86_BUILTIN_SHUF_F64x2,
-  IX86_BUILTIN_SHUF_I32x4,
-  IX86_BUILTIN_SHUF_I64x2,
-  IX86_BUILTIN_SQRTPD512,
-  IX86_BUILTIN_SQRTPD512_MASK,
-  IX86_BUILTIN_SQRTPS512_MASK,
-  IX86_BUILTIN_SQRTPS_NR512,
-  IX86_BUILTIN_SQRTSD_ROUND,
-  IX86_BUILTIN_SQRTSS_ROUND,
-  IX86_BUILTIN_STOREAPD512,
-  IX86_BUILTIN_STOREAPS512,
-  IX86_BUILTIN_STOREDQUDI512,
-  IX86_BUILTIN_STOREDQUSI512,
-  IX86_BUILTIN_STOREUPD512,
-  IX86_BUILTIN_STOREUPS512,
-  IX86_BUILTIN_SUBPD512,
-  IX86_BUILTIN_SUBPS512,
-  IX86_BUILTIN_SUBSD_ROUND,
-  IX86_BUILTIN_SUBSS_ROUND,
-  IX86_BUILTIN_UCMPD512,
-  IX86_BUILTIN_UCMPQ512,
-  IX86_BUILTIN_UNPCKHPD512,
-  IX86_BUILTIN_UNPCKHPS512,
-  IX86_BUILTIN_UNPCKLPD512,
-  IX86_BUILTIN_UNPCKLPS512,
-  IX86_BUILTIN_VCVTSD2SI32,
-  IX86_BUILTIN_VCVTSD2SI64,
-  IX86_BUILTIN_VCVTSD2USI32,
-  IX86_BUILTIN_VCVTSD2USI64,
-  IX86_BUILTIN_VCVTSS2SI32,
-  IX86_BUILTIN_VCVTSS2SI64,
-  IX86_BUILTIN_VCVTSS2USI32,
-  IX86_BUILTIN_VCVTSS2USI64,
-  IX86_BUILTIN_VCVTTSD2SI32,
-  IX86_BUILTIN_VCVTTSD2SI64,
-  IX86_BUILTIN_VCVTTSD2USI32,
-  IX86_BUILTIN_VCVTTSD2USI64,
-  IX86_BUILTIN_VCVTTSS2SI32,
-  IX86_BUILTIN_VCVTTSS2SI64,
-  IX86_BUILTIN_VCVTTSS2USI32,
-  IX86_BUILTIN_VCVTTSS2USI64,
-  IX86_BUILTIN_VFMADDPD512_MASK,
-  IX86_BUILTIN_VFMADDPD512_MASK3,
-  IX86_BUILTIN_VFMADDPD512_MASKZ,
-  IX86_BUILTIN_VFMADDPS512_MASK,
-  IX86_BUILTIN_VFMADDPS512_MASK3,
-  IX86_BUILTIN_VFMADDPS512_MASKZ,
-  IX86_BUILTIN_VFMADDSD3_ROUND,
-  IX86_BUILTIN_VFMADDSS3_ROUND,
-  IX86_BUILTIN_VFMADDSUBPD512_MASK,
-  IX86_BUILTIN_VFMADDSUBPD512_MASK3,
-  IX86_BUILTIN_VFMADDSUBPD512_MASKZ,
-  IX86_BUILTIN_VFMADDSUBPS512_MASK,
-  IX86_BUILTIN_VFMADDSUBPS512_MASK3,
-  IX86_BUILTIN_VFMADDSUBPS512_MASKZ,
-  IX86_BUILTIN_VFMSUBADDPD512_MASK3,
-  IX86_BUILTIN_VFMSUBADDPS512_MASK3,
-  IX86_BUILTIN_VFMSUBPD512_MASK3,
-  IX86_BUILTIN_VFMSUBPS512_MASK3,
-  IX86_BUILTIN_VFMSUBSD3_MASK3,
-  IX86_BUILTIN_VFMSUBSS3_MASK3,
-  IX86_BUILTIN_VFNMADDPD512_MASK,
-  IX86_BUILTIN_VFNMADDPS512_MASK,
-  IX86_BUILTIN_VFNMSUBPD512_MASK,
-  IX86_BUILTIN_VFNMSUBPD512_MASK3,
-  IX86_BUILTIN_VFNMSUBPS512_MASK,
-  IX86_BUILTIN_VFNMSUBPS512_MASK3,
-  IX86_BUILTIN_VPCLZCNTD512,
-  IX86_BUILTIN_VPCLZCNTQ512,
-  IX86_BUILTIN_VPCONFLICTD512,
-  IX86_BUILTIN_VPCONFLICTQ512,
-  IX86_BUILTIN_VPERMDF512,
-  IX86_BUILTIN_VPERMDI512,
-  IX86_BUILTIN_VPERMI2VARD512,
-  IX86_BUILTIN_VPERMI2VARPD512,
-  IX86_BUILTIN_VPERMI2VARPS512,
-  IX86_BUILTIN_VPERMI2VARQ512,
-  IX86_BUILTIN_VPERMILPD512,
-  IX86_BUILTIN_VPERMILPS512,
-  IX86_BUILTIN_VPERMILVARPD512,
-  IX86_BUILTIN_VPERMILVARPS512,
-  IX86_BUILTIN_VPERMT2VARD512,
-  IX86_BUILTIN_VPERMT2VARD512_MASKZ,
-  IX86_BUILTIN_VPERMT2VARPD512,
-  IX86_BUILTIN_VPERMT2VARPD512_MASKZ,
-  IX86_BUILTIN_VPERMT2VARPS512,
-  IX86_BUILTIN_VPERMT2VARPS512_MASKZ,
-  IX86_BUILTIN_VPERMT2VARQ512,
-  IX86_BUILTIN_VPERMT2VARQ512_MASKZ,
-  IX86_BUILTIN_VPERMVARDF512,
-  IX86_BUILTIN_VPERMVARDI512,
-  IX86_BUILTIN_VPERMVARSF512,
-  IX86_BUILTIN_VPERMVARSI512,
-  IX86_BUILTIN_VTERNLOGD512_MASK,
-  IX86_BUILTIN_VTERNLOGD512_MASKZ,
-  IX86_BUILTIN_VTERNLOGQ512_MASK,
-  IX86_BUILTIN_VTERNLOGQ512_MASKZ,
-
-  /* Mask arithmetic operations */
-  IX86_BUILTIN_KAND16,
-  IX86_BUILTIN_KANDN16,
-  IX86_BUILTIN_KNOT16,
-  IX86_BUILTIN_KOR16,
-  IX86_BUILTIN_KORTESTC16,
-  IX86_BUILTIN_KORTESTZ16,
-  IX86_BUILTIN_KUNPCKBW,
-  IX86_BUILTIN_KXNOR16,
-  IX86_BUILTIN_KXOR16,
-  IX86_BUILTIN_KMOV16,
-
-  /* AVX512VL.  */
-  IX86_BUILTIN_PMOVUSQD256_MEM,
-  IX86_BUILTIN_PMOVUSQD128_MEM,
-  IX86_BUILTIN_PMOVSQD256_MEM,
-  IX86_BUILTIN_PMOVSQD128_MEM,
-  IX86_BUILTIN_PMOVQD256_MEM,
-  IX86_BUILTIN_PMOVQD128_MEM,
-  IX86_BUILTIN_PMOVUSQW256_MEM,
-  IX86_BUILTIN_PMOVUSQW128_MEM,
-  IX86_BUILTIN_PMOVSQW256_MEM,
-  IX86_BUILTIN_PMOVSQW128_MEM,
-  IX86_BUILTIN_PMOVQW256_MEM,
-  IX86_BUILTIN_PMOVQW128_MEM,
-  IX86_BUILTIN_PMOVUSQB256_MEM,
-  IX86_BUILTIN_PMOVUSQB128_MEM,
-  IX86_BUILTIN_PMOVSQB256_MEM,
-  IX86_BUILTIN_PMOVSQB128_MEM,
-  IX86_BUILTIN_PMOVQB256_MEM,
-  IX86_BUILTIN_PMOVQB128_MEM,
-  IX86_BUILTIN_PMOVUSDW256_MEM,
-  IX86_BUILTIN_PMOVUSDW128_MEM,
-  IX86_BUILTIN_PMOVSDW256_MEM,
-  IX86_BUILTIN_PMOVSDW128_MEM,
-  IX86_BUILTIN_PMOVDW256_MEM,
-  IX86_BUILTIN_PMOVDW128_MEM,
-  IX86_BUILTIN_PMOVUSDB256_MEM,
-  IX86_BUILTIN_PMOVUSDB128_MEM,
-  IX86_BUILTIN_PMOVSDB256_MEM,
-  IX86_BUILTIN_PMOVSDB128_MEM,
-  IX86_BUILTIN_PMOVDB256_MEM,
-  IX86_BUILTIN_PMOVDB128_MEM,
-  IX86_BUILTIN_MOVDQA64LOAD256_MASK,
-  IX86_BUILTIN_MOVDQA64LOAD128_MASK,
-  IX86_BUILTIN_MOVDQA32LOAD256_MASK,
-  IX86_BUILTIN_MOVDQA32LOAD128_MASK,
-  IX86_BUILTIN_MOVDQA64STORE256_MASK,
-  IX86_BUILTIN_MOVDQA64STORE128_MASK,
-  IX86_BUILTIN_MOVDQA32STORE256_MASK,
-  IX86_BUILTIN_MOVDQA32STORE128_MASK,
-  IX86_BUILTIN_LOADAPD256_MASK,
-  IX86_BUILTIN_LOADAPD128_MASK,
-  IX86_BUILTIN_LOADAPS256_MASK,
-  IX86_BUILTIN_LOADAPS128_MASK,
-  IX86_BUILTIN_STOREAPD256_MASK,
-  IX86_BUILTIN_STOREAPD128_MASK,
-  IX86_BUILTIN_STOREAPS256_MASK,
-  IX86_BUILTIN_STOREAPS128_MASK,
-  IX86_BUILTIN_LOADUPD256_MASK,
-  IX86_BUILTIN_LOADUPD128_MASK,
-  IX86_BUILTIN_LOADUPS256_MASK,
-  IX86_BUILTIN_LOADUPS128_MASK,
-  IX86_BUILTIN_STOREUPD256_MASK,
-  IX86_BUILTIN_STOREUPD128_MASK,
-  IX86_BUILTIN_STOREUPS256_MASK,
-  IX86_BUILTIN_STOREUPS128_MASK,
-  IX86_BUILTIN_LOADDQUDI256_MASK,
-  IX86_BUILTIN_LOADDQUDI128_MASK,
-  IX86_BUILTIN_LOADDQUSI256_MASK,
-  IX86_BUILTIN_LOADDQUSI128_MASK,
-  IX86_BUILTIN_LOADDQUHI256_MASK,
-  IX86_BUILTIN_LOADDQUHI128_MASK,
-  IX86_BUILTIN_LOADDQUQI256_MASK,
-  IX86_BUILTIN_LOADDQUQI128_MASK,
-  IX86_BUILTIN_STOREDQUDI256_MASK,
-  IX86_BUILTIN_STOREDQUDI128_MASK,
-  IX86_BUILTIN_STOREDQUSI256_MASK,
-  IX86_BUILTIN_STOREDQUSI128_MASK,
-  IX86_BUILTIN_STOREDQUHI256_MASK,
-  IX86_BUILTIN_STOREDQUHI128_MASK,
-  IX86_BUILTIN_STOREDQUQI256_MASK,
-  IX86_BUILTIN_STOREDQUQI128_MASK,
-  IX86_BUILTIN_COMPRESSPDSTORE256,
-  IX86_BUILTIN_COMPRESSPDSTORE128,
-  IX86_BUILTIN_COMPRESSPSSTORE256,
-  IX86_BUILTIN_COMPRESSPSSTORE128,
-  IX86_BUILTIN_PCOMPRESSQSTORE256,
-  IX86_BUILTIN_PCOMPRESSQSTORE128,
-  IX86_BUILTIN_PCOMPRESSDSTORE256,
-  IX86_BUILTIN_PCOMPRESSDSTORE128,
-  IX86_BUILTIN_EXPANDPDLOAD256,
-  IX86_BUILTIN_EXPANDPDLOAD128,
-  IX86_BUILTIN_EXPANDPSLOAD256,
-  IX86_BUILTIN_EXPANDPSLOAD128,
-  IX86_BUILTIN_PEXPANDQLOAD256,
-  IX86_BUILTIN_PEXPANDQLOAD128,
-  IX86_BUILTIN_PEXPANDDLOAD256,
-  IX86_BUILTIN_PEXPANDDLOAD128,
-  IX86_BUILTIN_EXPANDPDLOAD256Z,
-  IX86_BUILTIN_EXPANDPDLOAD128Z,
-  IX86_BUILTIN_EXPANDPSLOAD256Z,
-  IX86_BUILTIN_EXPANDPSLOAD128Z,
-  IX86_BUILTIN_PEXPANDQLOAD256Z,
-  IX86_BUILTIN_PEXPANDQLOAD128Z,
-  IX86_BUILTIN_PEXPANDDLOAD256Z,
-  IX86_BUILTIN_PEXPANDDLOAD128Z,
+  IX86_BUILTIN_RSQRT14PD512,
+  IX86_BUILTIN_RSQRT14PS512,
+  IX86_BUILTIN_RSQRT14SD,
+  IX86_BUILTIN_RSQRT14SS,
+  IX86_BUILTIN_SHUFPD512,
+  IX86_BUILTIN_SHUFPS512,
+  IX86_BUILTIN_SHUF_F32x4,
+  IX86_BUILTIN_SHUF_F64x2,
+  IX86_BUILTIN_SHUF_I32x4,
+  IX86_BUILTIN_SHUF_I64x2,
+  IX86_BUILTIN_UCMPD512,
+  IX86_BUILTIN_UCMPQ512,
+  IX86_BUILTIN_UNPCKHPD512,
+  IX86_BUILTIN_UNPCKHPS512,
+  IX86_BUILTIN_UNPCKLPD512,
+  IX86_BUILTIN_UNPCKLPS512,
+  IX86_BUILTIN_VPCLZCNTD512,
+  IX86_BUILTIN_VPCLZCNTQ512,
+  IX86_BUILTIN_VPCONFLICTD512,
+  IX86_BUILTIN_VPCONFLICTQ512,
+  IX86_BUILTIN_VPERMDF512,
+  IX86_BUILTIN_VPERMDI512,
+  IX86_BUILTIN_VPERMI2VARD512,
+  IX86_BUILTIN_VPERMI2VARPD512,
+  IX86_BUILTIN_VPERMI2VARPS512,
+  IX86_BUILTIN_VPERMI2VARQ512,
+  IX86_BUILTIN_VPERMILPD512,
+  IX86_BUILTIN_VPERMILPS512,
+  IX86_BUILTIN_VPERMILVARPD512,
+  IX86_BUILTIN_VPERMILVARPS512,
+  IX86_BUILTIN_VPERMT2VARD512,
+  IX86_BUILTIN_VPERMT2VARD512_MASKZ,
+  IX86_BUILTIN_VPERMT2VARPD512,
+  IX86_BUILTIN_VPERMT2VARPD512_MASKZ,
+  IX86_BUILTIN_VPERMT2VARPS512,
+  IX86_BUILTIN_VPERMT2VARPS512_MASKZ,
+  IX86_BUILTIN_VPERMT2VARQ512,
+  IX86_BUILTIN_VPERMT2VARQ512_MASKZ,
+  IX86_BUILTIN_VPERMVARDF512,
+  IX86_BUILTIN_VPERMVARDI512,
+  IX86_BUILTIN_VPERMVARSF512,
+  IX86_BUILTIN_VPERMVARSI512,
+  IX86_BUILTIN_VTERNLOGD512_MASK,
+  IX86_BUILTIN_VTERNLOGD512_MASKZ,
+  IX86_BUILTIN_VTERNLOGQ512_MASK,
+  IX86_BUILTIN_VTERNLOGQ512_MASKZ,
+  IX86_BUILTIN_CPYSGNPS512,
+  IX86_BUILTIN_CPYSGNPD512,
+  IX86_BUILTIN_SQRTPD512,
+  IX86_BUILTIN_SQRTPS_NR512,
+  IX86_BUILTIN_EXP2PS,
+  IX86_BUILTIN_FLOORPS512,
+  IX86_BUILTIN_CEILPS512,
+  IX86_BUILTIN_TRUNCPS512,
+  IX86_BUILTIN_FLOORPD512,
+  IX86_BUILTIN_CEILPD512,
+  IX86_BUILTIN_TRUNCPD512,
+  IX86_BUILTIN_CVTPS2DQ512,
+  IX86_BUILTIN_VEC_PACK_SFIX512,
+  IX86_BUILTIN_ROUNDPS_AZ_SFIX512,
+  IX86_BUILTIN_FLOORPS_SFIX512,
+  IX86_BUILTIN_CEILPS_SFIX512,
+  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512,
+  IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512,
+  IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512,
+  IX86_BUILTIN_KAND16,
+  IX86_BUILTIN_KANDN16,
+  IX86_BUILTIN_KNOT16,
+  IX86_BUILTIN_KOR16,
+  IX86_BUILTIN_KORTESTC16,
+  IX86_BUILTIN_KORTESTZ16,
+  IX86_BUILTIN_KUNPCKBW,
+  IX86_BUILTIN_KXNOR16,
+  IX86_BUILTIN_KXOR16,
+  IX86_BUILTIN_KMOV16,
+  IX86_BUILTIN_SHA1MSG1,
+  IX86_BUILTIN_SHA1MSG2,
+  IX86_BUILTIN_SHA1NEXTE,
+  IX86_BUILTIN_SHA1RNDS4,
+  IX86_BUILTIN_SHA256MSG1,
+  IX86_BUILTIN_SHA256MSG2,
+  IX86_BUILTIN_SHA256RNDS2,
   IX86_BUILTIN_PALIGNR256_MASK,
   IX86_BUILTIN_PALIGNR128_MASK,
   IX86_BUILTIN_MOVDQA64_256_MASK,
@@ -32231,7 +32171,7 @@ enum ix86_builtins
   IX86_BUILTIN_PSLLW128_MASK,
   IX86_BUILTIN_PSLLD128_MASK,
   IX86_BUILTIN_PSLLQ128_MASK,
-  IX86_BUILTIN_PSLLWI256_MASK ,
+  IX86_BUILTIN_PSLLWI256_MASK,
   IX86_BUILTIN_PSLLW256_MASK,
   IX86_BUILTIN_PSLLDI256_MASK,
   IX86_BUILTIN_PSLLD256_MASK,
@@ -32663,45 +32603,6 @@ enum ix86_builtins
   IX86_BUILTIN_UCMPW128,
   IX86_BUILTIN_CMPPD128_MASK,
   IX86_BUILTIN_CMPPS128_MASK,
-
-  IX86_BUILTIN_GATHER3SIV8SF,
-  IX86_BUILTIN_GATHER3SIV4SF,
-  IX86_BUILTIN_GATHER3SIV4DF,
-  IX86_BUILTIN_GATHER3SIV2DF,
-  IX86_BUILTIN_GATHER3DIV8SF,
-  IX86_BUILTIN_GATHER3DIV4SF,
-  IX86_BUILTIN_GATHER3DIV4DF,
-  IX86_BUILTIN_GATHER3DIV2DF,
-  IX86_BUILTIN_GATHER3SIV8SI,
-  IX86_BUILTIN_GATHER3SIV4SI,
-  IX86_BUILTIN_GATHER3SIV4DI,
-  IX86_BUILTIN_GATHER3SIV2DI,
-  IX86_BUILTIN_GATHER3DIV8SI,
-  IX86_BUILTIN_GATHER3DIV4SI,
-  IX86_BUILTIN_GATHER3DIV4DI,
-  IX86_BUILTIN_GATHER3DIV2DI,
-  IX86_BUILTIN_SCATTERSIV8SF,
-  IX86_BUILTIN_SCATTERSIV4SF,
-  IX86_BUILTIN_SCATTERSIV4DF,
-  IX86_BUILTIN_SCATTERSIV2DF,
-  IX86_BUILTIN_SCATTERDIV8SF,
-  IX86_BUILTIN_SCATTERDIV4SF,
-  IX86_BUILTIN_SCATTERDIV4DF,
-  IX86_BUILTIN_SCATTERDIV2DF,
-  IX86_BUILTIN_SCATTERSIV8SI,
-  IX86_BUILTIN_SCATTERSIV4SI,
-  IX86_BUILTIN_SCATTERSIV4DI,
-  IX86_BUILTIN_SCATTERSIV2DI,
-  IX86_BUILTIN_SCATTERDIV8SI,
-  IX86_BUILTIN_SCATTERDIV4SI,
-  IX86_BUILTIN_SCATTERDIV4DI,
-  IX86_BUILTIN_SCATTERDIV2DI,
-
-  /* AVX512DQ.  */
-  IX86_BUILTIN_RANGESD128,
-  IX86_BUILTIN_RANGESS128,
-  IX86_BUILTIN_KUNPCKWD,
-  IX86_BUILTIN_KUNPCKDQ,
   IX86_BUILTIN_BROADCASTF32x2_512,
   IX86_BUILTIN_BROADCASTI32x2_512,
   IX86_BUILTIN_BROADCASTF64X2_512,
@@ -32733,30 +32634,12 @@ enum ix86_builtins
   IX86_BUILTIN_CVTQ2MASK512,
   IX86_BUILTIN_CVTMASK2D512,
   IX86_BUILTIN_CVTMASK2Q512,
-  IX86_BUILTIN_CVTPD2QQ512,
-  IX86_BUILTIN_CVTPS2QQ512,
-  IX86_BUILTIN_CVTPD2UQQ512,
-  IX86_BUILTIN_CVTPS2UQQ512,
-  IX86_BUILTIN_CVTQQ2PS512,
-  IX86_BUILTIN_CVTUQQ2PS512,
-  IX86_BUILTIN_CVTQQ2PD512,
-  IX86_BUILTIN_CVTUQQ2PD512,
-  IX86_BUILTIN_CVTTPS2QQ512,
-  IX86_BUILTIN_CVTTPS2UQQ512,
-  IX86_BUILTIN_CVTTPD2QQ512,
-  IX86_BUILTIN_CVTTPD2UQQ512,
-  IX86_BUILTIN_RANGEPS512,
-  IX86_BUILTIN_RANGEPD512,
-
-  /* AVX512BW.  */
+  IX86_BUILTIN_KUNPCKWD,
+  IX86_BUILTIN_KUNPCKDQ,
   IX86_BUILTIN_PACKUSDW512,
-  IX86_BUILTIN_PACKSSDW512,
-  IX86_BUILTIN_LOADDQUHI512_MASK,
-  IX86_BUILTIN_LOADDQUQI512_MASK,
   IX86_BUILTIN_PSLLDQ512,
   IX86_BUILTIN_PSRLDQ512,
-  IX86_BUILTIN_STOREDQUHI512_MASK,
-  IX86_BUILTIN_STOREDQUQI512_MASK,
+  IX86_BUILTIN_PACKSSDW512,
   IX86_BUILTIN_PALIGNR512,
   IX86_BUILTIN_PALIGNR512_MASK,
   IX86_BUILTIN_MOVDQUHI512_MASK,
@@ -32789,133 +32672,71 @@ enum ix86_builtins
   IX86_BUILTIN_PADDUSW512,
   IX86_BUILTIN_PMAXUW512,
   IX86_BUILTIN_PMAXSW512,
-  IX86_BUILTIN_PMINUW512,
-  IX86_BUILTIN_PMINSW512,
-  IX86_BUILTIN_PMAXUB512,
-  IX86_BUILTIN_PMAXSB512,
-  IX86_BUILTIN_PMINUB512,
-  IX86_BUILTIN_PMINSB512,
-  IX86_BUILTIN_PMOVWB512,
-  IX86_BUILTIN_PMOVSWB512,
-  IX86_BUILTIN_PMOVUSWB512,
-  IX86_BUILTIN_PMULHRSW512_MASK,
-  IX86_BUILTIN_PMULHUW512_MASK,
-  IX86_BUILTIN_PMULHW512_MASK,
-  IX86_BUILTIN_PMULLW512_MASK,
-  IX86_BUILTIN_PSLLWI512_MASK,
-  IX86_BUILTIN_PSLLW512_MASK,
-  IX86_BUILTIN_PACKSSWB512,
-  IX86_BUILTIN_PACKUSWB512,
-  IX86_BUILTIN_PSRAVV32HI,
-  IX86_BUILTIN_PMADDUBSW512_MASK,
-  IX86_BUILTIN_PMADDWD512_MASK,
-  IX86_BUILTIN_PSRLVV32HI,
-  IX86_BUILTIN_PUNPCKHBW512,
-  IX86_BUILTIN_PUNPCKHWD512,
-  IX86_BUILTIN_PUNPCKLBW512,
-  IX86_BUILTIN_PUNPCKLWD512,
-  IX86_BUILTIN_PSHUFB512,
-  IX86_BUILTIN_PSHUFHW512,
-  IX86_BUILTIN_PSHUFLW512,
-  IX86_BUILTIN_PSRAWI512,
-  IX86_BUILTIN_PSRAW512,
-  IX86_BUILTIN_PSRLWI512,
-  IX86_BUILTIN_PSRLW512,
-  IX86_BUILTIN_CVTB2MASK512,
-  IX86_BUILTIN_CVTW2MASK512,
-  IX86_BUILTIN_CVTMASK2B512,
-  IX86_BUILTIN_CVTMASK2W512,
-  IX86_BUILTIN_PCMPEQB512_MASK,
-  IX86_BUILTIN_PCMPEQW512_MASK,
-  IX86_BUILTIN_PCMPGTB512_MASK,
-  IX86_BUILTIN_PCMPGTW512_MASK,
-  IX86_BUILTIN_PTESTMB512,
-  IX86_BUILTIN_PTESTMW512,
-  IX86_BUILTIN_PTESTNMB512,
-  IX86_BUILTIN_PTESTNMW512,
-  IX86_BUILTIN_PSLLVV32HI,
-  IX86_BUILTIN_PABSB512,
-  IX86_BUILTIN_PABSW512,
-  IX86_BUILTIN_BLENDMW512,
-  IX86_BUILTIN_BLENDMB512,
-  IX86_BUILTIN_CMPB512,
-  IX86_BUILTIN_CMPW512,
-  IX86_BUILTIN_UCMPB512,
-  IX86_BUILTIN_UCMPW512,
-
-  /* Alternate 4 and 8 element gather/scatter for the vectorizer
-     where all operands are 32-byte or 64-byte wide respectively.  */
-  IX86_BUILTIN_GATHERALTSIV4DF,
-  IX86_BUILTIN_GATHERALTDIV8SF,
-  IX86_BUILTIN_GATHERALTSIV4DI,
-  IX86_BUILTIN_GATHERALTDIV8SI,
-  IX86_BUILTIN_GATHER3ALTDIV16SF,
-  IX86_BUILTIN_GATHER3ALTDIV16SI,
-  IX86_BUILTIN_GATHER3ALTSIV4DF,
-  IX86_BUILTIN_GATHER3ALTDIV8SF,
-  IX86_BUILTIN_GATHER3ALTSIV4DI,
-  IX86_BUILTIN_GATHER3ALTDIV8SI,
-  IX86_BUILTIN_GATHER3ALTSIV8DF,
-  IX86_BUILTIN_GATHER3ALTSIV8DI,
-  IX86_BUILTIN_GATHER3DIV16SF,
-  IX86_BUILTIN_GATHER3DIV16SI,
-  IX86_BUILTIN_GATHER3DIV8DF,
-  IX86_BUILTIN_GATHER3DIV8DI,
-  IX86_BUILTIN_GATHER3SIV16SF,
-  IX86_BUILTIN_GATHER3SIV16SI,
-  IX86_BUILTIN_GATHER3SIV8DF,
-  IX86_BUILTIN_GATHER3SIV8DI,
-  IX86_BUILTIN_SCATTERALTSIV8DF,
-  IX86_BUILTIN_SCATTERALTDIV16SF,
-  IX86_BUILTIN_SCATTERALTSIV8DI,
-  IX86_BUILTIN_SCATTERALTDIV16SI,
-  IX86_BUILTIN_SCATTERDIV16SF,
-  IX86_BUILTIN_SCATTERDIV16SI,
-  IX86_BUILTIN_SCATTERDIV8DF,
-  IX86_BUILTIN_SCATTERDIV8DI,
-  IX86_BUILTIN_SCATTERSIV16SF,
-  IX86_BUILTIN_SCATTERSIV16SI,
-  IX86_BUILTIN_SCATTERSIV8DF,
-  IX86_BUILTIN_SCATTERSIV8DI,
-
-  /* AVX512PF */
-  IX86_BUILTIN_GATHERPFQPD,
-  IX86_BUILTIN_GATHERPFDPS,
-  IX86_BUILTIN_GATHERPFDPD,
-  IX86_BUILTIN_GATHERPFQPS,
-  IX86_BUILTIN_SCATTERPFDPD,
-  IX86_BUILTIN_SCATTERPFDPS,
-  IX86_BUILTIN_SCATTERPFQPD,
-  IX86_BUILTIN_SCATTERPFQPS,
-
-  /* AVX-512ER */
-  IX86_BUILTIN_EXP2PD_MASK,
-  IX86_BUILTIN_EXP2PS_MASK,
-  IX86_BUILTIN_EXP2PS,
-  IX86_BUILTIN_RCP28PD,
-  IX86_BUILTIN_RCP28PS,
-  IX86_BUILTIN_RCP28SD,
-  IX86_BUILTIN_RCP28SS,
-  IX86_BUILTIN_RSQRT28PD,
-  IX86_BUILTIN_RSQRT28PS,
-  IX86_BUILTIN_RSQRT28SD,
-  IX86_BUILTIN_RSQRT28SS,
-
-  /* AVX-512IFMA */
+  IX86_BUILTIN_PMINUW512,
+  IX86_BUILTIN_PMINSW512,
+  IX86_BUILTIN_PMAXUB512,
+  IX86_BUILTIN_PMAXSB512,
+  IX86_BUILTIN_PMINUB512,
+  IX86_BUILTIN_PMINSB512,
+  IX86_BUILTIN_PMOVWB512,
+  IX86_BUILTIN_PMOVSWB512,
+  IX86_BUILTIN_PMOVUSWB512,
+  IX86_BUILTIN_PMULHRSW512_MASK,
+  IX86_BUILTIN_PMULHUW512_MASK,
+  IX86_BUILTIN_PMULHW512_MASK,
+  IX86_BUILTIN_PMULLW512_MASK,
+  IX86_BUILTIN_PSLLWI512_MASK,
+  IX86_BUILTIN_PSLLW512_MASK,
+  IX86_BUILTIN_PACKSSWB512,
+  IX86_BUILTIN_PACKUSWB512,
+  IX86_BUILTIN_PSRAVV32HI,
+  IX86_BUILTIN_PMADDUBSW512_MASK,
+  IX86_BUILTIN_PMADDWD512_MASK,
+  IX86_BUILTIN_PSRLVV32HI,
+  IX86_BUILTIN_PUNPCKHBW512,
+  IX86_BUILTIN_PUNPCKHWD512,
+  IX86_BUILTIN_PUNPCKLBW512,
+  IX86_BUILTIN_PUNPCKLWD512,
+  IX86_BUILTIN_PSHUFB512,
+  IX86_BUILTIN_PSHUFHW512,
+  IX86_BUILTIN_PSHUFLW512,
+  IX86_BUILTIN_PSRAWI512,
+  IX86_BUILTIN_PSRAW512,
+  IX86_BUILTIN_PSRLWI512,
+  IX86_BUILTIN_PSRLW512,
+  IX86_BUILTIN_CVTB2MASK512,
+  IX86_BUILTIN_CVTW2MASK512,
+  IX86_BUILTIN_CVTMASK2B512,
+  IX86_BUILTIN_CVTMASK2W512,
+  IX86_BUILTIN_PCMPEQB512_MASK,
+  IX86_BUILTIN_PCMPEQW512_MASK,
+  IX86_BUILTIN_PCMPGTB512_MASK,
+  IX86_BUILTIN_PCMPGTW512_MASK,
+  IX86_BUILTIN_PTESTMB512,
+  IX86_BUILTIN_PTESTMW512,
+  IX86_BUILTIN_PTESTNMB512,
+  IX86_BUILTIN_PTESTNMW512,
+  IX86_BUILTIN_PSLLVV32HI,
+  IX86_BUILTIN_PABSB512,
+  IX86_BUILTIN_PABSW512,
+  IX86_BUILTIN_BLENDMW512,
+  IX86_BUILTIN_BLENDMB512,
+  IX86_BUILTIN_CMPB512,
+  IX86_BUILTIN_CMPW512,
+  IX86_BUILTIN_UCMPB512,
+  IX86_BUILTIN_UCMPW512,
   IX86_BUILTIN_VPMADD52LUQ512,
-  IX86_BUILTIN_VPMADD52HUQ512,
-  IX86_BUILTIN_VPMADD52LUQ256,
-  IX86_BUILTIN_VPMADD52HUQ256,
-  IX86_BUILTIN_VPMADD52LUQ128,
-  IX86_BUILTIN_VPMADD52HUQ128,
   IX86_BUILTIN_VPMADD52LUQ512_MASKZ,
+  IX86_BUILTIN_VPMADD52HUQ512,
   IX86_BUILTIN_VPMADD52HUQ512_MASKZ,
+  IX86_BUILTIN_VPMADD52LUQ256,
   IX86_BUILTIN_VPMADD52LUQ256_MASKZ,
+  IX86_BUILTIN_VPMADD52HUQ256,
   IX86_BUILTIN_VPMADD52HUQ256_MASKZ,
+  IX86_BUILTIN_VPMADD52LUQ128,
   IX86_BUILTIN_VPMADD52LUQ128_MASKZ,
+  IX86_BUILTIN_VPMADD52HUQ128,
   IX86_BUILTIN_VPMADD52HUQ128_MASKZ,
-
-  /* AVX-512VBMI */
   IX86_BUILTIN_VPMULTISHIFTQB512,
   IX86_BUILTIN_VPMULTISHIFTQB256,
   IX86_BUILTIN_VPMULTISHIFTQB128,
@@ -32931,59 +32752,181 @@ enum ix86_builtins
   IX86_BUILTIN_VPERMT2VARQI128_MASKZ,
   IX86_BUILTIN_VPERMI2VARQI256,
   IX86_BUILTIN_VPERMI2VARQI128,
+  IX86_BUILTIN__BDESC_ARGS_LAST = IX86_BUILTIN_VPERMI2VARQI128,
 
-  /* SHA builtins.  */
-  IX86_BUILTIN_SHA1MSG1,
-  IX86_BUILTIN_SHA1MSG2,
-  IX86_BUILTIN_SHA1NEXTE,
-  IX86_BUILTIN_SHA1RNDS4,
-  IX86_BUILTIN_SHA256MSG1,
-  IX86_BUILTIN_SHA256MSG2,
-  IX86_BUILTIN_SHA256RNDS2,
-
-  /* CLWB instructions.  */
-  IX86_BUILTIN_CLWB,
-
-  /* PCOMMIT instructions.  */
-  IX86_BUILTIN_PCOMMIT,
-
-  /* CLFLUSHOPT instructions.  */
-  IX86_BUILTIN_CLFLUSHOPT,
-
-  /* TFmode support builtins.  */
-  IX86_BUILTIN_INFQ,
-  IX86_BUILTIN_HUGE_VALQ,
-  IX86_BUILTIN_NANQ,
-  IX86_BUILTIN_NANSQ,
-  IX86_BUILTIN_FABSQ,
-  IX86_BUILTIN_COPYSIGNQ,
+  /* Builtins with rounding support.  */
+  IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST,
+  IX86_BUILTIN_ADDPD512 = IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST,
+  IX86_BUILTIN_ADDPS512,
+  IX86_BUILTIN_ADDSD_ROUND,
+  IX86_BUILTIN_ADDSS_ROUND,
+  IX86_BUILTIN_CMPPD512,
+  IX86_BUILTIN_CMPPS512,
+  IX86_BUILTIN_CMPSD_MASK,
+  IX86_BUILTIN_CMPSS_MASK,
+  IX86_BUILTIN_COMIDF,
+  IX86_BUILTIN_COMISF,
+  IX86_BUILTIN_CVTDQ2PS512,
+  IX86_BUILTIN_CVTPD2DQ512,
+  IX86_BUILTIN_CVTPD2PS512,
+  IX86_BUILTIN_CVTPD2UDQ512,
+  IX86_BUILTIN_CVTPH2PS512,
+  IX86_BUILTIN_CVTPS2DQ512_MASK,
+  IX86_BUILTIN_CVTPS2PD512,
+  IX86_BUILTIN_CVTPS2UDQ512,
+  IX86_BUILTIN_CVTSD2SS_ROUND,
+  IX86_BUILTIN_CVTSI2SD64,
+  IX86_BUILTIN_CVTSI2SS32,
+  IX86_BUILTIN_CVTSI2SS64,
+  IX86_BUILTIN_CVTSS2SD_ROUND,
+  IX86_BUILTIN_CVTTPD2DQ512,
+  IX86_BUILTIN_CVTTPD2UDQ512,
+  IX86_BUILTIN_CVTTPS2DQ512,
+  IX86_BUILTIN_CVTTPS2UDQ512,
+  IX86_BUILTIN_CVTUDQ2PS512,
+  IX86_BUILTIN_CVTUSI2SD64,
+  IX86_BUILTIN_CVTUSI2SS32,
+  IX86_BUILTIN_CVTUSI2SS64,
+  IX86_BUILTIN_DIVPD512,
+  IX86_BUILTIN_DIVPS512,
+  IX86_BUILTIN_DIVSD_ROUND,
+  IX86_BUILTIN_DIVSS_ROUND,
+  IX86_BUILTIN_FIXUPIMMPD512_MASK,
+  IX86_BUILTIN_FIXUPIMMPD512_MASKZ,
+  IX86_BUILTIN_FIXUPIMMPS512_MASK,
+  IX86_BUILTIN_FIXUPIMMPS512_MASKZ,
+  IX86_BUILTIN_FIXUPIMMSD128_MASK,
+  IX86_BUILTIN_FIXUPIMMSD128_MASKZ,
+  IX86_BUILTIN_FIXUPIMMSS128_MASK,
+  IX86_BUILTIN_FIXUPIMMSS128_MASKZ,
+  IX86_BUILTIN_GETEXPPD512,
+  IX86_BUILTIN_GETEXPPS512,
+  IX86_BUILTIN_GETEXPSD128,
+  IX86_BUILTIN_GETEXPSS128,
+  IX86_BUILTIN_GETMANTPD512,
+  IX86_BUILTIN_GETMANTPS512,
+  IX86_BUILTIN_GETMANTSD128,
+  IX86_BUILTIN_GETMANTSS128,
+  IX86_BUILTIN_MAXPD512,
+  IX86_BUILTIN_MAXPS512,
+  IX86_BUILTIN_MAXSD_ROUND,
+  IX86_BUILTIN_MAXSS_ROUND,
+  IX86_BUILTIN_MINPD512,
+  IX86_BUILTIN_MINPS512,
+  IX86_BUILTIN_MINSD_ROUND,
+  IX86_BUILTIN_MINSS_ROUND,
+  IX86_BUILTIN_MULPD512,
+  IX86_BUILTIN_MULPS512,
+  IX86_BUILTIN_MULSD_ROUND,
+  IX86_BUILTIN_MULSS_ROUND,
+  IX86_BUILTIN_RNDSCALEPD,
+  IX86_BUILTIN_RNDSCALEPS,
+  IX86_BUILTIN_RNDSCALESD,
+  IX86_BUILTIN_RNDSCALESS,
+  IX86_BUILTIN_SCALEFPD512,
+  IX86_BUILTIN_SCALEFPS512,
+  IX86_BUILTIN_SCALEFSD,
+  IX86_BUILTIN_SCALEFSS,
+  IX86_BUILTIN_SQRTPD512_MASK,
+  IX86_BUILTIN_SQRTPS512_MASK,
+  IX86_BUILTIN_SQRTSD_ROUND,
+  IX86_BUILTIN_SQRTSS_ROUND,
+  IX86_BUILTIN_SUBPD512,
+  IX86_BUILTIN_SUBPS512,
+  IX86_BUILTIN_SUBSD_ROUND,
+  IX86_BUILTIN_SUBSS_ROUND,
+  IX86_BUILTIN_VCVTSD2SI32,
+  IX86_BUILTIN_VCVTSD2SI64,
+  IX86_BUILTIN_VCVTSD2USI32,
+  IX86_BUILTIN_VCVTSD2USI64,
+  IX86_BUILTIN_VCVTSS2SI32,
+  IX86_BUILTIN_VCVTSS2SI64,
+  IX86_BUILTIN_VCVTSS2USI32,
+  IX86_BUILTIN_VCVTSS2USI64,
+  IX86_BUILTIN_VCVTTSD2SI32,
+  IX86_BUILTIN_VCVTTSD2SI64,
+  IX86_BUILTIN_VCVTTSD2USI32,
+  IX86_BUILTIN_VCVTTSD2USI64,
+  IX86_BUILTIN_VCVTTSS2SI32,
+  IX86_BUILTIN_VCVTTSS2SI64,
+  IX86_BUILTIN_VCVTTSS2USI32,
+  IX86_BUILTIN_VCVTTSS2USI64,
+  IX86_BUILTIN_VFMADDPD512_MASK,
+  IX86_BUILTIN_VFMADDPD512_MASK3,
+  IX86_BUILTIN_VFMADDPD512_MASKZ,
+  IX86_BUILTIN_VFMADDPS512_MASK,
+  IX86_BUILTIN_VFMADDPS512_MASK3,
+  IX86_BUILTIN_VFMADDPS512_MASKZ,
+  IX86_BUILTIN_VFMADDSD3_ROUND,
+  IX86_BUILTIN_VFMADDSS3_ROUND,
+  IX86_BUILTIN_VFMADDSUBPD512_MASK,
+  IX86_BUILTIN_VFMADDSUBPD512_MASK3,
+  IX86_BUILTIN_VFMADDSUBPD512_MASKZ,
+  IX86_BUILTIN_VFMADDSUBPS512_MASK,
+  IX86_BUILTIN_VFMADDSUBPS512_MASK3,
+  IX86_BUILTIN_VFMADDSUBPS512_MASKZ,
+  IX86_BUILTIN_VFMSUBADDPD512_MASK3,
+  IX86_BUILTIN_VFMSUBADDPS512_MASK3,
+  IX86_BUILTIN_VFMSUBPD512_MASK3,
+  IX86_BUILTIN_VFMSUBPS512_MASK3,
+  IX86_BUILTIN_VFNMADDPD512_MASK,
+  IX86_BUILTIN_VFNMADDPS512_MASK,
+  IX86_BUILTIN_VFNMSUBPD512_MASK,
+  IX86_BUILTIN_VFNMSUBPD512_MASK3,
+  IX86_BUILTIN_VFNMSUBPS512_MASK,
+  IX86_BUILTIN_VFNMSUBPS512_MASK3,
+  IX86_BUILTIN_EXP2PD_MASK,
+  IX86_BUILTIN_EXP2PS_MASK,
+  IX86_BUILTIN_RCP28PD,
+  IX86_BUILTIN_RCP28PS,
+  IX86_BUILTIN_RCP28SD,
+  IX86_BUILTIN_RCP28SS,
+  IX86_BUILTIN_RSQRT28PD,
+  IX86_BUILTIN_RSQRT28PS,
+  IX86_BUILTIN_RSQRT28SD,
+  IX86_BUILTIN_RSQRT28SS,
+  IX86_BUILTIN_RANGESD128,
+  IX86_BUILTIN_RANGESS128,
+  IX86_BUILTIN_CVTPD2QQ512,
+  IX86_BUILTIN_CVTPS2QQ512,
+  IX86_BUILTIN_CVTPD2UQQ512,
+  IX86_BUILTIN_CVTPS2UQQ512,
+  IX86_BUILTIN_CVTQQ2PS512,
+  IX86_BUILTIN_CVTUQQ2PS512,
+  IX86_BUILTIN_CVTQQ2PD512,
+  IX86_BUILTIN_CVTUQQ2PD512,
+  IX86_BUILTIN_CVTTPS2QQ512,
+  IX86_BUILTIN_CVTTPS2UQQ512,
+  IX86_BUILTIN_CVTTPD2QQ512,
+  IX86_BUILTIN_CVTTPD2UQQ512,
+  IX86_BUILTIN_RANGEPS512,
+  IX86_BUILTIN_RANGEPD512,
+  IX86_BUILTIN__BDESC_ROUND_ARGS_LAST = IX86_BUILTIN_RANGEPD512,
 
-  /* Vectorizer support builtins.  */
-  IX86_BUILTIN_CPYSGNPS,
-  IX86_BUILTIN_CPYSGNPD,
-  IX86_BUILTIN_CPYSGNPS256,
-  IX86_BUILTIN_CPYSGNPS512,
-  IX86_BUILTIN_CPYSGNPD256,
-  IX86_BUILTIN_CPYSGNPD512,
-  IX86_BUILTIN_FLOORPS512,
-  IX86_BUILTIN_FLOORPD512,
-  IX86_BUILTIN_CEILPS512,
-  IX86_BUILTIN_CEILPD512,
-  IX86_BUILTIN_TRUNCPS512,
-  IX86_BUILTIN_TRUNCPD512,
-  IX86_BUILTIN_CVTPS2DQ512,
-  IX86_BUILTIN_VEC_PACK_SFIX512,
-  IX86_BUILTIN_FLOORPS_SFIX512,
-  IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512,
-  IX86_BUILTIN_CEILPS_SFIX512,
-  IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512,
-  IX86_BUILTIN_ROUNDPS_AZ_SFIX512,
-  IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512,
+  /* Builtins for MPX.  */
+  IX86_BUILTIN__BDESC_MPX_FIRST,
+  IX86_BUILTIN_BNDSTX = IX86_BUILTIN__BDESC_MPX_FIRST,
+  IX86_BUILTIN_BNDCL,
+  IX86_BUILTIN_BNDCU,
+  IX86_BUILTIN__BDESC_MPX_LAST = IX86_BUILTIN_BNDCU,
 
+  /* Const builtins for MPX.  */
+  IX86_BUILTIN__BDESC_MPX_CONST_FIRST,
+  IX86_BUILTIN_BNDMK = IX86_BUILTIN__BDESC_MPX_CONST_FIRST,
+  IX86_BUILTIN_BNDLDX,
+  IX86_BUILTIN_BNDNARROW,
+  IX86_BUILTIN_BNDINT,
+  IX86_BUILTIN_SIZEOF,
+  IX86_BUILTIN_BNDLOWER,
+  IX86_BUILTIN_BNDUPPER,
+  IX86_BUILTIN_BNDRET,
+  IX86_BUILTIN__BDESC_MPX_CONST_LAST = IX86_BUILTIN_BNDRET,
 
-  /* FMA4 instructions.  */
-  IX86_BUILTIN_VFMADDSS,
+  IX86_BUILTIN__BDESC_MULTI_ARG_FIRST,
+  IX86_BUILTIN_VFMADDSS = IX86_BUILTIN__BDESC_MULTI_ARG_FIRST,
   IX86_BUILTIN_VFMADDSD,
+  IX86_BUILTIN_VFMADDSS3,
+  IX86_BUILTIN_VFMADDSD3,
   IX86_BUILTIN_VFMADDPS,
   IX86_BUILTIN_VFMADDPD,
   IX86_BUILTIN_VFMADDPS256,
@@ -32992,29 +32935,21 @@ enum ix86_builtins
   IX86_BUILTIN_VFMADDSUBPD,
   IX86_BUILTIN_VFMADDSUBPS256,
   IX86_BUILTIN_VFMADDSUBPD256,
-
-  /* FMA3 instructions.  */
-  IX86_BUILTIN_VFMADDSS3,
-  IX86_BUILTIN_VFMADDSD3,
-
-  /* XOP instructions.  */
   IX86_BUILTIN_VPCMOV,
   IX86_BUILTIN_VPCMOV_V2DI,
   IX86_BUILTIN_VPCMOV_V4SI,
   IX86_BUILTIN_VPCMOV_V8HI,
   IX86_BUILTIN_VPCMOV_V16QI,
-  IX86_BUILTIN_VPCMOV_V4SF,
   IX86_BUILTIN_VPCMOV_V2DF,
+  IX86_BUILTIN_VPCMOV_V4SF,
   IX86_BUILTIN_VPCMOV256,
   IX86_BUILTIN_VPCMOV_V4DI256,
   IX86_BUILTIN_VPCMOV_V8SI256,
   IX86_BUILTIN_VPCMOV_V16HI256,
   IX86_BUILTIN_VPCMOV_V32QI256,
-  IX86_BUILTIN_VPCMOV_V8SF256,
   IX86_BUILTIN_VPCMOV_V4DF256,
-
+  IX86_BUILTIN_VPCMOV_V8SF256,
   IX86_BUILTIN_VPPERM,
-
   IX86_BUILTIN_VPMACSSWW,
   IX86_BUILTIN_VPMACSWW,
   IX86_BUILTIN_VPMACSSWD,
@@ -33027,7 +32962,28 @@ enum ix86_builtins
   IX86_BUILTIN_VPMACSDQH,
   IX86_BUILTIN_VPMADCSSWD,
   IX86_BUILTIN_VPMADCSWD,
-
+  IX86_BUILTIN_VPROTQ,
+  IX86_BUILTIN_VPROTD,
+  IX86_BUILTIN_VPROTW,
+  IX86_BUILTIN_VPROTB,
+  IX86_BUILTIN_VPROTQ_IMM,
+  IX86_BUILTIN_VPROTD_IMM,
+  IX86_BUILTIN_VPROTW_IMM,
+  IX86_BUILTIN_VPROTB_IMM,
+  IX86_BUILTIN_VPSHAQ,
+  IX86_BUILTIN_VPSHAD,
+  IX86_BUILTIN_VPSHAW,
+  IX86_BUILTIN_VPSHAB,
+  IX86_BUILTIN_VPSHLQ,
+  IX86_BUILTIN_VPSHLD,
+  IX86_BUILTIN_VPSHLW,
+  IX86_BUILTIN_VPSHLB,
+  IX86_BUILTIN_VFRCZSS,
+  IX86_BUILTIN_VFRCZSD,
+  IX86_BUILTIN_VFRCZPS,
+  IX86_BUILTIN_VFRCZPD,
+  IX86_BUILTIN_VFRCZPS256,
+  IX86_BUILTIN_VFRCZPD256,
   IX86_BUILTIN_VPHADDBW,
   IX86_BUILTIN_VPHADDBD,
   IX86_BUILTIN_VPHADDBQ,
@@ -33043,203 +32999,75 @@ enum ix86_builtins
   IX86_BUILTIN_VPHSUBBW,
   IX86_BUILTIN_VPHSUBWD,
   IX86_BUILTIN_VPHSUBDQ,
-
-  IX86_BUILTIN_VPROTB,
-  IX86_BUILTIN_VPROTW,
-  IX86_BUILTIN_VPROTD,
-  IX86_BUILTIN_VPROTQ,
-  IX86_BUILTIN_VPROTB_IMM,
-  IX86_BUILTIN_VPROTW_IMM,
-  IX86_BUILTIN_VPROTD_IMM,
-  IX86_BUILTIN_VPROTQ_IMM,
-
-  IX86_BUILTIN_VPSHLB,
-  IX86_BUILTIN_VPSHLW,
-  IX86_BUILTIN_VPSHLD,
-  IX86_BUILTIN_VPSHLQ,
-  IX86_BUILTIN_VPSHAB,
-  IX86_BUILTIN_VPSHAW,
-  IX86_BUILTIN_VPSHAD,
-  IX86_BUILTIN_VPSHAQ,
-
-  IX86_BUILTIN_VFRCZSS,
-  IX86_BUILTIN_VFRCZSD,
-  IX86_BUILTIN_VFRCZPS,
-  IX86_BUILTIN_VFRCZPD,
-  IX86_BUILTIN_VFRCZPS256,
-  IX86_BUILTIN_VFRCZPD256,
-
+  IX86_BUILTIN_VPCOMEQB,
+  IX86_BUILTIN_VPCOMNEB,
+  IX86_BUILTIN_VPCOMLTB,
+  IX86_BUILTIN_VPCOMLEB,
+  IX86_BUILTIN_VPCOMGTB,
+  IX86_BUILTIN_VPCOMGEB,
+  IX86_BUILTIN_VPCOMEQW,
+  IX86_BUILTIN_VPCOMNEW,
+  IX86_BUILTIN_VPCOMLTW,
+  IX86_BUILTIN_VPCOMLEW,
+  IX86_BUILTIN_VPCOMGTW,
+  IX86_BUILTIN_VPCOMGEW,
+  IX86_BUILTIN_VPCOMEQD,
+  IX86_BUILTIN_VPCOMNED,
+  IX86_BUILTIN_VPCOMLTD,
+  IX86_BUILTIN_VPCOMLED,
+  IX86_BUILTIN_VPCOMGTD,
+  IX86_BUILTIN_VPCOMGED,
+  IX86_BUILTIN_VPCOMEQQ,
+  IX86_BUILTIN_VPCOMNEQ,
+  IX86_BUILTIN_VPCOMLTQ,
+  IX86_BUILTIN_VPCOMLEQ,
+  IX86_BUILTIN_VPCOMGTQ,
+  IX86_BUILTIN_VPCOMGEQ,
   IX86_BUILTIN_VPCOMEQUB,
   IX86_BUILTIN_VPCOMNEUB,
   IX86_BUILTIN_VPCOMLTUB,
   IX86_BUILTIN_VPCOMLEUB,
   IX86_BUILTIN_VPCOMGTUB,
   IX86_BUILTIN_VPCOMGEUB,
-  IX86_BUILTIN_VPCOMFALSEUB,
-  IX86_BUILTIN_VPCOMTRUEUB,
-
   IX86_BUILTIN_VPCOMEQUW,
   IX86_BUILTIN_VPCOMNEUW,
   IX86_BUILTIN_VPCOMLTUW,
   IX86_BUILTIN_VPCOMLEUW,
   IX86_BUILTIN_VPCOMGTUW,
   IX86_BUILTIN_VPCOMGEUW,
-  IX86_BUILTIN_VPCOMFALSEUW,
-  IX86_BUILTIN_VPCOMTRUEUW,
-
   IX86_BUILTIN_VPCOMEQUD,
   IX86_BUILTIN_VPCOMNEUD,
   IX86_BUILTIN_VPCOMLTUD,
   IX86_BUILTIN_VPCOMLEUD,
   IX86_BUILTIN_VPCOMGTUD,
   IX86_BUILTIN_VPCOMGEUD,
-  IX86_BUILTIN_VPCOMFALSEUD,
-  IX86_BUILTIN_VPCOMTRUEUD,
-
   IX86_BUILTIN_VPCOMEQUQ,
   IX86_BUILTIN_VPCOMNEUQ,
   IX86_BUILTIN_VPCOMLTUQ,
   IX86_BUILTIN_VPCOMLEUQ,
   IX86_BUILTIN_VPCOMGTUQ,
   IX86_BUILTIN_VPCOMGEUQ,
-  IX86_BUILTIN_VPCOMFALSEUQ,
-  IX86_BUILTIN_VPCOMTRUEUQ,
-
-  IX86_BUILTIN_VPCOMEQB,
-  IX86_BUILTIN_VPCOMNEB,
-  IX86_BUILTIN_VPCOMLTB,
-  IX86_BUILTIN_VPCOMLEB,
-  IX86_BUILTIN_VPCOMGTB,
-  IX86_BUILTIN_VPCOMGEB,
   IX86_BUILTIN_VPCOMFALSEB,
-  IX86_BUILTIN_VPCOMTRUEB,
-
-  IX86_BUILTIN_VPCOMEQW,
-  IX86_BUILTIN_VPCOMNEW,
-  IX86_BUILTIN_VPCOMLTW,
-  IX86_BUILTIN_VPCOMLEW,
-  IX86_BUILTIN_VPCOMGTW,
-  IX86_BUILTIN_VPCOMGEW,
   IX86_BUILTIN_VPCOMFALSEW,
-  IX86_BUILTIN_VPCOMTRUEW,
-
-  IX86_BUILTIN_VPCOMEQD,
-  IX86_BUILTIN_VPCOMNED,
-  IX86_BUILTIN_VPCOMLTD,
-  IX86_BUILTIN_VPCOMLED,
-  IX86_BUILTIN_VPCOMGTD,
-  IX86_BUILTIN_VPCOMGED,
   IX86_BUILTIN_VPCOMFALSED,
-  IX86_BUILTIN_VPCOMTRUED,
-
-  IX86_BUILTIN_VPCOMEQQ,
-  IX86_BUILTIN_VPCOMNEQ,
-  IX86_BUILTIN_VPCOMLTQ,
-  IX86_BUILTIN_VPCOMLEQ,
-  IX86_BUILTIN_VPCOMGTQ,
-  IX86_BUILTIN_VPCOMGEQ,
   IX86_BUILTIN_VPCOMFALSEQ,
+  IX86_BUILTIN_VPCOMFALSEUB,
+  IX86_BUILTIN_VPCOMFALSEUW,
+  IX86_BUILTIN_VPCOMFALSEUD,
+  IX86_BUILTIN_VPCOMFALSEUQ,
+  IX86_BUILTIN_VPCOMTRUEB,
+  IX86_BUILTIN_VPCOMTRUEW,
+  IX86_BUILTIN_VPCOMTRUED,
   IX86_BUILTIN_VPCOMTRUEQ,
-
-  /* LWP instructions.  */
-  IX86_BUILTIN_LLWPCB,
-  IX86_BUILTIN_SLWPCB,
-  IX86_BUILTIN_LWPVAL32,
-  IX86_BUILTIN_LWPVAL64,
-  IX86_BUILTIN_LWPINS32,
-  IX86_BUILTIN_LWPINS64,
-
-  IX86_BUILTIN_CLZS,
-
-  /* RTM */
-  IX86_BUILTIN_XBEGIN,
-  IX86_BUILTIN_XEND,
-  IX86_BUILTIN_XABORT,
-  IX86_BUILTIN_XTEST,
-
-  /* MPX */
-  IX86_BUILTIN_BNDMK,
-  IX86_BUILTIN_BNDSTX,
-  IX86_BUILTIN_BNDLDX,
-  IX86_BUILTIN_BNDCL,
-  IX86_BUILTIN_BNDCU,
-  IX86_BUILTIN_BNDRET,
-  IX86_BUILTIN_BNDNARROW,
-  IX86_BUILTIN_BNDINT,
-  IX86_BUILTIN_SIZEOF,
-  IX86_BUILTIN_BNDLOWER,
-  IX86_BUILTIN_BNDUPPER,
-
-  /* BMI instructions.  */
-  IX86_BUILTIN_BEXTR32,
-  IX86_BUILTIN_BEXTR64,
-  IX86_BUILTIN_CTZS,
-
-  /* TBM instructions.  */
-  IX86_BUILTIN_BEXTRI32,
-  IX86_BUILTIN_BEXTRI64,
-
-  /* BMI2 instructions. */
-  IX86_BUILTIN_BZHI32,
-  IX86_BUILTIN_BZHI64,
-  IX86_BUILTIN_PDEP32,
-  IX86_BUILTIN_PDEP64,
-  IX86_BUILTIN_PEXT32,
-  IX86_BUILTIN_PEXT64,
-
-  /* ADX instructions.  */
-  IX86_BUILTIN_ADDCARRYX32,
-  IX86_BUILTIN_ADDCARRYX64,
-
-  /* SBB instructions.  */
-  IX86_BUILTIN_SBB32,
-  IX86_BUILTIN_SBB64,
-
-  /* FSGSBASE instructions.  */
-  IX86_BUILTIN_RDFSBASE32,
-  IX86_BUILTIN_RDFSBASE64,
-  IX86_BUILTIN_RDGSBASE32,
-  IX86_BUILTIN_RDGSBASE64,
-  IX86_BUILTIN_WRFSBASE32,
-  IX86_BUILTIN_WRFSBASE64,
-  IX86_BUILTIN_WRGSBASE32,
-  IX86_BUILTIN_WRGSBASE64,
-
-  /* RDRND instructions.  */
-  IX86_BUILTIN_RDRAND16_STEP,
-  IX86_BUILTIN_RDRAND32_STEP,
-  IX86_BUILTIN_RDRAND64_STEP,
-
-  /* RDSEED instructions.  */
-  IX86_BUILTIN_RDSEED16_STEP,
-  IX86_BUILTIN_RDSEED32_STEP,
-  IX86_BUILTIN_RDSEED64_STEP,
-
-  /* F16C instructions.  */
-  IX86_BUILTIN_CVTPH2PS,
-  IX86_BUILTIN_CVTPH2PS256,
-  IX86_BUILTIN_CVTPS2PH,
-  IX86_BUILTIN_CVTPS2PH256,
-
-  /* MONITORX and MWAITX instrucions.   */
-  IX86_BUILTIN_MONITORX,
-  IX86_BUILTIN_MWAITX,
-
-  /* CFString built-in for darwin */
-  IX86_BUILTIN_CFSTRING,
-
-  /* Builtins to get CPU type and supported features. */
-  IX86_BUILTIN_CPU_INIT,
-  IX86_BUILTIN_CPU_IS,
-  IX86_BUILTIN_CPU_SUPPORTS,
-
-  /* Read/write FLAGS register built-ins.  */
-  IX86_BUILTIN_READ_FLAGS,
-  IX86_BUILTIN_WRITE_FLAGS,
-
-  /* PKU instructions.  */
-  IX86_BUILTIN_RDPKRU,
-  IX86_BUILTIN_WRPKRU,
+  IX86_BUILTIN_VPCOMTRUEUB,
+  IX86_BUILTIN_VPCOMTRUEUW,
+  IX86_BUILTIN_VPCOMTRUEUD,
+  IX86_BUILTIN_VPCOMTRUEUQ,
+  IX86_BUILTIN_VPERMIL2PD,
+  IX86_BUILTIN_VPERMIL2PS,
+  IX86_BUILTIN_VPERMIL2PD256,
+  IX86_BUILTIN_VPERMIL2PS256,
+  IX86_BUILTIN__BDESC_MULTI_ARG_LAST = IX86_BUILTIN_VPERMIL2PS256,
 
   IX86_BUILTIN_MAX
 };
@@ -35855,7 +35683,7 @@ static const struct builtin_description bdesc_round_args[] =
   { OPTION_MASK_ISA_AVX512DQ, CODE_FOR_avx512dq_rangepv8df_mask_round, "__builtin_ia32_rangepd512_mask", IX86_BUILTIN_RANGEPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_INT_V8DF_QI_INT },
 };
 
-/* Bultins for MPX.  */
+/* Builtins for MPX.  */
 static const struct builtin_description bdesc_mpx[] =
 {
   { OPTION_MASK_ISA_MPX, (enum insn_code)0, "__builtin_ia32_bndstx", IX86_BUILTIN_BNDSTX, UNKNOWN, (int) VOID_FTYPE_PCVOID_BND_PCVOID },
@@ -36044,7 +35872,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_phsubdq,           "__builtin_ia32_vphsubdq",    IX86_BUILTIN_VPHSUBDQ,    UNKNOWN,      (int)MULTI_ARG_1_SI_DI },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomeqb",    IX86_BUILTIN_VPCOMEQB,    EQ,           (int)MULTI_ARG_2_QI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomneb",    IX86_BUILTIN_VPCOMNEB,    NE,           (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomneqb",   IX86_BUILTIN_VPCOMNEB,    NE,           (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomltb",    IX86_BUILTIN_VPCOMLTB,    LT,           (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomleb",    IX86_BUILTIN_VPCOMLEB,    LE,           (int)MULTI_ARG_2_QI_CMP },
@@ -36052,7 +35879,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv16qi3,     "__builtin_ia32_vpcomgeb",    IX86_BUILTIN_VPCOMGEB,    GE,           (int)MULTI_ARG_2_QI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomeqw",    IX86_BUILTIN_VPCOMEQW,    EQ,           (int)MULTI_ARG_2_HI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomnew",    IX86_BUILTIN_VPCOMNEW,    NE,           (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomneqw",   IX86_BUILTIN_VPCOMNEW,    NE,           (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomltw",    IX86_BUILTIN_VPCOMLTW,    LT,           (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomlew",    IX86_BUILTIN_VPCOMLEW,    LE,           (int)MULTI_ARG_2_HI_CMP },
@@ -36060,7 +35886,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv8hi3,      "__builtin_ia32_vpcomgew",    IX86_BUILTIN_VPCOMGEW,    GE,           (int)MULTI_ARG_2_HI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomeqd",    IX86_BUILTIN_VPCOMEQD,    EQ,           (int)MULTI_ARG_2_SI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomned",    IX86_BUILTIN_VPCOMNED,    NE,           (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomneqd",   IX86_BUILTIN_VPCOMNED,    NE,           (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomltd",    IX86_BUILTIN_VPCOMLTD,    LT,           (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomled",    IX86_BUILTIN_VPCOMLED,    LE,           (int)MULTI_ARG_2_SI_CMP },
@@ -36068,7 +35893,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv4si3,      "__builtin_ia32_vpcomged",    IX86_BUILTIN_VPCOMGED,    GE,           (int)MULTI_ARG_2_SI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomeqq",    IX86_BUILTIN_VPCOMEQQ,    EQ,           (int)MULTI_ARG_2_DI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomneq",    IX86_BUILTIN_VPCOMNEQ,    NE,           (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomneqq",   IX86_BUILTIN_VPCOMNEQ,    NE,           (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomltq",    IX86_BUILTIN_VPCOMLTQ,    LT,           (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomleq",    IX86_BUILTIN_VPCOMLEQ,    LE,           (int)MULTI_ARG_2_DI_CMP },
@@ -36076,7 +35900,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmpv2di3,      "__builtin_ia32_vpcomgeq",    IX86_BUILTIN_VPCOMGEQ,    GE,           (int)MULTI_ARG_2_DI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v16qi3,"__builtin_ia32_vpcomequb",   IX86_BUILTIN_VPCOMEQUB,   EQ,           (int)MULTI_ARG_2_QI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v16qi3,"__builtin_ia32_vpcomneub",   IX86_BUILTIN_VPCOMNEUB,   NE,           (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v16qi3,"__builtin_ia32_vpcomnequb",  IX86_BUILTIN_VPCOMNEUB,   NE,           (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv16qi3, "__builtin_ia32_vpcomltub",   IX86_BUILTIN_VPCOMLTUB,   LTU,          (int)MULTI_ARG_2_QI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv16qi3, "__builtin_ia32_vpcomleub",   IX86_BUILTIN_VPCOMLEUB,   LEU,          (int)MULTI_ARG_2_QI_CMP },
@@ -36084,7 +35907,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv16qi3, "__builtin_ia32_vpcomgeub",   IX86_BUILTIN_VPCOMGEUB,   GEU,          (int)MULTI_ARG_2_QI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v8hi3, "__builtin_ia32_vpcomequw",   IX86_BUILTIN_VPCOMEQUW,   EQ,           (int)MULTI_ARG_2_HI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v8hi3, "__builtin_ia32_vpcomneuw",   IX86_BUILTIN_VPCOMNEUW,   NE,           (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v8hi3, "__builtin_ia32_vpcomnequw",  IX86_BUILTIN_VPCOMNEUW,   NE,           (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv8hi3,  "__builtin_ia32_vpcomltuw",   IX86_BUILTIN_VPCOMLTUW,   LTU,          (int)MULTI_ARG_2_HI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv8hi3,  "__builtin_ia32_vpcomleuw",   IX86_BUILTIN_VPCOMLEUW,   LEU,          (int)MULTI_ARG_2_HI_CMP },
@@ -36092,7 +35914,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv8hi3,  "__builtin_ia32_vpcomgeuw",   IX86_BUILTIN_VPCOMGEUW,   GEU,          (int)MULTI_ARG_2_HI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v4si3, "__builtin_ia32_vpcomequd",   IX86_BUILTIN_VPCOMEQUD,   EQ,           (int)MULTI_ARG_2_SI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v4si3, "__builtin_ia32_vpcomneud",   IX86_BUILTIN_VPCOMNEUD,   NE,           (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v4si3, "__builtin_ia32_vpcomnequd",  IX86_BUILTIN_VPCOMNEUD,   NE,           (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv4si3,  "__builtin_ia32_vpcomltud",   IX86_BUILTIN_VPCOMLTUD,   LTU,          (int)MULTI_ARG_2_SI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv4si3,  "__builtin_ia32_vpcomleud",   IX86_BUILTIN_VPCOMLEUD,   LEU,          (int)MULTI_ARG_2_SI_CMP },
@@ -36100,7 +35921,6 @@ static const struct builtin_description bdesc_multi_arg[] =
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv4si3,  "__builtin_ia32_vpcomgeud",   IX86_BUILTIN_VPCOMGEUD,   GEU,          (int)MULTI_ARG_2_SI_CMP },
 
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v2di3, "__builtin_ia32_vpcomequq",   IX86_BUILTIN_VPCOMEQUQ,   EQ,           (int)MULTI_ARG_2_DI_CMP },
-  { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v2di3, "__builtin_ia32_vpcomneuq",   IX86_BUILTIN_VPCOMNEUQ,   NE,           (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_uns2v2di3, "__builtin_ia32_vpcomnequq",  IX86_BUILTIN_VPCOMNEUQ,   NE,           (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv2di3,  "__builtin_ia32_vpcomltuq",   IX86_BUILTIN_VPCOMLTUQ,   LTU,          (int)MULTI_ARG_2_DI_CMP },
   { OPTION_MASK_ISA_XOP, CODE_FOR_xop_maskcmp_unsv2di3,  "__builtin_ia32_vpcomleuq",   IX86_BUILTIN_VPCOMLEUQ,   LEU,          (int)MULTI_ARG_2_DI_CMP },
@@ -36243,6 +36063,31 @@ ix86_init_tm_builtins (void)
     }
 }
 
+/* Macros for verification of enum ix86_builtins order.  */
+#define BDESC_VERIFY(x, y, z) \
+  gcc_checking_assert ((x) == (enum ix86_builtins) ((y) + (z)))
+#define BDESC_VERIFYS(x, y, z) \
+  STATIC_ASSERT ((x) == (enum ix86_builtins) ((y) + (z)))
+
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_PCMPESTR_FIRST,
+              IX86_BUILTIN__BDESC_COMI_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_PCMPISTR_FIRST,
+              IX86_BUILTIN__BDESC_PCMPESTR_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST,
+              IX86_BUILTIN__BDESC_PCMPISTR_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_ARGS_FIRST,
+              IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST,
+              IX86_BUILTIN__BDESC_ARGS_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_MPX_FIRST,
+              IX86_BUILTIN__BDESC_ROUND_ARGS_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_MPX_CONST_FIRST,
+              IX86_BUILTIN__BDESC_MPX_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_MULTI_ARG_FIRST,
+              IX86_BUILTIN__BDESC_MPX_CONST_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN_MAX,
+              IX86_BUILTIN__BDESC_MULTI_ARG_LAST, 1);
+
 /* Set up all the MMX/SSE builtins, even builtins for instructions that are not
    in the current target ISA to allow the user to compile particular modules
    with different target specific options that differ from the command line
@@ -36259,70 +36104,94 @@ ix86_init_mmx_sse_builtins (void)
        i < ARRAY_SIZE (bdesc_special_args);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST, i);
       if (d->name == 0)
        continue;
 
       ftype = (enum ix86_builtin_func_type) d->flag;
       def_builtin (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST,
+                IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST,
+                ARRAY_SIZE (bdesc_special_args) - 1);
 
   /* Add all builtins with variable number of operands.  */
   for (i = 0, d = bdesc_args;
        i < ARRAY_SIZE (bdesc_args);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_ARGS_FIRST, i);
       if (d->name == 0)
        continue;
 
       ftype = (enum ix86_builtin_func_type) d->flag;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_ARGS_LAST,
+                IX86_BUILTIN__BDESC_ARGS_FIRST,
+                ARRAY_SIZE (bdesc_args) - 1);
 
   /* Add all builtins with rounding.  */
   for (i = 0, d = bdesc_round_args;
        i < ARRAY_SIZE (bdesc_round_args);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST, i);
       if (d->name == 0)
        continue;
 
       ftype = (enum ix86_builtin_func_type) d->flag;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_ROUND_ARGS_LAST,
+                IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST,
+                ARRAY_SIZE (bdesc_round_args) - 1);
 
   /* pcmpestr[im] insns.  */
   for (i = 0, d = bdesc_pcmpestr;
        i < ARRAY_SIZE (bdesc_pcmpestr);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_PCMPESTR_FIRST, i);
       if (d->code == IX86_BUILTIN_PCMPESTRM128)
        ftype = V16QI_FTYPE_V16QI_INT_V16QI_INT_INT;
       else
        ftype = INT_FTYPE_V16QI_INT_V16QI_INT_INT;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_PCMPESTR_LAST,
+                IX86_BUILTIN__BDESC_PCMPESTR_FIRST,
+                ARRAY_SIZE (bdesc_pcmpestr) - 1);
 
   /* pcmpistr[im] insns.  */
   for (i = 0, d = bdesc_pcmpistr;
        i < ARRAY_SIZE (bdesc_pcmpistr);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_PCMPISTR_FIRST, i);
       if (d->code == IX86_BUILTIN_PCMPISTRM128)
        ftype = V16QI_FTYPE_V16QI_V16QI_INT;
       else
        ftype = INT_FTYPE_V16QI_V16QI_INT;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_PCMPISTR_LAST,
+                IX86_BUILTIN__BDESC_PCMPISTR_FIRST,
+                ARRAY_SIZE (bdesc_pcmpistr) - 1);
 
   /* comi/ucomi insns.  */
   for (i = 0, d = bdesc_comi; i < ARRAY_SIZE (bdesc_comi); i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_COMI_FIRST, i);
       if (d->mask == OPTION_MASK_ISA_SSE2)
        ftype = INT_FTYPE_V2DF_V2DF;
       else
        ftype = INT_FTYPE_V4SF_V4SF;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_COMI_LAST,
+                IX86_BUILTIN__BDESC_COMI_FIRST,
+                ARRAY_SIZE (bdesc_comi) - 1);
 
   /* SSE */
   def_builtin (OPTION_MASK_ISA_SSE, "__builtin_ia32_ldmxcsr",
@@ -36856,12 +36725,16 @@ ix86_init_mmx_sse_builtins (void)
   /* Add FMA4 multi-arg argument instructions */
   for (i = 0, d = bdesc_multi_arg; i < ARRAY_SIZE (bdesc_multi_arg); i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_MULTI_ARG_FIRST, i);
       if (d->name == 0)
        continue;
 
       ftype = (enum ix86_builtin_func_type) d->flag;
       def_builtin_const (d->mask, d->name, ftype, d->code);
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_MULTI_ARG_LAST,
+                IX86_BUILTIN__BDESC_MULTI_ARG_FIRST,
+                ARRAY_SIZE (bdesc_multi_arg) - 1);
 }
 
 static void
@@ -36876,6 +36749,7 @@ ix86_init_mpx_builtins ()
        i < ARRAY_SIZE (bdesc_mpx);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_MPX_FIRST, i);
       if (d->name == 0)
        continue;
 
@@ -36900,11 +36774,15 @@ ix86_init_mpx_builtins ()
          ix86_builtins_isa[(int)d->code].nothrow_p = true;
        }
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_MPX_LAST,
+                IX86_BUILTIN__BDESC_MPX_FIRST,
+                ARRAY_SIZE (bdesc_mpx) - 1);
 
   for (i = 0, d = bdesc_mpx_const;
        i < ARRAY_SIZE (bdesc_mpx_const);
        i++, d++)
     {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_MPX_CONST_FIRST, i);
       if (d->name == 0)
        continue;
 
@@ -36923,7 +36801,12 @@ ix86_init_mpx_builtins ()
          ix86_builtins_isa[(int)d->code].nothrow_p = true;
        }
     }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_MPX_CONST_LAST,
+                IX86_BUILTIN__BDESC_MPX_CONST_FIRST,
+                ARRAY_SIZE (bdesc_mpx_const) - 1);
 }
+#undef BDESC_VERIFY
+#undef BDESC_VERIFYS
 
 /* This adds a condition to the basic_block NEW_BB in function FUNCTION_DECL
    to return a pointer to VERSION_DECL if the outcome of the expression
@@ -41174,7 +41057,6 @@ static rtx
 ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
                     machine_mode mode, int ignore)
 {
-  const struct builtin_description *d;
   size_t i;
   enum insn_code icode;
   tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
@@ -42866,16 +42748,18 @@ rdseed_step:
       break;
     }
 
-  for (i = 0, d = bdesc_special_args;
-       i < ARRAY_SIZE (bdesc_special_args);
-       i++, d++)
-    if (d->code == fcode)
-      return ix86_expand_special_args_builtin (d, exp, target);
+  if (fcode >= IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_SPECIAL_ARGS_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_SPECIAL_ARGS_FIRST;
+      return ix86_expand_special_args_builtin (bdesc_special_args + i, exp,
+                                              target);
+    }
 
-  for (i = 0, d = bdesc_args;
-       i < ARRAY_SIZE (bdesc_args);
-       i++, d++)
-    if (d->code == fcode)
+  if (fcode >= IX86_BUILTIN__BDESC_ARGS_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_ARGS_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_ARGS_FIRST;
       switch (fcode)
        {
        case IX86_BUILTIN_FABSQ:
@@ -42885,34 +42769,47 @@ rdseed_step:
            return expand_call (exp, target, ignore);
          /* FALLTHRU */
        default:
-         return ix86_expand_args_builtin (d, exp, target);
+         return ix86_expand_args_builtin (bdesc_args + i, exp, target);
        }
+    }
 
-  for (i = 0, d = bdesc_comi; i < ARRAY_SIZE (bdesc_comi); i++, d++)
-    if (d->code == fcode)
-      return ix86_expand_sse_comi (d, exp, target);
+  if (fcode >= IX86_BUILTIN__BDESC_COMI_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_COMI_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_COMI_FIRST;
+      return ix86_expand_sse_comi (bdesc_comi + i, exp, target);
+    }
 
-  for (i = 0, d = bdesc_round_args; i < ARRAY_SIZE (bdesc_round_args); i++, d++)
-    if (d->code == fcode)
-      return ix86_expand_round_builtin (d, exp, target);
+  if (fcode >= IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_ROUND_ARGS_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_ROUND_ARGS_FIRST;
+      return ix86_expand_round_builtin (bdesc_round_args + i, exp, target);
+    }
 
-  for (i = 0, d = bdesc_pcmpestr;
-       i < ARRAY_SIZE (bdesc_pcmpestr);
-       i++, d++)
-    if (d->code == fcode)
-      return ix86_expand_sse_pcmpestr (d, exp, target);
+  if (fcode >= IX86_BUILTIN__BDESC_PCMPESTR_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_PCMPESTR_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_PCMPESTR_FIRST;
+      return ix86_expand_sse_pcmpestr (bdesc_pcmpestr + i, exp, target);
+    }
 
-  for (i = 0, d = bdesc_pcmpistr;
-       i < ARRAY_SIZE (bdesc_pcmpistr);
-       i++, d++)
-    if (d->code == fcode)
-      return ix86_expand_sse_pcmpistr (d, exp, target);
+  if (fcode >= IX86_BUILTIN__BDESC_PCMPISTR_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_PCMPISTR_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_PCMPISTR_FIRST;
+      return ix86_expand_sse_pcmpistr (bdesc_pcmpistr + i, exp, target);
+    }
 
-  for (i = 0, d = bdesc_multi_arg; i < ARRAY_SIZE (bdesc_multi_arg); i++, d++)
-    if (d->code == fcode)
+  if (fcode >= IX86_BUILTIN__BDESC_MULTI_ARG_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_MULTI_ARG_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_MULTI_ARG_FIRST;
+      const struct builtin_description *d = bdesc_multi_arg + i;
       return ix86_expand_multi_arg_builtin (d->icode, exp, target,
                                            (enum ix86_builtin_func_type)
                                            d->flag, d->comparison);
+    }
 
   gcc_unreachable ();
 }