aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Tocar <ilya.tocar@intel.com>2015-01-14 13:55:06 +0000
committerIlya Tocar <tocarip@gcc.gnu.org>2015-01-14 16:55:06 +0300
commit4b54ab976e5b0fd88580927adc6b8d5f2bd89044 (patch)
treeed631d6eca15bfc4351658ccdfd71373c67a46aa /gcc
parentc67917b65db04a4a52dc096f9ee59ed863789a1c (diff)
downloadgcc-4b54ab976e5b0fd88580927adc6b8d5f2bd89044.zip
gcc-4b54ab976e5b0fd88580927adc6b8d5f2bd89044.tar.gz
gcc-4b54ab976e5b0fd88580927adc6b8d5f2bd89044.tar.bz2
re PR target/64386 (ICE: in extract_insn, at recog.c:2327 (unrecognizable insn) with -mavx512bw)
PR target/64386 gcc/ PR target/64386 * config/i386/i386.c (ix86_expand_sse_cmp): Handle V64QImode, V32HImode. testsuite/ * gcc.target/i386/pr64386.c: New test. From-SVN: r219600
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr64386.c14
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9041477..43d6a1a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2014-01-14 Ilya Tocar <ilya.tocar@intel.com>
+ PR target/64386
+ * config/i386/i386.c (ix86_expand_sse_cmp): Handle V64QImode,
+ V32HImode.
+
+2014-01-14 Ilya Tocar <ilya.tocar@intel.com>
+
PR target/64393
* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI_SET):
Enable AVX512BW.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 91eae5a..f358ac2 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -21318,6 +21318,14 @@ ix86_expand_sse_cmp (rtx dest, enum rtx_code code, rtx cmp_op0, rtx cmp_op1,
switch (cmp_ops_mode)
{
+ case V64QImode:
+ gcc_assert (TARGET_AVX512BW);
+ gen = code == GT ? gen_avx512bw_gtv64qi3 : gen_avx512bw_eqv64qi3_1;
+ break;
+ case V32HImode:
+ gcc_assert (TARGET_AVX512BW);
+ gen = code == GT ? gen_avx512bw_gtv32hi3 : gen_avx512bw_eqv32hi3_1;
+ break;
case V16SImode:
gen = code == GT ? gen_avx512f_gtv16si3 : gen_avx512f_eqv16si3_1;
break;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 12afaed..d39b2d7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2014-01-14 Ilya Tocar <ilya.tocar@intel.com>
+ PR target/64386
+ * gcc.target/i386/pr64386.c: New test.
+
+2014-01-14 Ilya Tocar <ilya.tocar@intel.com>
+
PR target/64393
* gcc.target/i386/pr64393.c: New test.
diff --git a/gcc/testsuite/gcc.target/i386/pr64386.c b/gcc/testsuite/gcc.target/i386/pr64386.c
new file mode 100644
index 0000000..fc152cb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr64386.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -mavx512bw" } */
+
+char ac[64], bc[64], ec[64];
+
+void fc (void)
+{
+ int i;
+ for (i = 0; i < 64; i++)
+ {
+ char e = ec[i];
+ ac[i] = bc[i] ? : e;
+ }
+}