This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r217932 - in /trunk/gcc: ChangeLog common/confi...


Author: tocarip
Date: Fri Nov 21 15:44:37 2014
New Revision: 217932

URL: https://gcc.gnu.org/viewcvs?rev=217932&root=gcc&view=rev
Log:
Add avx512vbmi instructions.

gcc/

	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI_SET
	OPTION_MASK_ISA_AVX512VBMI_UNSET): New.
	(ix86_handle_option): Handle OPT_mavx512vbmi.
	* config.gcc: Add avx512vbmiintrin.h, avx512vbmivlintrin.h.
	* config/i386/avx512vbmiintrin.h: New file.
	* config/i386/avx512vbmivlintrin.h: Ditto.
	* config/i386/cpuid.h (bit_AVX512VBMI): New.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect avx512vbmi.
	* config/i386/i386-c.c (ix86_target_macros_internal): Define
	__AVX512VBMI__.
	* config/i386/i386.c (ix86_target_string): Add -mavx512vbmi.
	(PTA_AVX512VBMI): Define.
	(ix86_option_override_internal): Handle new options.
	(ix86_valid_target_attribute_inner_p): Add avx512vbmi,
	(ix86_builtins): Add IX86_BUILTIN_VPMULTISHIFTQB512,
	IX86_BUILTIN_VPMULTISHIFTQB256, IX86_BUILTIN_VPMULTISHIFTQB128,
	IX86_BUILTIN_VPERMVARQI512_MASK, IX86_BUILTIN_VPERMT2VARQI512,
	IX86_BUILTIN_VPERMT2VARQI512_MASKZ, IX86_BUILTIN_VPERMI2VARQI512,
	IX86_BUILTIN_VPERMVARQI256_MASK, IX86_BUILTIN_VPERMVARQI128_MASK,
	IX86_BUILTIN_VPERMT2VARQI256, IX86_BUILTIN_VPERMT2VARQI256_MASKZ,
	IX86_BUILTIN_VPERMT2VARQI128, IX86_BUILTIN_VPERMI2VARQI256,
	IX86_BUILTIN_VPERMI2VARQI128.
	(bdesc_special_args): Add __builtin_ia32_vpmultishiftqb512_mask,
	__builtin_ia32_vpmultishiftqb256_mask,
	__builtin_ia32_vpmultishiftqb128_mask,
	__builtin_ia32_permvarqi512_mask, __builtin_ia32_vpermt2varqi512_mask,
	__builtin_ia32_vpermt2varqi512_maskz,
	__builtin_ia32_vpermi2varqi512_mask, __builtin_ia32_permvarqi256_mask,
	__builtin_ia32_permvarqi128_mask, __builtin_ia32_vpermt2varqi256_mask,
	__builtin_ia32_vpermt2varqi256_maskz,
	__builtin_ia32_vpermt2varqi128_mask,
	__builtin_ia32_vpermt2varqi128_maskz,
	__builtin_ia32_vpermi2varqi256_mask,
	__builtin_ia32_vpermi2varqi128_mask.
	(ix86_hard_regno_mode_ok): Allow big masks for AVX512VBMI.
	* config/i386/i386.h (TARGET_AVX512VBMI, TARGET_AVX512VBMI_P): Define.
	* config/i386/i386.opt: Add mavx512vbmi.
	* config/i386/immintrin.h: Include avx512vbmiintrin.h,
	avx512vbmivlintrin.h.
	* config/i386/sse.md (unspec): Add UNSPEC_VPMULTISHIFT.
	(VI1_AVX512VL): New iterator.
	(<avx512>_permvar<mode><mask_name>): Use it.
	(<avx512>_vpermi2var<mode>3_maskz): Ditto.
	(<avx512>_vpermi2var<mode>3<sd_maskz_name>): Ditto.
	(<avx512>_vpermi2var<mode>3_mask): Ditto.
	(<avx512>_vpermt2var<mode>3_maskz): Ditto.
	(<avx512>_vpermt2var<mode>3<sd_maskz_name>): Ditto.
	(<avx512>_vpermt2var<mode>3_mask): Ditto.
	(vpmultishiftqb<mode><mask_name>): Ditto.

gcc/testsuite/

	* g++.dg/other/i386-2.C: Add -mavx512vbmi.
	* g++.dg/other/i386-3.C: Ditto.
	* gcc.target/i386/avx512f-helper.h: Add avx512vbmi-check.h.
	* gcc.target/i386/avx512vbmi-check.h: Ditto.
	* gcc.target/i386/avx512vbmi-vpermb-1.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpermb-2.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpermi2b-1.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpermi2b-2.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpermt2b-1.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpermt2b-2.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpmultishiftqb-1.c: Ditto.
	* gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermb-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermi2b-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpermt2b-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaddhuq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmaddluq-2.c: Ditto.
	* gcc.target/i386/avx512vl-vpmultishiftqb-2.c: Ditto.
	* gcc.target/i386/i386.exp (check_effective_target_avx512vbmi): New.
	* gcc.target/i386/sse-12.c: Add new options.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-14.c: Ditto.
	* gcc.target/i386/sse-22.c: Ditto.
	* gcc.target/i386/sse-23.c: Ditto.


Added:
    trunk/gcc/config/i386/avx512vbmiintrin.h
    trunk/gcc/config/i386/avx512vbmivlintrin.h
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-check.h
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermb-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vbmi-vpmultishiftqb-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-vpermb-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-vpermi2b-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-vpermt2b-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512vl-vpmultishiftqb-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/common/config/i386/i386-common.c
    trunk/gcc/config.gcc
    trunk/gcc/config/i386/cpuid.h
    trunk/gcc/config/i386/driver-i386.c
    trunk/gcc/config/i386/i386-c.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.h
    trunk/gcc/config/i386/i386.opt
    trunk/gcc/config/i386/immintrin.h
    trunk/gcc/config/i386/sse.md
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/other/i386-2.C
    trunk/gcc/testsuite/g++.dg/other/i386-3.C
    trunk/gcc/testsuite/gcc.target/i386/avx512f-helper.h
    trunk/gcc/testsuite/gcc.target/i386/i386.exp
    trunk/gcc/testsuite/gcc.target/i386/sse-12.c
    trunk/gcc/testsuite/gcc.target/i386/sse-13.c
    trunk/gcc/testsuite/gcc.target/i386/sse-14.c
    trunk/gcc/testsuite/gcc.target/i386/sse-22.c
    trunk/gcc/testsuite/gcc.target/i386/sse-23.c


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]