diff options
author | Quentin Neill <quentin.neill.gnu@gmail.com> | 2010-11-10 22:02:34 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-11-10 22:02:34 +0000 |
commit | 94d13ad18df325e53e10c4ed44dde8b60c4f6708 (patch) | |
tree | 6b83a10f049fee21796c956345f2d360f24917f9 /gcc/doc | |
parent | 91afcfa30c1a15d759f8f59c9d1df403f196a5b6 (diff) | |
download | gcc-94d13ad18df325e53e10c4ed44dde8b60c4f6708.zip gcc-94d13ad18df325e53e10c4ed44dde8b60c4f6708.tar.gz gcc-94d13ad18df325e53e10c4ed44dde8b60c4f6708.tar.bz2 |
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.
From-SVN: r166562
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/extend.texi | 8 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 15abbb8..ccd0d91 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -9402,6 +9402,14 @@ unsigned int __builtin_ia32_lzcnt_u32(unsigned int); unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long); @end smallexample +The following built-in functions are available when @option{-mtbm} is used. +Both of them generate the immediate form of the bextr machine instruction. +@smallexample +unsigned int __builtin_ia32_bextri_u32 (unsigned int, const unsigned int); +unsigned long long __builtin_ia32_bextri_u64 (unsigned long long, const unsigned long long); +@end smallexample + + The following built-in functions are available when @option{-m3dnow} is used. All of them generate the machine instruction that is part of the name. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 99a7a89..f197483 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -598,7 +598,7 @@ Objective-C and Objective-C++ Dialects}. -mcld -mcx16 -msahf -mmovbe -mcrc32 -mrecip -mvzeroupper @gol -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx @gol -maes -mpclmul -mfsgsbase -mrdrnd -mf16c -mfused-madd @gol --msse4a -m3dnow -mpopcnt -mabm -mbmi -mfma4 -mxop -mlwp @gol +-msse4a -m3dnow -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop -mlwp @gol -mthreads -mno-align-stringops -minline-all-stringops @gol -minline-stringops-dynamically -mstringop-strategy=@var{alg} @gol -mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol @@ -12452,6 +12452,8 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @itemx -mno-abm @itemx -mbmi @itemx -mno-bmi +@itemx -mtbm +@itemx -mno-tbm @opindex mmmx @opindex mno-mmx @opindex msse |