improve SLP vect dumping
This adds additional dumping helping in particular basic-block vectorization SLP dump reading plus showing what we actually generate code from. 2020-09-07 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_analyze_slp_instance): Dump stmts we start SLP analysis from, failure and splitting. (vect_schedule_slp): Dump SLP graph entry and root stmt we are about to emit code for.
This commit is contained in:
parent
3fe3efe5c1
commit
931832a5cc
@ -2202,6 +2202,15 @@ vect_analyze_slp_instance (vec_info *vinfo,
|
||||
scalar_stmts.safe_push (next_info);
|
||||
}
|
||||
|
||||
if (dump_enabled_p ())
|
||||
{
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
"Starting SLP discovery for\n");
|
||||
for (i = 0; i < scalar_stmts.length (); ++i)
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
" %G", scalar_stmts[i]->stmt);
|
||||
}
|
||||
|
||||
/* Build the tree for the SLP instance. */
|
||||
bool *matches = XALLOCAVEC (bool, group_size);
|
||||
unsigned npermutes = 0;
|
||||
@ -2232,6 +2241,10 @@ vect_analyze_slp_instance (vec_info *vinfo,
|
||||
return false;
|
||||
}
|
||||
/* Fatal mismatch. */
|
||||
if (dump_enabled_p ())
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
"SLP discovery succeeded but node needs "
|
||||
"splitting\n");
|
||||
matches[0] = true;
|
||||
matches[group_size / const_max_nunits * const_max_nunits] = false;
|
||||
vect_free_slp_tree (node, false);
|
||||
@ -2374,6 +2387,9 @@ vect_analyze_slp_instance (vec_info *vinfo,
|
||||
gcc_assert ((const_nunits & (const_nunits - 1)) == 0);
|
||||
unsigned group1_size = i & ~(const_nunits - 1);
|
||||
|
||||
if (dump_enabled_p ())
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
"Splitting SLP group at stmt %u\n", i);
|
||||
stmt_vec_info rest = vect_split_slp_store_group (stmt_info,
|
||||
group1_size);
|
||||
bool res = vect_analyze_slp_instance (vinfo, bst_map, stmt_info,
|
||||
@ -2395,6 +2411,9 @@ vect_analyze_slp_instance (vec_info *vinfo,
|
||||
(some) of the remainder. FORNOW ignore this possibility. */
|
||||
}
|
||||
|
||||
/* Failed to SLP. */
|
||||
if (dump_enabled_p ())
|
||||
dump_printf_loc (MSG_NOTE, vect_location, "SLP discovery failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -4662,6 +4681,16 @@ vect_schedule_slp (vec_info *vinfo)
|
||||
FOR_EACH_VEC_ELT (slp_instances, i, instance)
|
||||
{
|
||||
slp_tree node = SLP_INSTANCE_TREE (instance);
|
||||
if (dump_enabled_p ())
|
||||
{
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
"Vectorizing SLP tree:\n");
|
||||
if (SLP_INSTANCE_ROOT_STMT (instance))
|
||||
dump_printf_loc (MSG_NOTE, vect_location, "Root stmt: %G",
|
||||
SLP_INSTANCE_ROOT_STMT (instance)->stmt);
|
||||
vect_print_slp_graph (MSG_NOTE, vect_location,
|
||||
SLP_INSTANCE_TREE (instance));
|
||||
}
|
||||
/* Schedule the tree of INSTANCE. */
|
||||
vect_schedule_slp_instance (vinfo, node, instance);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user