diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b128931ccb3..9667b7ce268 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2016-08-16 Jakub Jelinek + + * 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 * config/i386/i386.md (*ashl3_mask): Rewrite define_insn diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 02bfcbf49b2..3805817f868 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -30512,581 +30512,20 @@ 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_COMIEQSS, - IX86_BUILTIN_COMILTSS, - IX86_BUILTIN_COMILESS, - IX86_BUILTIN_COMIGTSS, - IX86_BUILTIN_COMIGESS, - IX86_BUILTIN_COMINEQSS, - IX86_BUILTIN_UCOMIEQSS, - IX86_BUILTIN_UCOMILTSS, - IX86_BUILTIN_UCOMILESS, - IX86_BUILTIN_UCOMIGTSS, - IX86_BUILTIN_UCOMIGESS, - IX86_BUILTIN_UCOMINEQSS, - - 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_MAXPS, - IX86_BUILTIN_MAXSS, - IX86_BUILTIN_MINPS, - IX86_BUILTIN_MINSS, - - IX86_BUILTIN_LOADUPS, - IX86_BUILTIN_STOREUPS, - IX86_BUILTIN_MOVSS, - - IX86_BUILTIN_MOVHLPS, - IX86_BUILTIN_MOVLHPS, - 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_MOVNTQ, - - IX86_BUILTIN_LOADDQU, - IX86_BUILTIN_STOREDQU, - - 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, - IX86_BUILTIN_PF2ID, - IX86_BUILTIN_PFACC, - IX86_BUILTIN_PFADD, - IX86_BUILTIN_PFCMPEQ, - IX86_BUILTIN_PFCMPGE, - IX86_BUILTIN_PFCMPGT, - 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_ADDPD, - IX86_BUILTIN_ADDSD, - IX86_BUILTIN_DIVPD, - IX86_BUILTIN_DIVSD, - IX86_BUILTIN_MULPD, - IX86_BUILTIN_MULSD, - IX86_BUILTIN_SUBPD, - IX86_BUILTIN_SUBSD, - - IX86_BUILTIN_CMPEQPD, - IX86_BUILTIN_CMPLTPD, - IX86_BUILTIN_CMPLEPD, - IX86_BUILTIN_CMPGTPD, - IX86_BUILTIN_CMPGEPD, - 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_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_PSUBSB128, - IX86_BUILTIN_PSUBSW128, - IX86_BUILTIN_PSUBUSB128, - IX86_BUILTIN_PSUBUSW128, - - 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_PMINUB128, - - IX86_BUILTIN_PMULUDQ, - IX86_BUILTIN_PMULUDQ128, - IX86_BUILTIN_PMULHUW128, - IX86_BUILTIN_PMULHW128, - IX86_BUILTIN_PMULLW128, - - IX86_BUILTIN_PSADBW128, - IX86_BUILTIN_PSHUFHW, - IX86_BUILTIN_PSHUFLW, - IX86_BUILTIN_PSHUFD, - - IX86_BUILTIN_PSLLDQI128, - IX86_BUILTIN_PSLLWI128, - IX86_BUILTIN_PSLLDI128, - IX86_BUILTIN_PSLLQI128, - IX86_BUILTIN_PSRAWI128, - IX86_BUILTIN_PSRADI128, - 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_MOVSHDUP, - IX86_BUILTIN_MOVSLDUP, - IX86_BUILTIN_ADDSUBPD, - IX86_BUILTIN_HADDPD, - 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_PABSB, - IX86_BUILTIN_PABSW, - IX86_BUILTIN_PABSD, - - IX86_BUILTIN_PHADDW128, - IX86_BUILTIN_PHADDD128, - IX86_BUILTIN_PHADDSW128, - IX86_BUILTIN_PHSUBW128, - IX86_BUILTIN_PHSUBD128, - IX86_BUILTIN_PHSUBSW128, - IX86_BUILTIN_PMADDUBSW128, - IX86_BUILTIN_PMULHRSW128, - IX86_BUILTIN_PSHUFB128, - IX86_BUILTIN_PSIGNB128, - IX86_BUILTIN_PSIGNW128, - IX86_BUILTIN_PSIGND128, - 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_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_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_PMULDQ128, - IX86_BUILTIN_PMULLD128, - - IX86_BUILTIN_ROUNDSD, - IX86_BUILTIN_ROUNDSS, - - IX86_BUILTIN_ROUNDPD, - IX86_BUILTIN_ROUNDPS, - - 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, @@ -31104,45 +30543,839 @@ enum ix86_builtins 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_VEC_PACK_SFIX, - IX86_BUILTIN_VEC_PACK_SFIX256, + /* 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, + IX86_BUILTIN_COMIGESS, + IX86_BUILTIN_COMINEQSS, + IX86_BUILTIN_UCOMIEQSS, + IX86_BUILTIN_UCOMILTSS, + IX86_BUILTIN_UCOMILESS, + 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, - /* SSE4.2. */ - IX86_BUILTIN_CRC32QI, - IX86_BUILTIN_CRC32HI, - IX86_BUILTIN_CRC32SI, - IX86_BUILTIN_CRC32DI, - - IX86_BUILTIN_PCMPESTRI128, + 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_PCMPISTRI128, + IX86_BUILTIN__BDESC_PCMPESTR_LAST = IX86_BUILTIN_PCMPESTRZ128, + + 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, + /* 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_MOVNTPS, + IX86_BUILTIN_LOADUPS, + IX86_BUILTIN_LOADHPS, + IX86_BUILTIN_LOADLPS, + IX86_BUILTIN_STOREHPS, + IX86_BUILTIN_STORELPS, + IX86_BUILTIN_SFENCE, + IX86_BUILTIN_MOVNTQ, + 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, + + /* 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, + IX86_BUILTIN_PFCMPGE, + IX86_BUILTIN_PFCMPGT, + IX86_BUILTIN_PFMAX, + IX86_BUILTIN_PFMIN, + IX86_BUILTIN_PFMUL, + IX86_BUILTIN_PFRCPIT1, + IX86_BUILTIN_PFRCPIT2, + IX86_BUILTIN_PFRSQIT1, + IX86_BUILTIN_PFSUB, + IX86_BUILTIN_PFSUBR, + IX86_BUILTIN_PMULHRW, + IX86_BUILTIN_PF2IW, + IX86_BUILTIN_PI2FW, + IX86_BUILTIN_PSWAPDSI, + IX86_BUILTIN_PSWAPDSF, + 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_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_CMPEQSD, + IX86_BUILTIN_CMPLTSD, + IX86_BUILTIN_CMPLESD, + 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_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_PMAXUB128, + IX86_BUILTIN_PMAXSW128, + IX86_BUILTIN_PMINUB128, + 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_PSADBW128, + 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_PSLLW128, + IX86_BUILTIN_PSLLD128, + IX86_BUILTIN_PSLLQ128, + IX86_BUILTIN_PSRLDQI128, + IX86_BUILTIN_PSRLWI128, + IX86_BUILTIN_PSRLDI128, + IX86_BUILTIN_PSRLQI128, + IX86_BUILTIN_PSRLW128, + IX86_BUILTIN_PSRLD128, + IX86_BUILTIN_PSRLQ128, + 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_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_PALIGNR, + IX86_BUILTIN_BLENDPD, + IX86_BUILTIN_BLENDPS, + IX86_BUILTIN_BLENDVPD, + IX86_BUILTIN_BLENDVPS, + IX86_BUILTIN_DPPD, + IX86_BUILTIN_DPPS, + IX86_BUILTIN_INSERTPS128, + IX86_BUILTIN_MPSADBW128, + 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_ROUNDPD, + IX86_BUILTIN_ROUNDPS, + IX86_BUILTIN_ROUNDSD, + IX86_BUILTIN_ROUNDSS, + IX86_BUILTIN_FLOORPD, + IX86_BUILTIN_CEILPD, + IX86_BUILTIN_TRUNCPD, + 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, - - /* AES instructions */ + IX86_BUILTIN_CRC32QI, + IX86_BUILTIN_CRC32HI, + IX86_BUILTIN_CRC32SI, + IX86_BUILTIN_CRC32DI, + 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_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,88 +31809,22 @@ 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, @@ -31843,8 +31855,25 @@ enum ix86_builtins IX86_BUILTIN_VTERNLOGD512_MASKZ, IX86_BUILTIN_VTERNLOGQ512_MASK, IX86_BUILTIN_VTERNLOGQ512_MASKZ, - - /* Mask arithmetic operations */ + 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, @@ -31855,102 +31884,13 @@ enum ix86_builtins 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_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, @@ -32842,80 +32725,18 @@ enum ix86_builtins 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_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, + /* 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, - /* CLWB instructions. */ - IX86_BUILTIN_CLWB, + /* 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, - /* PCOMMIT instructions. */ - IX86_BUILTIN_PCOMMIT, + /* 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, - /* 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, - - /* 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, - - - /* 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_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_VPCOMEQUB, + IX86_BUILTIN_VPCOMNEUB, + IX86_BUILTIN_VPCOMLTUB, + IX86_BUILTIN_VPCOMLEUB, + IX86_BUILTIN_VPCOMGTUB, + IX86_BUILTIN_VPCOMGEUB, + IX86_BUILTIN_VPCOMEQUW, + IX86_BUILTIN_VPCOMNEUW, + IX86_BUILTIN_VPCOMLTUW, + IX86_BUILTIN_VPCOMLEUW, + IX86_BUILTIN_VPCOMGTUW, + IX86_BUILTIN_VPCOMGEUW, + IX86_BUILTIN_VPCOMEQUD, + IX86_BUILTIN_VPCOMNEUD, + IX86_BUILTIN_VPCOMLTUD, + IX86_BUILTIN_VPCOMLEUD, + IX86_BUILTIN_VPCOMGTUD, + IX86_BUILTIN_VPCOMGEUD, + IX86_BUILTIN_VPCOMEQUQ, + IX86_BUILTIN_VPCOMNEUQ, + IX86_BUILTIN_VPCOMLTUQ, + IX86_BUILTIN_VPCOMLEUQ, + IX86_BUILTIN_VPCOMGTUQ, + IX86_BUILTIN_VPCOMGEUQ, + IX86_BUILTIN_VPCOMFALSEB, + IX86_BUILTIN_VPCOMFALSEW, + IX86_BUILTIN_VPCOMFALSED, 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 (); }