re PR target/64386 (ICE: in extract_insn, at recog.c:2327 (unrecognizable insn) with...
authorIlya Tocar <ilya.tocar@intel.com>
Wed, 14 Jan 2015 13:55:06 +0000 (13:55 +0000)
committerIlya Tocar <tocarip@gcc.gnu.org>
Wed, 14 Jan 2015 13:55:06 +0000 (16:55 +0300)
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

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr64386.c [new file with mode: 0644]

index 90414774303ac40e0395a749211e4939296b33ac..43d6a1a0a9321222da86ac9dd230cd3414c07a80 100644 (file)
@@ -1,3 +1,9 @@
+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
index 91eae5ae3b5830a09f6a9632c38d62e0b5ba83f8..f358ac231525f5c43cb8a9f38b18ce9734a512e0 100644 (file)
@@ -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;
index 12afaed3d82e91a664a5cd9883f40c91311cf1f8..d39b2d7814e0891caafcd982b3d0258e4e8cbd51 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gcc.target/i386/pr64386.c b/gcc/testsuite/gcc.target/i386/pr64386.c
new file mode 100644 (file)
index 0000000..fc152cb
--- /dev/null
@@ -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;
+    }
+}