1. 22 Aug, 2011 6 commits
    • Add support for AVX2 builtin functions. · 977e83a3
      2011-08-22  Kirill Yukhin  <kirill.yukhin@intel.com>
      
      	* config/i386/avx2intrin.h: New file.
      	* config/i386/i386-builtin-types.def (PCINT, PCINT64, PV4SI,
      	PV8SI, V32QI_FTYPE_V32QI, V32QI_FTYPE_V16QI, V16HI_FTYPE_V16HI,
      	V16HI_FTYPE_V8HI, V8SI_FTYPE_V8SI, V16HI_FTYPE_V16QI,
      	V8SI_FTYPE_V16QI, V4DI_FTYPE_V16QI, V8SI_FTYPE_V8HI,
      	V4DI_FTYPE_V8HI, V4DI_FTYPE_V4SI, V4DI_FTYPE_PV4DI,
      	V4DI_FTYPE_V2DI, V2DI_FTYPE_PCV2DI_V2DI, V4SI_FTYPE_PCV4SI_V4SI,
      	V32QI_FTYPE_V16HI_V16HI, V16HI_FTYPE_V8SI_V8SI,
      	V32QI_FTYPE_V32QI_V32QI, V16HI_FTYPE_V32QI_V32QI,
      	V16HI_FTYPE_V16HI_V8HI, V16HI_FTYPE_V16HI_V16HI,
      	V16HI_FTYPE_V16HI_INT, V16HI_FTYPE_V16HI_SI,
      	V16HI_FTYPE_V16HI_V16HI_INT, V32QI_FTYPE_V32QI_V32QI_INT,
      	V8SI_FTYPE_V8SI_V4SI, V8SI_FTYPE_V8SI_V8SI,
      	V8SI_FTYPE_V16HI_V16HI, V8SI_FTYPE_V8SI_INT, V8SI_FTYPE_V8SI_SI,
      	V8SI_FTYPE_PCV8SI_V8SI, V4DI_FTYPE_V4DI_V4DI,
      	V4DI_FTYPE_V8SI_V8SI, V4DI_FTYPE_V4DI_V2DI,
      	V4DI_FTYPE_PCV4DI_V4DI, V4DI_FTYPE_V4DI_INT,
      	V2DI_FTYPE_V4DI_INT, V4DI_FTYPE_V4DI_V4DI_INT,
      	V4DI_FTYPE_V4DI_V2DI_INT, VOID_FTYPE_PV2DI_V2DI_V2DI,
      	VOID_FTYPE_PV4DI_V4DI_V4DI, VOID_FTYPE_PV4SI_V4SI_V4SI,
      	VOID_FTYPE_PV8SI_V8SI_V8SI,
      	V2DF_FTYPE_V2DF_PCDOUBLE_V4SI_V2DF_INT,
      	V4DF_FTYPE_V4DF_PCDOUBLE_V4SI_V4DF_INT,
      	V2DF_FTYPE_V2DF_PCDOUBLE_V2DI_V2DF_INT,
      	V4DF_FTYPE_V4DF_PCDOUBLE_V4DI_V4DF_INT,
      	V4SF_FTYPE_V4SF_PCFLOAT_V4SI_V4SF_INT,
      	V8SF_FTYPE_V8SF_PCFLOAT_V8SI_V8SF_INT,
      	V4SF_FTYPE_V4SF_PCFLOAT_V2DI_V4SF_INT,
      	V4SF_FTYPE_V4SF_PCFLOAT_V4DI_V4SF_INT,
      	V2DI_FTYPE_V2DI_PCINT64_V4SI_V2DI_INT,
      	V4DI_FTYPE_V4DI_PCINT64_V4SI_V4DI_INT,
      	V2DI_FTYPE_V2DI_PCINT64_V2DI_V2DI_INT,
      	V4DI_FTYPE_V4DI_PCINT64_V4DI_V4DI_INT,
      	V4SI_FTYPE_V4SI_PCINT_V4SI_V4SI_INT,
      	V8SI_FTYPE_V8SI_PCINT_V8SI_V8SI_INT,
      	V4SI_FTYPE_V4SI_PCINT_V2DI_V4SI_INT,
      	V4SI_FTYPE_V4SI_PCINT_V4DI_V4SI_INT,
      	V16HI_FTYPE_V16HI_SI_COUNT, V16HI_FTYPE_V16HI_V8HI_COUNT,
      	V8SI_FTYPE_V8SI_SI_COUNT, V8SI_FTYPE_V8SI_V4SI_COUNT,
      	V4DI_FTYPE_V4DI_INT_COUNT, V4DI_FTYPE_V4DI_V2DI_COUNT,
      	V4DI_FTYPE_V4DI_INT_CONVERT,
      	V4DI_FTYPE_V4DI_V4DI_INT_CONVERT): New.
      	* config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MPSADBW256,
      	IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
      	IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
      	IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
      	IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
      	IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
      	IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
      	IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
      	IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
      	IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
      	IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
      	IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
      	IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
      	IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
      	IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
      	IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
      	IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
      	IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
      	IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
      	IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
      	IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
      	IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
      	IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
      	IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
      	IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
      	IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
      	IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
      	IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
      	IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
      	IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
      	IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
      	IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
      	IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
      	IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
      	IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
      	IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
      	IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
      	IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
      	IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
      	IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
      	IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
      	IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
      	IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
      	IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
      	IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
      	IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
      	IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
      	IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
      	IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
      	IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
      	IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
      	IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
      	IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
      	IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
      	IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
      	IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
      	IX86_BUILTIN_PUNPCKLWD256, 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_PBROADCASTB256,
      	IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
      	IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
      	IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
      	IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
      	IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
      	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, IX86_BUILTIN_PSLLVV4SI,
      	IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
      	IX86_BUILTIN_PSRLVV4DI, 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.
      	(bdesc_special_args): Add 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.
      	(bdesc_args): Add  IX86_BUILTIN_MPSADBW256,
      	IX86_BUILTIN_PABSB256, IX86_BUILTIN_PABSW256,
      	IX86_BUILTIN_PABSD256, IX86_BUILTIN_PACKSSDW256,
      	IX86_BUILTIN_PACKSSWB256, IX86_BUILTIN_PACKUSDW256,
      	IX86_BUILTIN_PACKUSWB256, IX86_BUILTIN_PADDB256,
      	IX86_BUILTIN_PADDW256, IX86_BUILTIN_PADDD256,
      	IX86_BUILTIN_PADDQ256, IX86_BUILTIN_PADDSB256,
      	IX86_BUILTIN_PADDSW256, IX86_BUILTIN_PADDUSB256,
      	IX86_BUILTIN_PADDUSW256, IX86_BUILTIN_PALIGNR256,
      	IX86_BUILTIN_AND256I, IX86_BUILTIN_ANDNOT256I,
      	IX86_BUILTIN_PAVGB256, IX86_BUILTIN_PAVGW256,
      	IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_PBLENDVW256,
      	IX86_BUILTIN_PCMPEQB256, IX86_BUILTIN_PCMPEQW256,
      	IX86_BUILTIN_PCMPEQD256, IX86_BUILTIN_PCMPEQQ256,
      	IX86_BUILTIN_PCMPGTB256, IX86_BUILTIN_PCMPGTW256,
      	IX86_BUILTIN_PCMPGTD256, IX86_BUILTIN_PCMPGTQ256,
      	IX86_BUILTIN_PHADDW256, IX86_BUILTIN_PHADDD256,
      	IX86_BUILTIN_PHADDSW256, IX86_BUILTIN_PHSUBW256,
      	IX86_BUILTIN_PHSUBD256, IX86_BUILTIN_PHSUBSW256,
      	IX86_BUILTIN_PMADDUBSW256, IX86_BUILTIN_PMADDWD256,
      	IX86_BUILTIN_PMAXSB256, IX86_BUILTIN_PMAXSW256,
      	IX86_BUILTIN_PMAXSD256, IX86_BUILTIN_PMAXUB256,
      	IX86_BUILTIN_PMAXUW256, IX86_BUILTIN_PMAXUD256,
      	IX86_BUILTIN_PMINSB256, IX86_BUILTIN_PMINSW256,
      	IX86_BUILTIN_PMINSD256, IX86_BUILTIN_PMINUB256,
      	IX86_BUILTIN_PMINUW256, IX86_BUILTIN_PMINUD256,
      	IX86_BUILTIN_PMOVMSKB256, IX86_BUILTIN_PMOVSXBW256,
      	IX86_BUILTIN_PMOVSXBD256, IX86_BUILTIN_PMOVSXBQ256,
      	IX86_BUILTIN_PMOVSXWD256, IX86_BUILTIN_PMOVSXWQ256,
      	IX86_BUILTIN_PMOVSXDQ256, IX86_BUILTIN_PMOVZXBW256,
      	IX86_BUILTIN_PMOVZXBD256, IX86_BUILTIN_PMOVZXBQ256,
      	IX86_BUILTIN_PMOVZXWD256, IX86_BUILTIN_PMOVZXWQ256,
      	IX86_BUILTIN_PMOVZXDQ256, IX86_BUILTIN_PMULDQ256,
      	IX86_BUILTIN_PMULHRSW256, IX86_BUILTIN_PMULHUW256,
      	IX86_BUILTIN_PMULHW256, IX86_BUILTIN_PMULLW256,
      	IX86_BUILTIN_PMULLD256, IX86_BUILTIN_PMULUDQ256,
      	IX86_BUILTIN_POR256, IX86_BUILTIN_PSADBW256,
      	IX86_BUILTIN_PSHUFB256, IX86_BUILTIN_PSHUFD256,
      	IX86_BUILTIN_PSHUFHW256, IX86_BUILTIN_PSHUFLW256,
      	IX86_BUILTIN_PSIGNB256, IX86_BUILTIN_PSIGNW256,
      	IX86_BUILTIN_PSIGND256, IX86_BUILTIN_PSLLDQI256,
      	IX86_BUILTIN_PSLLWI256, IX86_BUILTIN_PSLLW256,
      	IX86_BUILTIN_PSLLDI256, IX86_BUILTIN_PSLLD256,
      	IX86_BUILTIN_PSLLQI256, IX86_BUILTIN_PSLLQ256,
      	IX86_BUILTIN_PSRAWI256, IX86_BUILTIN_PSRAW256,
      	IX86_BUILTIN_PSRADI256, IX86_BUILTIN_PSRAD256,
      	IX86_BUILTIN_PSRLDQI256, IX86_BUILTIN_PSRLWI256,
      	IX86_BUILTIN_PSRLW256, IX86_BUILTIN_PSRLDI256,
      	IX86_BUILTIN_PSRLD256, IX86_BUILTIN_PSRLQI256,
      	IX86_BUILTIN_PSRLQ256, IX86_BUILTIN_PSUBB256,
      	IX86_BUILTIN_PSUBW256, IX86_BUILTIN_PSUBD256,
      	IX86_BUILTIN_PSUBQ256, IX86_BUILTIN_PSUBSB256,
      	IX86_BUILTIN_PSUBSW256, IX86_BUILTIN_PSUBUSB256,
      	IX86_BUILTIN_PSUBUSW256, IX86_BUILTIN_PUNPCKHBW256,
      	IX86_BUILTIN_PUNPCKHWD256, IX86_BUILTIN_PUNPCKHDQ256,
      	IX86_BUILTIN_PUNPCKHQDQ256, IX86_BUILTIN_PUNPCKLBW256,
      	IX86_BUILTIN_PUNPCKLWD256, IX86_BUILTIN_PUNPCKLDQ256,
      	IX86_BUILTIN_PUNPCKLQDQ256, IX86_BUILTIN_PXOR256,
      	IX86_BUILTIN_VBROADCASTSS_PS, IX86_BUILTIN_VBROADCASTSS_PS256,
      	IX86_BUILTIN_VBROADCASTSD_PD256,
      	IX86_BUILTIN_VBROADCASTSI256, IX86_BUILTIN_PBLENDD256,
      	IX86_BUILTIN_PBLENDD128, IX86_BUILTIN_PBROADCASTB256,
      	IX86_BUILTIN_PBROADCASTW256, IX86_BUILTIN_PBROADCASTD256,
      	IX86_BUILTIN_PBROADCASTQ256, IX86_BUILTIN_PBROADCASTB128,
      	IX86_BUILTIN_PBROADCASTW128, IX86_BUILTIN_PBROADCASTD128,
      	IX86_BUILTIN_PBROADCASTQ128, IX86_BUILTIN_VPERMVARSI256,
      	IX86_BUILTIN_VPERMDF256, IX86_BUILTIN_VPERMVARSF256,
      	IX86_BUILTIN_VPERMDI256, IX86_BUILTIN_VPERMTI256,
      	IX86_BUILTIN_VEXTRACT128I256, IX86_BUILTIN_VINSERT128I256,
      	IX86_BUILTIN_PSLLVV4DI, IX86_BUILTIN_PSLLVV2DI,
      	IX86_BUILTIN_PSLLVV8SI, IX86_BUILTIN_PSLLVV4SI,
      	IX86_BUILTIN_PSRAVV8SI, IX86_BUILTIN_PSRAVV4SI,
      	IX86_BUILTIN_PSRLVV4DI, IX86_BUILTIN_PSRLVV2DI,
      	IX86_BUILTIN_PSRLVV8SI, IX86_BUILTIN_PSRLVV4SI.
      	(ix86_init_mmx_sse_builtins): Add 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_preferred_simd_mode): Support AVX2 modes.
      	(ix86_expand_args_builtin): Support AVX2 built-ins.
      	(ix86_expand_special_args_builtin): Likewise.
      	(ix86_expand_builtin): Likewise.
      	* config/i386/i386.md (UNSPEC_VPERMSI): New.
      	(UNSPEC_VPERMDF): Likewise.
      	(UNSPEC_VPERMSF): Likewise.
      	(UNSPEC_VPERMDI): Likewise.
      	(UNSPEC_VPERMTI): Likewise.
      	(UNSPEC_GATHER): Likewise.
      	(ssemodesuffix): Extend.
      	* config/i386/immintrin.h: Include avx2intrin.h when __AVX2__
      	is defined.
      	* config/i386/predicates.md (const1248_operand): New.
      	* config/i386/sse.md (VI_AVX2):
      	(VI1_AVX2): Likewise.
      	(VI2_AVX2): Likewise.
      	(VI4_AVX2): Likewise.
      	(VI8_AVX2): Likewise.
      	(VIMAX_AVX2): Likewise.
      	(SSESCALARMODE): Likewise.
      	(VI12_AVX2): Likewise.
      	(VI24_AVX2): Likewise.
      	(VI124_AVX2): Likeuse_submit_for_speed = 1
      	wise.
      	(VI248_AVX2): Likewise.
      	(VI48_AVX2): Likewise.
      	(VI4SD_AVX2): Likewise.
      	(V48_AVX2): Likewise.
      	(avx2modesuffix): Likewise.
      	(sse_avx2): Likewise.
      	(sse2_avx2): Likewise.
      	(ssse3_avx2): Likewise.
      	(sse4_1_avx2): Likewise.
      	(avx_avx2): Likewise.
      	(lshift)<code_oterator>: Likewise.
      	(lshift_insn): Likewise.
      	(lshift)<code_attr>: Likewise.
      	(SSESHORTMODE): Likewise.
      	(SSELONGMODE): Likewise.
      	(SSEBYTEMODE): Likewise.
      	(AVXTOSSEMODE): Likewise.
      	(shortmode): Likewise.
      	(ssescalarmodesuffix): Update.
      	(sseunpackmode): Likewise.
      	(ssepackmode): Likewise.
      	(AVX256MODEI): New.
      	(AVX256MODE124): Likewise.
      	(AVX256MODE1248): Likewise.
      	(AVX256MODE248): Likewise.
      	(AVXMODE48P_SI): Likewise.
      	(AVXMODE48P_SI): Likewise.
      	(AVXMODE48P_DI): Likewise.
      	(AVXMODE48P_DI): Likewise.
      	(gthrfirstp): Likewise.
      	(gthrlastp): Likewise.
      	(avx2): Likwise.
      	(ssevecsize): Likewise.
      	(ssedoublesizemode): Likewise.
      	(avxvecmode): Likewise.
      	(avxvecsize): Likewise.
      	(avxhalfvecmode): Likewise.
      	(avxscalarmode): Likewise.
      	(avxpermvecmode): Likewise.
      	(avxmodesuffixp): Likewise.
      	(avxmodesuffix): Likewise.
      	(avx2_vec_dupv4sf): New.
      	(avx2_vec_dupv8sf): Likewise.
      	(avx2_interleave_highv4di): Likewise.
      	(avx2_interleave_lowv4di): Likewise.
      	(<plusminus_insn><mode>3): Update.
      	(*<plusminus_insn><mode>3): Likewise.
      	(sse2_<plusminus_insn><mode>3): Rename to ...
      	("<sse2_avx2>_<plusminus_insn><mode>3): ... this. updated.
      	(*sse2_<plusminus_insn><mode>3): Likewise.
      	(*<sse2_avx2>_<plusminus_insn><mode>3): Likewise.
      	(mulv8hi3): Likewise.
      	(mul<mode>3): Likewise.
      	(*mulv8hi3): Likewise.
      	(*mul<mode>3): Likewise.
      	(<s>mulv8hi3_highpart): Likewise.
      	(<s>mul<mode>3_highpart): Likewise.
      	(*<s>mulv8hi3_highpart): Likewise.
      	(*<s>mul<mode>3_highpart): Likewise.
      	(avx2_umulv4siv4di3): Likewise.
      	(*avx_umulv4siv4di3): Likewise.
      	(sse4_1_mulv2siv2di3): Likewise.
      	(<sse4_1_avx2>_mul<shortmode><mode>3): Likewise.
      	(*sse4_1_mulv2siv2di3): Likewise.
      	(*<sse4_1_avx2>_mulv2siv2di3): Likewise.
      	(avx2_pmaddwd): New.
      	(*avx2_pmaddwd): Likewise.
      	(mulv4si3): Rename to ...
      	(mul<mode>3): ... this. Update.
      	(*sse4_1_mulv4si3): Likewise.
      	(*<sse4_1_avx2>_mul<mode>3): Likewise.
      	(ashr<mode>3): Update.
      	(avx2_lshrqv4di3): New.
      	(lshr<mode>3): Update.
      	(avx2_lshlqv4di3): New.
      	(avx2_lshl<mode>3): Likewise.
      	(sse2_ashlv1ti3): Rename to ...
      	(<sse2_avx2>_ashl<mode>3): ... this. Update.
      	(avx2_<code><mode>3)<umaxmin>: New.
      	(*avx2_<code><mode>3)<umaxmin>: Likewise.
      	(avx2_<code><mode>3)<smaxmin>: New.
      	(*avx2_<code><mode>3)<smaxmin>: Likewise.
      	(avx2_eq<mode>3): Likewise.
      	(*avx2_eq<mode>3): Likewise.
      	(avx2_gt<mode>3): Likewise.
      	(sse2_andnot<mode>3): Rename to ...
      	(<sse2_avx2>_andnot<mode>3): ... this. Update.
      	(*andnot<mode>3): Update.
      	(<code><mode>3)<any_logic>: Update.
      	(*<code><mode>3)<any_logic>: Likewise.
      	(sse2_packsswb): Rename to ...
      	(<sse2_avx2>_packsswb): ... this. Update.
      	(sse2_packssdw): Likewise.
      	(<sse2_avx2>_packssdw): Likewise.
      	(sse2_packuswb): Likewise.
      	(<sse2_avx2>_packuswb): Likewise.
      	(avx2_interleave_highv32qi): New.
      	(avx2_interleave_lowv32qi): Likewise.
      	(avx2_interleave_highv16hi): Likewise.
      	(avx2_interleave_lowv16hi): Likewise.
      	(avx2_interleave_highv8si): Likewise.
      	(avx2_interleave_lowv8si): Likewise.
      	(avx2_pshufd): New
      	(avx2_pshufd_1): Likewise.
      	(avx2_pshuflwv3): Likewise.
      	(avx2_pshuflw_1): Likewise.
      	(avx2_pshufhwv3): Likewise.
      	(avx2_pshufhw_1): Likewise.
      	(avx2_uavgv32qi3): Likewise.
      	(*avx2_uavgv32qi3): Likewise.
      	(avx2_uavgv16hi3): Likewise.
      	(*avx2_uavgv16hi3): Likewise.
      	(sse2_psadbw): Rename to ...
      	(<sse2_avx2>_psadbw): ... this. Update.
      	(avx2_pmovmskb): New.
      	(avx2_phaddwv16hi3): Likewise.
      	(avx2_phadddv8si3): Likewise.
      	(avx2_phaddswv16hi3): Likewise.
      	(avx2_phsubwv16hi3): Likewise.
      	(avx2_phsubdv8si3): Likewise.
      	(avx2_phsubswv16hi3): Likewise.
      	(avx2_pmaddubsw256): Likewise.
      	(avx2_umulhrswv16hi3): Likewise.
      	(*avx2_umulhrswv16hi3): Likewise.
      	(ssse3_pshufbv16qi3): Rename to ...
      	(<ssse3_avx2>_pshufb<mode>3): ... this. Update.
      	(ssse3_psign<mode>3): Likewise.
      	(<ssse3_avx2>_psign<mode>3): Likewise.
      	(ssse3_palignrti): Likewise.
      	(<ssse3_avx2>_palignr<mode>): Likewise.
      	(abs<mode>2): Likewise.
      	(sse4_1_movntdqa): Rename to ...
      	(<sse4_1_avx2>_movntdqa): ... this. Update.
      	(sse4_1_mpsadbw): Likewise.
      	(<sse4_1_avx2>_mpsadbw): Likewise.
      	(avx2_packusdw): New.
      	(sse4_1_pblendvb): Rename to ...
      	(<sse4_1_avx2>_pblendvb): ... this. Update.
      	(sse4_1_pblendw): Likewise.
      	(<sse4_1_avx2>_pblendw): Likewise.
      	(avx2_pblendd<mode>): New.
      	(avx2_<code>v16qiv16hi2): Likewise.
      	(avx2_<code>v8qiv8si2): Likewise.
      	(avx2_<code>v8hiv8si2): Likewise.
      	(avx2_<code>v4qiv4di2): Likewise.
      	(avx2_<code>v4hiv4di2): Likewise.
      	(avx2_<code>v4siv4di2): Likewise.
      	(avx2_pbroadcast<mode>): Likewise.
      	(avx2_permvarv8si): Likewise.
      	(avx2_permv4df): Likewise.
      	(avx2_permvarv8sf): Likewise.
      	(avx2_permv4di): Likewise.
      	(avx2_permv2ti): Likewise.
      	(avx2_vec_dupv4df): Likewise.
      	(avx2_vbroadcasti128_<mode>): Likewise.
      	(avx2_vec_set_lo_v4di): Likewise.
      	(avx2_vec_set_hi_v4di): Likewise.
      	(avx_maskload<ssemodesuffix><avxsizesuffix>): Rename to ...
      	(<avx_avx2>_maskload<avx2modesuffix><avxmodesuffix>): ... this.
      	Update.
      	(avx_maskstore<ssemodesuffix><avxsizesuffix>): Likewise.
      	(<avx_avx2>_maskstore<avx2modesuffix><avxmodesuffix>): Likewise.
      	(*avx2_maskmov<avx2modesuffix><avxmodesuffix>): New.
      	(avx2_extracti128): Likewise.
      	(avx2_inserti128): Likewise.
      	(avx2_ashrvv8si): Likewise.
      	(avx2_ashrvv4si): Likewise.
      	(avx2_<lshift>vv8si): Likewise.
      	(avx2_<lshift>v<mode>): Likewise.
      	(avx2_<lshift>vv2di): Likewise.
      	(avx2_gathersi<mode>): Likewise.
      	(*avx2_gathersi<mode>): Likewise.
      	(avx2_gatherdi<mode>): Likewise.
      	(*avx2_gatherdi<mode>): Likewise.
      	(avx2_gatherdi<mode>256): Likewise.
      	(*avx2_gatherdi<mode>256): Likewise.
      	* doc/extend.texi: Document AVX2 built-in functions.
      	* doc/invoke.texi: Document -mavx2.
      
      From-SVN: r177955
      Kirill Yukhin committed
    • pr49994-2.c: Add dg-require-effective-target scheduling. · bdb7daeb
      	
      	* gcc.dg/pr49994-2.c: Add dg-require-effective-target scheduling.
      	* gcc.dg/pr49994-3.c: Ditto.
      
      From-SVN: r177954
      Georg-Johann Lay committed
    • revert: t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if tm_defines contains… · 1ad1ae80
      revert: t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if tm_defines contains MIPS_ABI_DEFAULT ABI_32...
      
      2011-08-22  Matthias Klose <doko@debian.org>
      
              Revert:
              2011-07-11  Arthur Loiret  <aloiret@debian.org>
                          Matthias Klose <doko@debian.org>
              * config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if
              tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc
              convention.
              * config.gcc (tm_defines): Add MIPS_ABI_DEFAULT=ABI_32.
      
      From-SVN: r177953
      Matthias Klose committed
    • re PR middle-end/50145 (FAIL: gcc.dg/torture/pr50067-*.c -O* execution test on powerpc*-*-*) · ed90b673
      2011-08-22  Richard Guenther  <rguenther@suse.de>
      
      	PR testsuite/50145
      	* gcc.dg/torture/pr50067-1.c: Run on little-endian systems only.
      	* gcc.dg/torture/pr50067-2.c: Likewise.
      
      From-SVN: r177952
      Richard Guenther committed
    • re PR bootstrap/50146 (unused variable saved_nregs in ira-color.c broke… · fbddb81d
      re PR bootstrap/50146 (unused variable saved_nregs in ira-color.c broke arm-linux-gnueabi bootstrap)
      
      	PR bootstrap/50146
      	* ira-color.c (assign_hard_reg): Move saved_nregs declaration
      	to #ifndef HONOR_REG_ALLOC_ORDER block.
      
      From-SVN: r177951
      Mikael Pettersson committed
    • Daily bump. · ba259d52
      From-SVN: r177949
      GCC Administrator committed
  2. 21 Aug, 2011 8 commits
  3. 20 Aug, 2011 11 commits
  4. 19 Aug, 2011 15 commits
    • re PR fortran/50129 (ICE on where statement) · 176a6603
      2011-08-19  Mikael Morin  <mikael.morin@sfr.fr>
      
      	PR fortran/50129
      	* parse.c (parse_where): Undo changes after emitting an error. 
      
      2011-08-19  Mikael Morin  <mikael.morin@sfr.fr>
      
      	PR fortran/50129
      	* gfortran.dg/where_3.f90: New test.
      
      From-SVN: r177918
      Mikael Morin committed
    • re PR rtl-optimization/49936 (IRA handles CANNOT_CHANGE_MODE_CLASS poorly, +… · 3bb19a90
      re PR rtl-optimization/49936 (IRA handles CANNOT_CHANGE_MODE_CLASS poorly, + spills to memory on 4.7)
      
      2011-08-19  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/49936
      	* ira.c (ira_init_register_move_cost): Ignore too small subclasses
      	for calculation of max register move costs.
      
      From-SVN: r177916
      Vladimir Makarov committed
    • c-parser.c (c_parser_postfix_expression): Convert operands of __builtin_complex… · 02ee3d31
      c-parser.c (c_parser_postfix_expression): Convert operands of __builtin_complex to their semantic types.
      
      	* c-parser.c (c_parser_postfix_expression): Convert operands of
      	__builtin_complex to their semantic types.
      
      From-SVN: r177915
      Joseph Myers committed
    • Permute conversion and addition of constant for zero-extend. · 54f6892e
      gcc/
      
      2011-08-19  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR middle-end/49721
      	* explow.c (convert_memory_address_addr_space): Also permute the
      	conversion and addition of constant for zero-extend.
      
      gcc/testsuite/
      
      2011-08-19  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR middle-end/49721
      	* gfortran.dg/pr49721-1.f: New.
      	* gfortran.fortran-torture/compile/pr49721-1.f: Likewise.
      
      From-SVN: r177914
      H.J. Lu committed
    • c-parser.c (c_parser_postfix_expression): Handle RID_BUILTIN_COMPLEX. · d4a83c10
      	* c-parser.c (c_parser_postfix_expression): Handle
      	RID_BUILTIN_COMPLEX.
      	* doc/extend.texi (__builtin_complex): Document.
      
      c-family:
      	* c-common.c (c_common_reswords): Add __builtin_complex.
      	* c-common.h (RID_BUILTIN_COMPLEX): New.
      
      testsuite:
      	* gcc.dg/builtin-complex-err-1.c, gcc.dg/builtin-complex-err-2.c,
      	gcc.dg/dfp/builtin-complex.c, gcc.dg/torture/builtin-complex-1.c:
      	New tests.
      
      From-SVN: r177911
      Joseph Myers committed
    • tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants beyond conversions. · a6f969f4
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (is_widening_mult_rhs_p): Handle constants
      	beyond conversions.
      	(convert_mult_to_widen): Convert constant inputs to the right type.
      	(convert_plusminus_to_widen): Don't automatically reject inputs that
      	are not an SSA_NAME.
      	Convert constant inputs to the right type.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-11.c: New file.
      	* gcc.target/arm/wmul-12.c: New file.
      	* gcc.target/arm/wmul-13.c: New file.
      
      From-SVN: r177910
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs to the correct type. · 75161d2c
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Convert add_rhs
      	to the correct type.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-10.c: New file.
      
      From-SVN: r177909
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (convert_mult_to_widen): Better handle unsigned inputs of different modes. · 6a228c2c
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (convert_mult_to_widen): Better handle
      	unsigned inputs of different modes.
      	(convert_plusminus_to_widen): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-9.c: New file.
      	* gcc.target/arm/wmul-bitfield-2.c: New file.
      
      From-SVN: r177908
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument 'type'. · 26a855d7
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (is_widening_mult_rhs_p): Add new argument
      	'type'.
      	Use 'type' from caller, not inferred from 'rhs'.
      	Don't reject non-conversion statements. Do return lhs in this case.
      	(is_widening_mult_p): Add new argument 'type'.
      	Use 'type' from caller, not inferred from 'stmt'.
      	Pass type to is_widening_mult_rhs_p.
      	(convert_mult_to_widen): Pass type to is_widening_mult_p.
      	(convert_plusminus_to_widen): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-8.c: New file.
      
      From-SVN: r177907
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME. · ff63d754
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (is_widening_mult_p): Remove FIXME.
      	Ensure the the larger type is the first operand.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-7.c: New file.
      
      From-SVN: r177906
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (convert_mult_to_widen): Convert unsupported unsigned multiplies to signed. · db719f50
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (convert_mult_to_widen): Convert
      	unsupported unsigned multiplies to signed.
      	(convert_plusminus_to_widen): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-6.c: New file.
      
      From-SVN: r177905
      Andrew Stubbs committed
    • tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single conversion… · cefb4d4f
      tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single conversion statement separating multiply-and-accumulate.
      
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* tree-ssa-math-opts.c (convert_plusminus_to_widen): Permit a single
      	conversion statement separating multiply-and-accumulate.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-5.c: New file.
      	* gcc.target/arm/no-wmla-1.c: New file.
      
      From-SVN: r177904
      Andrew Stubbs committed
    • re PR tree-optimization/50067 (Wrong code with -fpredictive-commoning) · 2946bd34
      2011-08-19  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/50067
      	* tree-data-ref.c (dr_analyze_indices): Simplify, strip MEM_REF
      	offset only if we accounted for it.
      
      From-SVN: r177903
      Richard Guenther committed
    • arm.md (maddhidi4): Remove '*' from name. · 5dfe80ba
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/arm/arm.md (maddhidi4): Remove '*' from name.
      	* expr.c (expand_expr_real_2): Use find_widening_optab_handler.
      	* optabs.c (find_widening_optab_handler_and_mode): New function.
      	(expand_widen_pattern_expr): Use find_widening_optab_handler.
      	(expand_binop_directly): Likewise.
      	(expand_binop): Likewise.
      	* optabs.h (find_widening_optab_handler): New macro define.
      	(find_widening_optab_handler_and_mode): New prototype.
      	* tree-cfg.c (verify_gimple_assign_binary): Adjust WIDEN_MULT_EXPR
      	type precision rules.
      	(verify_gimple_assign_ternary): Likewise for WIDEN_MULT_PLUS_EXPR.
      	* tree-ssa-math-opts.c (build_and_insert_cast): New function.
      	(is_widening_mult_rhs_p): Allow widening by more than one mode.
      	Explicitly disallow mis-matched input types.
      	(convert_mult_to_widen): Use find_widening_optab_handler, and cast
      	input types to fit the new handler.
      	(convert_plusminus_to_widen): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/arm/wmul-bitfield-1.c: New file.
      
      From-SVN: r177902
      Andrew Stubbs committed
    • expr.c (expand_expr_real_2): Use widening_optab_handler. · a484f6ba
      2011-08-19  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* expr.c (expand_expr_real_2): Use widening_optab_handler.
      	* genopinit.c (optabs): Use set_widening_optab_handler for $N.
      	(gen_insn): $N now means $a must be wider than $b, not consecutive.
      	* optabs.c (widened_mode): New function.
      	(expand_widen_pattern_expr): Use widening_optab_handler.
      	(expand_binop_directly): Likewise.
      	(expand_binop): Likewise.
      	* optabs.h (widening_optab_handlers): New struct.
      	(optab_d): New member, 'widening'.
      	(widening_optab_handler): New function.
      	(set_widening_optab_handler): New function.
      	* tree-ssa-math-opts.c (convert_mult_to_widen): Use
      	widening_optab_handler.
      	(convert_plusminus_to_widen): Likewise.
      
      From-SVN: r177901
      Andrew Stubbs committed