r166562 - in /trunk/gcc: ChangeLog config.gcc c...

spop@gcc.gnu.org spop@gcc.gnu.org
Wed Nov 10 22:02:00 GMT 2010


Author: spop
Date: Wed Nov 10 22:02:34 2010
New Revision: 166562

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=166562
Log:
Add support for TBM.

2010-11-10 Quentin Neill <quentin.neill.gnu@gmail.com>

gcc/
	* config.gcc (i[34567]86-*-*): Include tbmintrin.h.
    (x86_64-*-*): Likewise.
	* config/i386/cpuid.h: Define TBM bit.
	* config/i386/driver-i386.c (host_detect_local_cpu): Define
	and set has_tbm.
	* config/i386/i386-c.c (ix86_target_macros_internal): Check
	isa_flag for TBM.
	* config/i386/i386.c (OPTION_MASK_ISA_TBM_SET): New.
	(OPTION_MASK_ISA_TBM_UNSET): New.
	(ix86_handle_option): Handle -mtbm.
	(isa_opts): Add -mtbm.
	(enum pta_flags): Add PTA_TBM.
	(ix86_option_override_internal): Add TBM support.
	(ix86_valid_target_attribute_inner_p): Handle -mtbm.
	(IX86_BUILTIN_BEXTRI32): New for TBM intrinsic.
	(IX86_BUILTIN_BEXTRI64): Likewise.
	(bdesc_args): Add TBM intrinsics.
	(ix86_expand_builtin): Add TBM specific case.
	* config/i386/i386.h (TARGET_TBM): New for TBM.
	* config/i386/i386.md (UNSPEC_BEXTRI): New for TBM.
	(tbm_bextri_<mode>): Likewise.
	(*tbm_blcfill_<mode>): Likewise.
	(*tbm_blci_<mode>): Likewise.
	(*tbm_blcic_<mode>): Likewise.
	(*tbm_blcmsk_<mode>): Likewise.
	(*tbm_blcs_<mode>): Likewise.
	(*tbm_blsfill_<mode>): Likewise.
	(*tbm_blsic_<mode>): Likewise.
	(*tbm_t1mskc_<mode>): Likewise.
	(*tbm_tzmsk_<mode>): Likewise.
	* config/i386/i386.opt: Add -mtbm.
	* config/i386/tbmintrin.h (__bextri_u32): New.
	(__blcfill_u32): Likewise.
	(__blci_u32): Likewise.
	(__blcic_u32): Likewise.
	(__blcmsk_u32): Likewise.
	(__blcs_u32): Likewise.
	(__blsfill_u32): Likewise.
	(__blsic_u32): Likewise.
	(__t1mskc_u32): Likewise.
	(__tzmsk_u32): Likewise.
	(__bextri_u64): Likewise.
	(__blcfill_u64): Likewise.
	(__blci_u64): Likewise.
	(__blcic_u64): Likewise.
	(__blcmsk_u64): Likewise.
	(__blcs_u64): Likewise.
	(__blsfill_u64): Likewise.
	(__blsic_u64): Likewise.
	(__t1mskc_u64): Likewise.
	(__tzmsk_u64): Likewise.
	* config/i386/x86intrin.h: Add TBM check and tbmintrin.h.
	* doc/invoke.texi: Document -mtbm.
	* doc/extend.texi: Document TBM built-in functions.

gcc/testsuite/
	* g++.dg/other/i386-2.C: Add -mtbm.
	* g++.dg/other/i386-3.C: Likewise.
	* gcc.target/i386/funcspec-5.c: Add tbm and no-tbm targets.
	* gcc.target/i386/funcspec-6.c: Likewise.
	* gcc.target/i386/sse-12.c: Add -mtbm.
	* gcc.target/i386/sse-13.c: Add -mtbm and test immediate
	operand intrinsics.
	* gcc.target/i386/sse-14.c: Likewise.
	* gcc.target/i386/sse-22.c: Likewise.
	* gcc.target/i386/sse-23.c: Likewise.
	* gcc.target/i386/tbm-1.c: New file.
	* gcc.target/i386/tbm-2.c: Likewise.

Added:
    trunk/gcc/config/i386/tbmintrin.h
    trunk/gcc/testsuite/gcc.target/i386/tbm-1.c
    trunk/gcc/testsuite/gcc.target/i386/tbm-2.c
Modified:
    trunk/gcc/ChangeLog
    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.md
    trunk/gcc/config/i386/i386.opt
    trunk/gcc/config/i386/x86intrin.h
    trunk/gcc/doc/extend.texi
    trunk/gcc/doc/invoke.texi
    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/bmi-5.c
    trunk/gcc/testsuite/gcc.target/i386/bmi-6.c
    trunk/gcc/testsuite/gcc.target/i386/funcspec-5.c
    trunk/gcc/testsuite/gcc.target/i386/funcspec-6.c
    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



More information about the Gcc-cvs mailing list