tree-vect-slp.c (vect_analyze_slp_instance): Dump constructors we are actually analyzing.

2019-11-20  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_analyze_slp_instance): Dump
	constructors we are actually analyzing.
	(vect_slp_check_for_constructors): Do not vectorize uniform
	constuctors, do not dump here.

	* gcc.dg/vect/bb-slp-42.c: Adjust.
	* gcc.dg/vect/bb-slp-40.c: Likewise.

From-SVN: r278495
This commit is contained in:
Richard Biener 2019-11-20 11:12:48 +00:00 committed by Richard Biener
parent 2439d584d5
commit 140ee00a96
5 changed files with 32 additions and 26 deletions

View File

@ -1,3 +1,10 @@
2019-11-20 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_analyze_slp_instance): Dump
constructors we are actually analyzing.
(vect_slp_check_for_constructors): Do not vectorize uniform
constuctors, do not dump here.
2019-11-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/92537

View File

@ -1,3 +1,8 @@
2019-11-20 Richard Biener <rguenther@suse.de>
* gcc.dg/vect/bb-slp-42.c: Adjust.
* gcc.dg/vect/bb-slp-40.c: Likewise.
2019-11-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/92537

View File

@ -30,5 +30,5 @@ void foo(void)
}
/* See that we vectorize an SLP instance. */
/* { dg-final { scan-tree-dump "Found vectorizable constructor" "slp1" } } */
/* { dg-final { scan-tree-dump "Analyzing vectorizable constructor" "slp1" } } */
/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "slp1" } } */

View File

@ -44,6 +44,5 @@ main ()
}
/* See that we vectorize an SLP instance. */
/* { dg-final { scan-tree-dump "Found vectorizable constructor" "slp1" { target { ! vect_fully_masked } } } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "slp1" { target { ! vect_fully_masked } } } } */
/* See that we do not try to vectorize the uniform CTORs. */
/* { dg-final { scan-tree-dump-not "Analyzing vectorizable constructor" "slp1" } } */

View File

@ -2183,6 +2183,10 @@ vect_analyze_slp_instance (vec_info *vinfo,
else
return false;
}
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location,
"Analyzing vectorizable constructor: %G\n",
stmt_info->stmt);
}
else
{
@ -3116,31 +3120,22 @@ vect_slp_check_for_constructors (bb_vec_info bb_vinfo)
gimple_stmt_iterator gsi;
for (gsi = bb_vinfo->region_begin;
gsi_stmt (gsi) != gsi_stmt (bb_vinfo->region_end); gsi_next (&gsi))
gsi_stmt (gsi) != gsi_stmt (bb_vinfo->region_end); gsi_next (&gsi))
{
gimple *stmt = gsi_stmt (gsi);
gassign *stmt = dyn_cast <gassign *> (gsi_stmt (gsi));
if (!stmt || gimple_assign_rhs_code (stmt) != CONSTRUCTOR)
continue;
if (is_gimple_assign (stmt)
&& gimple_assign_rhs_code (stmt) == CONSTRUCTOR
&& TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME
&& TREE_CODE (TREE_TYPE (gimple_assign_lhs (stmt))) == VECTOR_TYPE)
{
tree rhs = gimple_assign_rhs1 (stmt);
tree rhs = gimple_assign_rhs1 (stmt);
if (!VECTOR_TYPE_P (TREE_TYPE (rhs))
|| maybe_ne (TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs)),
CONSTRUCTOR_NELTS (rhs))
|| VECTOR_TYPE_P (TREE_TYPE (CONSTRUCTOR_ELT (rhs, 0)->value))
|| uniform_vector_p (rhs))
continue;
if (CONSTRUCTOR_NELTS (rhs) == 0)
continue;
poly_uint64 subparts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs));
if (maybe_ne (subparts, CONSTRUCTOR_NELTS (rhs)))
continue;
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location,
"Found vectorizable constructor: %G\n", stmt);
stmt_vec_info stmt_info = bb_vinfo->lookup_stmt (stmt);
BB_VINFO_GROUPED_STORES (bb_vinfo).safe_push (stmt_info);
}
stmt_vec_info stmt_info = bb_vinfo->lookup_stmt (stmt);
BB_VINFO_GROUPED_STORES (bb_vinfo).safe_push (stmt_info);
}
}