re PR target/66954 (function multiversioning fails for target "aes")
libgcc/ChangeLog: PR target/66954 * config/i386/cpuinfo.c (enum processor_features): Add FEATURE_PCLMUL. (get_available_features): Handle FEATURE_PCLMUL. gcc/ChangeLog: PR target/66954 * config/i386/i386.c (get_builtin_code_for_version): Add P_PCLMUL to enum feature_priority and feature_list. (fold_builtin_cpu): Add F_PCLMUL to enum processor_features and isa_names_table. gcc/testsuite/ChangeLog: PR target/66954 * g++.dg/ext/mv25.C: New test. From-SVN: r226784
This commit is contained in:
parent
dbfa87aa87
commit
aff4eeac68
6 changed files with 63 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
|||
2015-08-11 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/66954
|
||||
* config/i386/i386.c (get_builtin_code_for_version): Add P_PCLMUL
|
||||
to enum feature_priority and feature_list.
|
||||
(fold_builtin_cpu): Add F_PCLMUL to enum processor_features
|
||||
and isa_names_table.
|
||||
|
||||
2015-08-11 Yuri Rumyantsev <ysrumyan@gmail.com>
|
||||
|
||||
* tree-vect-stmts.c (vectorizable_shift): Add missed test on
|
||||
|
|
|
@ -34574,6 +34574,7 @@ get_builtin_code_for_version (tree decl, tree *predicate_list)
|
|||
P_PROC_SSE4_2,
|
||||
P_POPCNT,
|
||||
P_AES,
|
||||
P_PCLMUL,
|
||||
P_AVX,
|
||||
P_PROC_AVX,
|
||||
P_BMI,
|
||||
|
@ -34612,6 +34613,7 @@ get_builtin_code_for_version (tree decl, tree *predicate_list)
|
|||
{"sse4.2", P_SSE4_2},
|
||||
{"popcnt", P_POPCNT},
|
||||
{"aes", P_AES},
|
||||
{"pclmul", P_PCLMUL},
|
||||
{"avx", P_AVX},
|
||||
{"bmi", P_BMI},
|
||||
{"fma4", P_FMA4},
|
||||
|
@ -35600,6 +35602,7 @@ fold_builtin_cpu (tree fndecl, tree *args)
|
|||
F_BMI,
|
||||
F_BMI2,
|
||||
F_AES,
|
||||
F_PCLMUL,
|
||||
F_MAX
|
||||
};
|
||||
|
||||
|
@ -35696,7 +35699,8 @@ fold_builtin_cpu (tree fndecl, tree *args)
|
|||
{"avx512f",F_AVX512F},
|
||||
{"bmi", F_BMI},
|
||||
{"bmi2", F_BMI2},
|
||||
{"aes", F_AES}
|
||||
{"aes", F_AES},
|
||||
{"pclmul", F_PCLMUL}
|
||||
};
|
||||
|
||||
tree __processor_model_type = build_processor_model_struct ();
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-08-11 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/66954
|
||||
* g++.dg/ext/mv25.C: New test.
|
||||
|
||||
2015-08-11 Yuri Rumyantsev <ysrumyan@gmail.com>
|
||||
|
||||
* gcc.target/i386/avx2-vect-shift.c: New test.
|
||||
|
|
35
gcc/testsuite/g++.dg/ext/mv25.C
Normal file
35
gcc/testsuite/g++.dg/ext/mv25.C
Normal file
|
@ -0,0 +1,35 @@
|
|||
// Test case to check if Multiversioning works for PCLMUL
|
||||
|
||||
// { dg-do run { target i?86-*-* x86_64-*-* } }
|
||||
// { dg-require-ifunc "" }
|
||||
// { dg-options "-O2" }
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
// Check if PCLMUL feature selection works
|
||||
int foo () __attribute__((target("default")));
|
||||
int foo () __attribute__((target("pclmul")));
|
||||
|
||||
int main ()
|
||||
{
|
||||
int val = foo ();
|
||||
|
||||
if (__builtin_cpu_supports ("pclmul"))
|
||||
assert (val == 1);
|
||||
else
|
||||
assert (val == 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __attribute__ ((target("default")))
|
||||
foo ()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __attribute__ ((target("pclmul")))
|
||||
foo ()
|
||||
{
|
||||
return 1;
|
||||
}
|
|
@ -1,3 +1,9 @@
|
|||
2015-08-11 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/66954
|
||||
* config/i386/cpuinfo.c (enum processor_features): Add FEATURE_PCLMUL.
|
||||
(get_available_features): Handle FEATURE_PCLMUL.
|
||||
|
||||
2015-08-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/cpuinfo.c (get_intel_cpu): Treat model == 0x4f as
|
||||
|
|
|
@ -101,7 +101,8 @@ enum processor_features
|
|||
FEATURE_AVX512F,
|
||||
FEATURE_BMI,
|
||||
FEATURE_BMI2,
|
||||
FEATURE_AES
|
||||
FEATURE_AES,
|
||||
FEATURE_PCLMUL
|
||||
};
|
||||
|
||||
struct __processor_model
|
||||
|
@ -277,6 +278,8 @@ get_available_features (unsigned int ecx, unsigned int edx,
|
|||
features |= (1 << FEATURE_POPCNT);
|
||||
if (ecx & bit_AES)
|
||||
features |= (1 << FEATURE_AES);
|
||||
if (ecx & bit_PCLMUL)
|
||||
features |= (1 << FEATURE_PCLMUL);
|
||||
if (ecx & bit_SSE3)
|
||||
features |= (1 << FEATURE_SSE3);
|
||||
if (ecx & bit_SSSE3)
|
||||
|
|
Loading…
Add table
Reference in a new issue