PR tree-optimization/68445
* tree-vect-slp.c (vect_create_mask_and_perm): Properly use
two different strides.
* gcc.dg/vect/pr68445.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230737
138bc75d-0d04-0410-961f-
82ee72b054a4
+2015-11-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68445
+ * tree-vect-slp.c (vect_create_mask_and_perm): Properly use
+ two different strides.
+
2015-11-23 Robin Dapp <rdapp@linux.vnet.ibm.com>
* config/s390/s390.h: Add new symref flags, _NOTALIGN2 etc.
+2015-11-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68445
+ * gcc.dg/vect/pr68445.c: New testcase.
+
2015-11-23 Robin Dapp <rdapp@linux.vnet.ibm.com>
* gcc.target/s390/load-relative-check.c: New test to check
--- /dev/null
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+void IMB_double_fast_x (int *destf, int *dest, int y, int *p1f)
+{
+ int i;
+ for (i = y; i > 0; i--)
+ {
+ *dest++ = 0;
+ destf[0] = destf[4] = p1f[0];
+ destf[1] = destf[5] = p1f[1];
+ destf[2] = destf[6] = p1f[2];
+ destf[3] = destf[7] = p1f[3];
+ destf += 8;
+ p1f += 4;
+ }
+}
+
+/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */
{
tree perm_dest;
gimple *perm_stmt = NULL;
- int i, stride;
+ int i, stride_in, stride_out;
tree first_vec, second_vec, data_ref;
- stride = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
+ stride_out = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
+ stride_in = dr_chain.length () / ncopies;
/* Initialize the vect stmts of NODE to properly insert the generated
stmts later. */
vect_finish_stmt_generation (stmt, perm_stmt, gsi);
/* Store the vector statement in NODE. */
- SLP_TREE_VEC_STMTS (node)[stride * i + vect_stmts_counter] = perm_stmt;
+ SLP_TREE_VEC_STMTS (node)[stride_out * i + vect_stmts_counter]
+ = perm_stmt;
- first_vec_indx += stride;
- second_vec_indx += stride;
+ first_vec_indx += stride_in;
+ second_vec_indx += stride_in;
}
}