gcc/
authorienkovich <ienkovich@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Nov 2014 14:45:26 +0000 (14:45 +0000)
committerienkovich <ienkovich@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Nov 2014 14:45:26 +0000 (14:45 +0000)
* tree-vect-data-refs.c (vect_transform_grouped_load): Limit shift
permutations to loads group of size 3.

gcc/testsuite/

* gcc.target/i386/pr52252-atom-1.c: Delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218160 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr52252-atom-1.c [deleted file]
gcc/tree-vect-data-refs.c

index 10fec95..e778951 100644 (file)
@@ -1,3 +1,8 @@
+2014-11-28  Evgeny Stupachenko  <evstupac@gmail.com>
+
+       * tree-vect-data-refs.c (vect_transform_grouped_load): Limit shift
+       permutations to loads group of size 3.
+
 2014-11-28  Jiong Wang  <jiong.wang@arm.com>
 
        * config/arm/arm.md (copysignsf3): New pattern.
index 8d4a788..14302b7 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-28  Evgeny Stupachenko  <evstupac@gmail.com>
+
+       * gcc.target/i386/pr52252-atom-1.c: Delete.
+
 2014-11-28  Jiong Wang  <jiong.wang@arm.com>
 
        * gcc.target/arm/copysign_softfloat_1.c: New copysign/copysignf
diff --git a/gcc/testsuite/gcc.target/i386/pr52252-atom-1.c b/gcc/testsuite/gcc.target/i386/pr52252-atom-1.c
deleted file mode 100644 (file)
index 020e983..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* { dg-require-effective-target ssse3 } */
-/* { dg-options "-O2 -ftree-vectorize -mssse3 -mtune=slm" } */
-#define byte unsigned char
-
-void
-pair_mul_sum(byte *in, byte *out, int size)
-{
-  int j;
-  for(j = 0; j < size; j++)
-    {
-      byte a = in[0];
-      byte b = in[1];
-      byte c = in[2];
-      byte d = in[3];
-      out[0] = (byte)(a * b) + (byte)(b * c) + (byte)(c * d) + (byte)(d * a);
-      in += 4;
-      out += 1;
-    }
-}
-
-/* { dg-final { scan-assembler "perm2i128|palignr" } } */
index 35d0e0f..3eb20fc 100644 (file)
@@ -5617,6 +5617,7 @@ vect_transform_grouped_load (gimple stmt, vec<tree> dr_chain, int size,
      get chain for loads group using vect_shift_permute_load_chain.  */
   mode = TYPE_MODE (STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt)));
   if (targetm.sched.reassociation_width (VEC_PERM_EXPR, mode) > 1
+      || exact_log2 (size) != -1
       || !vect_shift_permute_load_chain (dr_chain, size, stmt,
                                         gsi, &result_chain))
     vect_permute_load_chain (dr_chain, size, stmt, gsi, &result_chain);