aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <sandfeld@kde.org>2015-01-25 18:17:46 +0000
committerUros Bizjak <uros@gcc.gnu.org>2015-01-25 19:17:46 +0100
commit939911c558653f1514f1280c67f04b4bae0297c8 (patch)
tree3c8bca97d45d736dc6840d8b8fed8493f6285dc3 /gcc/config
parent5eb1643c2c252821621580cc1a5aeb42516926f0 (diff)
downloadgcc-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.c17
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 ();