aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2015-08-11 19:53:41 +0200
committerUros Bizjak <uros@gcc.gnu.org>2015-08-11 19:53:41 +0200
commitaff4eeac68406d9e68c193b3af21c3f8f708f3f0 (patch)
tree02e3ed75828606fc00f2a1cda3ed1a9d417d8cd9 /libgcc
parentdbfa87aa8704d7cb2ce147966f27bdf70ce7596c (diff)
downloadgcc-aff4eeac68406d9e68c193b3af21c3f8f708f3f0.zip
gcc-aff4eeac68406d9e68c193b3af21c3f8f708f3f0.tar.gz
gcc-aff4eeac68406d9e68c193b3af21c3f8f708f3f0.tar.bz2
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
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog6
-rw-r--r--libgcc/config/i386/cpuinfo.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 95a10f2..062bbe9 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -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
diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
index 57711d0..25d85e4 100644
--- a/libgcc/config/i386/cpuinfo.c
+++ b/libgcc/config/i386/cpuinfo.c
@@ -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)