re PR target/63428 (vshuf-v4di.c miscompilation)
authorJakub Jelinek <jakub@gcc.gnu.org>
Wed, 1 Oct 2014 20:40:29 +0000 (22:40 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 1 Oct 2014 20:40:29 +0000 (22:40 +0200)
PR target/63428
* config/i386/i386.c (expand_vec_perm_pshufb): Fix up rperm[0]
argument to avx2_permv2ti.

* gcc.dg/torture/vshuf-4.inc: Move test 122 from EXPTESTS
to test 24 in TESTS.

From-SVN: r215776

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/vshuf-4.inc

index 89c8efc31be35ea6577c3085c5e14f121b7bd7a8..04637b05527c46b2e008e0c478551a557e93a070 100644 (file)
@@ -1,3 +1,9 @@
+2014-10-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/63428
+       * config/i386/i386.c (expand_vec_perm_pshufb): Fix up rperm[0]
+       argument to avx2_permv2ti.
+
 2014-10-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * config/arm/arm.md (*store_minmaxsi): Disable for arm_restrict_it.
index 4cf4dea7b07b6eb762f1f7afad16a8565cc10635..84484bb25128a7fcbac463e129fc7d248927a3e2 100644 (file)
@@ -42961,8 +42961,8 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d)
              op0 = gen_lowpart (V4DImode, d->op0);
              op1 = gen_lowpart (V4DImode, d->op1);
              rperm[0]
-               = GEN_INT (((d->perm[0] & (nelt / 2)) ? 1 : 0)
-                          || ((d->perm[nelt / 2] & (nelt / 2)) ? 2 : 0));
+               = GEN_INT ((d->perm[0] / (nelt / 2))
+                          | ((d->perm[nelt / 2] / (nelt / 2)) * 16));
              emit_insn (gen_avx2_permv2ti (target, op0, op1, rperm[0]));
              if (target != d->target)
                emit_move_insn (d->target, gen_lowpart (d->vmode, target));
index 628f9765eb09a001ce747b0b7469af4db2bb2a2e..213d2763e2711690698a2932d8d18e218fb16d68 100644 (file)
@@ -1,6 +1,12 @@
+2014-10-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/63428
+       * gcc.dg/torture/vshuf-4.inc: Move test 122 from EXPTESTS
+       to test 24 in TESTS.
+
 2014-10-01  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
 
-       * lib/target-supports.exp: error out with preprocessor condition
+       * lib/target-supports.exp: Error out with preprocessor condition
        instead of FOO everywhere.
 
 2014-10-01  Edward Smith-Rowland  <3dw4rd@verizon.net>
index c50fa8e9dd573b82597bf4930b6f2f8545dede52..d0cb7387ca36c8b5de4e458c6dae4a1abd12e5d4 100644 (file)
@@ -23,7 +23,8 @@ T (19,        3, 2, 1, 0) \
 T (20, 0, 4, 1, 5) \
 T (21, 2, 6, 3, 7) \
 T (22, 1, 2, 3, 0) \
-T (23, 2, 1, 0, 3)
+T (23, 2, 1, 0, 3) \
+T (24, 2, 5, 6, 3)
 #define EXPTESTS \
 T (116,        1, 2, 4, 3) \
 T (117,        7, 3, 3, 0) \
@@ -31,7 +32,6 @@ T (118,       5, 3, 2, 7) \
 T (119,        0, 3, 5, 6) \
 T (120,        0, 0, 1, 5) \
 T (121,        4, 6, 2, 1) \
-T (122,        2, 5, 6, 3) \
 T (123,        4, 6, 3, 2) \
 T (124,        4, 7, 5, 6) \
 T (125,        0, 4, 2, 4) \