public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, testsuite, i386] AVX2 support for GCC
@ 2011-08-04  9:28 Kirill Yukhin
  2011-08-04  9:50 ` Jakub Jelinek
  0 siblings, 1 reply; 28+ messages in thread
From: Kirill Yukhin @ 2011-08-04  9:28 UTC (permalink / raw)
  To: gcc-patches List; +Cc: Uros Bizjak, H.J. Lu, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 763 bytes --]

Hi guys,
During last few months I was working on AVX2 support for GCC.

Here is a patch which conforms (hopefully) to Spec which can be found at [1]

I am attaching following files:
 - avx2.gcc.patch.tar.bz2. Compressed changes to GCC
 - ChangeLog. Entry for ChangeLog in GCC's root directory
 - ChangeLog.testsuite. Entry for ChangeLog in GCC's test suite
 - opt64.tmp.gcc.patch. Since we have exceeded number of possible keys
in ix86_isa_flags this temporary patch allows AVX2 changes to work.
Fix for that issue will come in a few days

Bootstrap is passed
Make-check shows no new fails, my compile-time new tests are passed
Make-check under simulator causes all my new tests to pass

Is it OK for trunk?

[1] - http://software.intel.com/file/36945

Thanks, K

[-- Attachment #2: avx2.gcc.patch.tar.bz2 --]
[-- Type: application/x-bzip2, Size: 42979 bytes --]

[-- Attachment #3: ChangeLog --]
[-- Type: application/octet-stream, Size: 18394 bytes --]

2011-08-02  Kirill Yukhin  <kirill.yukhin@intel.com>

	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX2_SET): New.
	(OPTION_MASK_ISA_FMA_UNSET): Update.
	(OPTION_MASK_ISA_AVX2_UNSET): New.
	(ix86_handle_option): Handle OPT_mavx2 case.
	* config.gcc (i[34567]86-*-*): Add avx2intrin.h.
	(x86_64-*-*): Likewise.
	* config/i386/avx2intrin.h: New file.
	* config/i386/cpuid.h (bit_AVX2): New.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect
	AVX2 feature.
	* 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.c (ix86_target_macros_internal): Define
	__AVX2_ if needed.
	* config/i386/i386.c (ix86_option_override_internal): Handle
	AVX2 option, define new processor alias - "core-avx2".
	(ix86_valid_target_attribute_inner_p): Likewise.
	(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_expand_args_builtin): Support AVX2 built-ins.
	(ix86_expand_special_args_builtin): Likewise.
	(ix86_expand_builtin): Likewise.
	* config/i386/i386.h (TARGET_AVX2): New.
	* config/i386/i386.md (UNSPEC_VPERMSI): New.
	(UNSPEC_VPERMDF): Likewise.
	(UNSPEC_VPERMSF): Likewise.
	(UNSPEC_VPERMDI): Likewise.
	(UNSPEC_VPERMTI): Likewise.
	(UNSPEC_GATHER): Likewise.
	* config/i386/i386.opt (mavx2): New.
	* 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.

	(fma_fmadd_<mode>): Fixed typo.
	(fma_fmsub_<mode>): Likewise.
	(fma_fnmadd_<mode>): Likewise.
	(fma_fnmsub_<mode>): 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.

[-- Attachment #4: ChangeLog.testsuite --]
[-- Type: application/octet-stream, Size: 19459 bytes --]

2011-08-02  Kirill Yukhin  <kirill.yukhin@intel.com>

	* g++.dg/other/i386-2.C: Add -mavx2 check.
	* g++.dg/other/i386-3.C: Likewise.
	* gcc.dg/vect/vect-104.c: Update.
	* gcc.target/i386/avx-1.c: Add AVX2.
	* gcc.target/i386/avx-2.c: Likewise.
	* gcc.target/i386/funcspec-5.c: Likewise.
	* gcc.target/i386/sse-12.c: Likewise.
	* gcc.target/i386/i386.exp (check_effective_target_avx2): Likewise.
	* gcc.target/i386/avx2-check.h: New.
	* gcc.target/i386/avx2-i32gatherd-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd256-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd256-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd256-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherd256-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd256-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd256-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd256-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherpd256-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps256-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps256-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps256-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherps256-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq-4.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq256-1.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq256-2.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq256-3.c: Likewise.
	* gcc.target/i386/avx2-i32gatherq256-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd256-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd256-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd256-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherd256-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd256-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd256-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd256-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherpd256-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps256-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps256-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps256-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherps256-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq-4.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq256-1.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq256-2.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq256-3.c: Likewise.
	* gcc.target/i386/avx2-i64gatherq256-4.c: Likewise.
	* gcc.target/i386/avx2-mpsadbw-1.c: Likewise.
	* gcc.target/i386/avx2-mpsadbw-2.c: Likewise.
	* gcc.target/i386/avx2-mpsadbw-3.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastsd_pd-1.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastsi128-1.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps-1.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps256-1.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
	* gcc.target/i386/avx2-vextracti128-1.c: Likewise.
	* gcc.target/i386/avx2-vextracti128-2.c: Likewise.
	* gcc.target/i386/avx2-vextracti128-3.c: Likewise.
	* gcc.target/i386/avx2-vinserti128-1.c: Likewise.
	* gcc.target/i386/avx2-vinserti128-2.c: Likewise.
	* gcc.target/i386/avx2-vinserti128-3.c: Likewise.
	* gcc.target/i386/avx2-vmovmskb-2.c: Likewise.
	* gcc.target/i386/avx2-vmovntdqa-1.c: Likewise.
	* gcc.target/i386/avx2-vmovntdqa-2.c: Likewise.
	* gcc.target/i386/avx2-vpabsb256-1.c: Likewise.
	* gcc.target/i386/avx2-vpabsb256-2.c: Likewise.
	* gcc.target/i386/avx2-vpabsd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpabsd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpabsw256-1.c: Likewise.
	* gcc.target/i386/avx2-vpabsw256-2.c: Likewise.
	* gcc.target/i386/avx2-vpackssdw-1.c: Likewise.
	* gcc.target/i386/avx2-vpackssdw-2.c: Likewise.
	* gcc.target/i386/avx2-vpacksswb-1.c: Likewise.
	* gcc.target/i386/avx2-vpacksswb-2.c: Likewise.
	* gcc.target/i386/avx2-vpackusdw-1.c: Likewise.
	* gcc.target/i386/avx2-vpackusdw-2.c: Likewise.
	* gcc.target/i386/avx2-vpackuswb-1.c: Likewise.
	* gcc.target/i386/avx2-vpackuswb-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddb-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddb-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddd-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddd-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddq-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddq-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddsb-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddsb-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddusb-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddusb-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddusw-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddusw-2.c: Likewise.
	* gcc.target/i386/avx2-vpaddw-1.c: Likewise.
	* gcc.target/i386/avx2-vpaddw-2.c: Likewise.
	* gcc.target/i386/avx2-vpalignr256-1.c: Likewise.
	* gcc.target/i386/avx2-vpalignr256-2.c: Likewise.
	* gcc.target/i386/avx2-vpalignr256-3.c: Likewise.
	* gcc.target/i386/avx2-vpand-1.c: Likewise.
	* gcc.target/i386/avx2-vpand-2.c: Likewise.
	* gcc.target/i386/avx2-vpandn-1.c: Likewise.
	* gcc.target/i386/avx2-vpandn-2.c: Likewise.
	* gcc.target/i386/avx2-vpavgb-1.c: Likewise.
	* gcc.target/i386/avx2-vpavgb-2.c: Likewise.
	* gcc.target/i386/avx2-vpavgw-1.c: Likewise.
	* gcc.target/i386/avx2-vpavgw-2.c: Likewise.
	* gcc.target/i386/avx2-vpblendd128-1.c: Likewise.
	* gcc.target/i386/avx2-vpblendd128-2.c: Likewise.
	* gcc.target/i386/avx2-vpblendd128-3.c: Likewise.
	* gcc.target/i386/avx2-vpblendd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpblendd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpblendd256-3.c: Likewise.
	* gcc.target/i386/avx2-vpblendvb-1.c: Likewise.
	* gcc.target/i386/avx2-vpblendvb-2.c: Likewise.
	* gcc.target/i386/avx2-vpblendw-1.c: Likewise.
	* gcc.target/i386/avx2-vpblendw-2.c: Likewise.
	* gcc.target/i386/avx2-vpblendw-3.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastb128-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastb128-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastb256-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastb256-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastd128-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastd128-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastq128-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastq128-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastq256-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastw128-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastw128-2.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastw256-1.c: Likewise.
	* gcc.target/i386/avx2-vpbroadcastw256-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqb-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqb-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqd-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqd-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqq-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqq-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqw-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpeqw-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtb-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtb-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtd-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtd-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtq-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtq-2.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtw-1.c: Likewise.
	* gcc.target/i386/avx2-vpcmpgtw-2.c: Likewise.
	* gcc.target/i386/avx2-vperm2i128-1.c: Likewise.
	* gcc.target/i386/avx2-vperm2i128-2.c: Likewise.
	* gcc.target/i386/avx2-vperm2i128-3.c: Likewise.
	* gcc.target/i386/avx2-vpermd-1.c: Likewise.
	* gcc.target/i386/avx2-vpermd-2.c: Likewise.
	* gcc.target/i386/avx2-vpermpd-1.c: Likewise.
	* gcc.target/i386/avx2-vpermpd-2.c: Likewise.
	* gcc.target/i386/avx2-vpermpd-3.c: Likewise.
	* gcc.target/i386/avx2-vpermps-1.c: Likewise.
	* gcc.target/i386/avx2-vpermps-2.c: Likewise.
	* gcc.target/i386/avx2-vpermq-1.c: Likewise.
	* gcc.target/i386/avx2-vpermq-2.c: Likewise.
	* gcc.target/i386/avx2-vpermq-3.c: Likewise.
	* gcc.target/i386/avx2-vphaddd-1.c: Likewise.
	* gcc.target/i386/avx2-vphaddd-2.c: Likewise.
	* gcc.target/i386/avx2-vphaddsw-1.c: Likewise.
	* gcc.target/i386/avx2-vphaddsw-2.c: Likewise.
	* gcc.target/i386/avx2-vphaddw-1.c: Likewise.
	* gcc.target/i386/avx2-vphaddw-2.c: Likewise.
	* gcc.target/i386/avx2-vphsubd-1.c: Likewise.
	* gcc.target/i386/avx2-vphsubd-2.c: Likewise.
	* gcc.target/i386/avx2-vphsubsw-1.c: Likewise.
	* gcc.target/i386/avx2-vphsubsw-2.c: Likewise.
	* gcc.target/i386/avx2-vphsubw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaddubsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaddubsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaddwd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaddwd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadq256-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstored-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstored-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstored256-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstored256-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstoreq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstoreq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstoreq256-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsb-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsb-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxub-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxub-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxud-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxud-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaxuw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmaxuw-2.c: Likewise.
	* gcc.target/i386/avx2-vpminsb-1.c: Likewise.
	* gcc.target/i386/avx2-vpminsb-2.c: Likewise.
	* gcc.target/i386/avx2-vpminsd-1.c: Likewise.
	* gcc.target/i386/avx2-vpminsd-2.c: Likewise.
	* gcc.target/i386/avx2-vpminsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpminsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpminub-1.c: Likewise.
	* gcc.target/i386/avx2-vpminub-2.c: Likewise.
	* gcc.target/i386/avx2-vpminud-1.c: Likewise.
	* gcc.target/i386/avx2-vpminud-2.c: Likewise.
	* gcc.target/i386/avx2-vpminuw-1.c: Likewise.
	* gcc.target/i386/avx2-vpminuw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovmskb-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxbw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxdq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxdq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxwd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxwd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxwq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovsxwq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxbw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxdq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxdq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxwd-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxwd-2.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxwq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmovzxwq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmuldq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmuldq-2.c: Likewise.
	* gcc.target/i386/avx2-vpmulhrsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmulhrsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmulhuw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmulhuw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmulhw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmulhw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmulld-1.c: Likewise.
	* gcc.target/i386/avx2-vpmulld-2.c: Likewise.
	* gcc.target/i386/avx2-vpmullw-1.c: Likewise.
	* gcc.target/i386/avx2-vpmullw-2.c: Likewise.
	* gcc.target/i386/avx2-vpmuludq-1.c: Likewise.
	* gcc.target/i386/avx2-vpmuludq-2.c: Likewise.
	* gcc.target/i386/avx2-vpor-1.c: Likewise.
	* gcc.target/i386/avx2-vpor-2.c: Likewise.
	* gcc.target/i386/avx2-vpsadbw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsadbw-2.c: Likewise.
	* gcc.target/i386/avx2-vpshufb-1.c: Likewise.
	* gcc.target/i386/avx2-vpshufb-2.c: Likewise.
	* gcc.target/i386/avx2-vpshufd-1.c: Likewise.
	* gcc.target/i386/avx2-vpshufd-2.c: Likewise.
	* gcc.target/i386/avx2-vpshufd-3.c: Likewise.
	* gcc.target/i386/avx2-vpshufhw-1.c: Likewise.
	* gcc.target/i386/avx2-vpshufhw-2.c: Likewise.
	* gcc.target/i386/avx2-vpshufhw-3.c: Likewise.
	* gcc.target/i386/avx2-vpshuflw-1.c: Likewise.
	* gcc.target/i386/avx2-vpshuflw-2.c: Likewise.
	* gcc.target/i386/avx2-vpshuflw-3.c: Likewise.
	* gcc.target/i386/avx2-vpsignb-1.c: Likewise.
	* gcc.target/i386/avx2-vpsignb-2.c: Likewise.
	* gcc.target/i386/avx2-vpsignd-1.c: Likewise.
	* gcc.target/i386/avx2-vpsignd-2.c: Likewise.
	* gcc.target/i386/avx2-vpsignw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsignw-2.c: Likewise.
	* gcc.target/i386/avx2-vpslld-1.c: Likewise.
	* gcc.target/i386/avx2-vpslld-2.c: Likewise.
	* gcc.target/i386/avx2-vpslldi-1.c: Likewise.
	* gcc.target/i386/avx2-vpslldi-2.c: Likewise.
	* gcc.target/i386/avx2-vpslldq-1.c: Likewise.
	* gcc.target/i386/avx2-vpslldq-2.c: Likewise.
	* gcc.target/i386/avx2-vpslldq-3.c: Likewise.
	* gcc.target/i386/avx2-vpsllq-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllq-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllqi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllqi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllvd128-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllvd128-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllvd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllvd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllvq128-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllvq128-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllvq256-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllvq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllw-2.c: Likewise.
	* gcc.target/i386/avx2-vpsllwi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsllwi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrad-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrad-2.c: Likewise.
	* gcc.target/i386/avx2-vpsradi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsradi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsravd128-1.c: Likewise.
	* gcc.target/i386/avx2-vpsravd128-2.c: Likewise.
	* gcc.target/i386/avx2-vpsravd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpsravd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpsraw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsraw-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrawi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrawi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrld-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrld-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrldi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrldi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrldq-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrldq-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrldq-3.c: Likewise.
	* gcc.target/i386/avx2-vpsrlq-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlq-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlqi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlqi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvd128-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvd128-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvd256-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvd256-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvq128-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvq128-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvq256-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlvq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlw-2.c: Likewise.
	* gcc.target/i386/avx2-vpsrlwi-1.c: Likewise.
	* gcc.target/i386/avx2-vpsrlwi-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubb-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubb-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubd-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubd-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubq-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubq-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubsb-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubsb-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubsw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubsw-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubusb-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubusb-2.c: Likewise.
	* gcc.target/i386/avx2-vpsubusw-1.c: Likewise.
	* gcc.target/i386/avx2-vpsubusw-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhbw-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhbw-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhdq-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhdq-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhqdq-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhqdq-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhwd-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpckhwd-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklbw-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklbw-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpckldq-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpckldq-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklqdq-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklqdq-2.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklwd-1.c: Likewise.
	* gcc.target/i386/avx2-vpunpcklwd-2.c: Likewise.
	* gcc.target/i386/avx2-vpxor-1.c: Likewise.
	* gcc.target/i386/avx2-vpxor-2.c: Likewise.

[-- Attachment #5: opt64.tmp.gcc.patch --]
[-- Type: application/octet-stream, Size: 856 bytes --]

diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index 3cfc812..a629eca 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -24,7 +24,7 @@ config/i386/i386-opts.h
 
 ; Bit flags that specify the ISA we are compiling for.
 Variable
-int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
+long long int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
 
 ; A mask of ix86_isa_flags that includes bit X if X was set or cleared
 ; on the command line.
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 876e0f6..cd8a5fb 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -311,7 +311,7 @@ for (i = 0; i < n_extra_masks; i++) {
 }
 
 for (var in masknum) {
-	if (masknum[var] > 31) {
+	if (masknum[var] > 63) {
 		if (var == "")
 			print "#error too many target masks"
 		else

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2011-08-23 19:30 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CAGs3Rfvgm9F_rHpSdM61QGPLn=YeRzDnkVFOqDobTcw3RKdDLg@mail.gmail.com>
2011-08-06 11:09 ` [PATCH, testsuite, i386] AVX2 support for GCC Uros Bizjak
2011-08-09 11:58   ` Kirill Yukhin
2011-08-09 12:01     ` Uros Bizjak
2011-08-09 12:14       ` Kirill Yukhin
2011-08-09 13:38   ` Kirill Yukhin
2011-08-10 19:46     ` Uros Bizjak
2011-08-10 19:48       ` Uros Bizjak
2011-08-11 12:06         ` Kirill Yukhin
2011-08-19 11:39           ` Kirill Yukhin
2011-08-19 13:13             ` Kirill Yukhin
2011-08-19 21:59               ` Uros Bizjak
2011-08-22 14:07                 ` Kirill Yukhin
2011-08-22 14:17                   ` H.J. Lu
2011-08-22 14:17                     ` Kirill Yukhin
     [not found]                       ` <CAGs3RfvVbf9-7NennO5jVyxw49+DNE29YKjm=-MhgS19M-TREw@mail.gmail.com>
2011-08-23 11:23                         ` Kirill Yukhin
2011-08-23 12:02                           ` Kirill Yukhin
2011-08-23 12:27                             ` Uros Bizjak
2011-08-23 16:55                               ` Kirill Yukhin
2011-08-23 16:56                                 ` Uros Bizjak
2011-08-23 17:02                                   ` Kirill Yukhin
2011-08-23 17:36                                     ` Uros Bizjak
2011-08-23 18:06                                       ` Kirill Yukhin
2011-08-23 18:59                                         ` H.J. Lu
2011-08-23 19:57                                           ` Kirill Yukhin
2011-08-23 20:03                                             ` H.J. Lu
2011-08-04  9:28 Kirill Yukhin
2011-08-04  9:50 ` Jakub Jelinek
2011-08-04 11:06   ` Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).