mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-18 23:51:08 +08:00
tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization do not allow unrolling.
2015-05-12 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization do not allow unrolling. * gcc.dg/vect/bb-slp-35.c: New testcase. From-SVN: r223033
This commit is contained in:
parent
9b7df66f80
commit
dfc55d308e
@ -1,3 +1,8 @@
|
||||
2015-05-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* tree-vect-slp.c (vect_build_slp_tree_1): For BB vectorization
|
||||
do not allow unrolling.
|
||||
|
||||
2015-05-11 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/i386/i386-modes.def (CCP): New.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2015-05-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/vect/bb-slp-35.c: New testcase.
|
||||
|
||||
2015-05-11 Mikael Morin <mikael@gcc.gnu.org>
|
||||
|
||||
PR fortran/66100
|
||||
|
13
gcc/testsuite/gcc.dg/vect/bb-slp-35.c
Normal file
13
gcc/testsuite/gcc.dg/vect/bb-slp-35.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
void foo (int * __restrict__ p, short * __restrict__ q)
|
||||
{
|
||||
p[0] = q[0] + 1;
|
||||
p[1] = q[1] + 1;
|
||||
p[2] = q[2] + 1;
|
||||
p[3] = q[3] + 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp2" } } */
|
@ -568,6 +568,19 @@ vect_build_slp_tree_1 (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
|
||||
return false;
|
||||
}
|
||||
|
||||
/* If populating the vector type requires unrolling then fail
|
||||
before adjusting *max_nunits for basic-block vectorization. */
|
||||
if (bb_vinfo
|
||||
&& TYPE_VECTOR_SUBPARTS (vectype) > group_size)
|
||||
{
|
||||
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
||||
"Build SLP failed: unrolling required "
|
||||
"in basic block SLP\n");
|
||||
/* Fatal mismatch. */
|
||||
matches[0] = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* In case of multiple types we need to detect the smallest type. */
|
||||
if (*max_nunits < TYPE_VECTOR_SUBPARTS (vectype))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user