diff options
author | Allan Sandfeld Jensen <sandfeld@kde.org> | 2015-01-25 18:17:46 +0000 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2015-01-25 19:17:46 +0100 |
commit | 939911c558653f1514f1280c67f04b4bae0297c8 (patch) | |
tree | 3c8bca97d45d736dc6840d8b8fed8493f6285dc3 /gcc/config | |
parent | 5eb1643c2c252821621580cc1a5aeb42516926f0 (diff) | |
download | gcc-939911c558653f1514f1280c67f04b4bae0297c8.zip gcc-939911c558653f1514f1280c67f04b4bae0297c8.tar.gz gcc-939911c558653f1514f1280c67f04b4bae0297c8.tar.bz2 |
i386.c (get_builtin_code_for_version): Add support for BMI and BMI2 multiversion functions.
gcc/ChangeLog:
* config/i386/i386.c (get_builtin_code_for_version): Add
support for BMI and BMI2 multiversion functions.
(fold_builtin_cpu): Add F_BMI and F_BMI2.
libgcc/ChangeLog:
* config/i386/cpuinfo.c (enum processor_features): Add FEATURE_BMI and
FEATURE_BMI2.
(get_available_features): Detect FEATURE_BMI and FEATURE_BMI2.
testsuite/ChangeLog:
* gcc.target/i386/funcspec-5.c: Test new multiversion targets.
* g++.dg/ext/mv17.C: Test BMI/BMI2 multiversion dispatcher.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r220095
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 9ec40cb..441911d 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -34289,15 +34289,18 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) P_PROC_SSE4_A, P_SSE4_1, P_SSE4_2, - P_PROC_SSE4_2, P_POPCNT, + P_PROC_SSE4_2, P_AVX, P_PROC_AVX, + P_BMI, + P_PROC_BMI, P_FMA4, P_XOP, P_PROC_XOP, P_FMA, P_PROC_FMA, + P_BMI2, P_AVX2, P_PROC_AVX2, P_AVX512F, @@ -34323,12 +34326,14 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) {"sse4a", P_SSE4_A}, {"ssse3", P_SSSE3}, {"sse4.1", P_SSE4_1}, - {"sse4.2", P_SSE4_2}, {"popcnt", P_POPCNT}, + {"sse4.2", P_SSE4_2}, {"avx", P_AVX}, + {"bmi", P_BMI}, {"fma4", P_FMA4}, {"xop", P_XOP}, {"fma", P_FMA}, + {"bmi2", P_BMI2}, {"avx2", P_AVX2}, {"avx512f", P_AVX512F} }; @@ -34423,7 +34428,7 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) break; case PROCESSOR_BTVER2: arg_str = "btver2"; - priority = P_PROC_AVX; + priority = P_PROC_BMI; break; case PROCESSOR_BDVER1: arg_str = "bdver1"; @@ -35310,6 +35315,8 @@ fold_builtin_cpu (tree fndecl, tree *args) F_XOP, F_FMA, F_AVX512F, + F_BMI, + F_BMI2, F_MAX }; @@ -35403,7 +35410,9 @@ fold_builtin_cpu (tree fndecl, tree *args) {"xop", F_XOP}, {"fma", F_FMA}, {"avx2", F_AVX2}, - {"avx512f",F_AVX512F} + {"avx512f",F_AVX512F}, + {"bmi", F_BMI}, + {"bmi2", F_BMI2} }; tree __processor_model_type = build_processor_model_struct (); |