Commit 140ee00a by Richard Biener Committed by Richard Biener

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
parent 2439d584
2019-11-20 Richard Biener <rguenther@suse.de> 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 PR tree-optimization/92537
* tree-vect-slp.c (vect_analyze_slp_instance): Move CTOR * tree-vect-slp.c (vect_analyze_slp_instance): Move CTOR
vectorization validity check... vectorization validity check...
2019-11-20 Richard Biener <rguenther@suse.de> 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 PR tree-optimization/92537
* gfortran.dg/pr92537.f90: New testcase. * gfortran.dg/pr92537.f90: New testcase.
......
...@@ -30,5 +30,5 @@ void foo(void) ...@@ -30,5 +30,5 @@ void foo(void)
} }
/* See that we vectorize an SLP instance. */ /* 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" } } */ /* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "slp1" } } */
...@@ -44,6 +44,5 @@ main () ...@@ -44,6 +44,5 @@ main ()
} }
/* See that we vectorize an SLP instance. */ /* See that we do not try to vectorize the uniform CTORs. */
/* { dg-final { scan-tree-dump "Found vectorizable constructor" "slp1" { target { ! vect_fully_masked } } } } */ /* { dg-final { scan-tree-dump-not "Analyzing vectorizable constructor" "slp1" } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "slp1" { target { ! vect_fully_masked } } } } */
...@@ -2183,6 +2183,10 @@ vect_analyze_slp_instance (vec_info *vinfo, ...@@ -2183,6 +2183,10 @@ vect_analyze_slp_instance (vec_info *vinfo,
else else
return false; return false;
} }
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location,
"Analyzing vectorizable constructor: %G\n",
stmt_info->stmt);
} }
else else
{ {
...@@ -3116,31 +3120,22 @@ vect_slp_check_for_constructors (bb_vec_info bb_vinfo) ...@@ -3116,31 +3120,22 @@ vect_slp_check_for_constructors (bb_vec_info bb_vinfo)
gimple_stmt_iterator gsi; gimple_stmt_iterator gsi;
for (gsi = bb_vinfo->region_begin; 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)
if (is_gimple_assign (stmt) continue;
&& 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);
if (CONSTRUCTOR_NELTS (rhs) == 0)
continue;
poly_uint64 subparts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (rhs));
if (maybe_ne (subparts, CONSTRUCTOR_NELTS (rhs))) tree rhs = gimple_assign_rhs1 (stmt);
continue; 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 (dump_enabled_p ()) stmt_vec_info stmt_info = bb_vinfo->lookup_stmt (stmt);
dump_printf_loc (MSG_NOTE, vect_location, BB_VINFO_GROUPED_STORES (bb_vinfo).safe_push (stmt_info);
"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);
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment