mirror of git://gcc.gnu.org/git/gcc.git
[30/46] Use stmt_vec_infos rather than gimple stmts for worklists
2018-07-31 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type of the worklist from a vector of gimple stmts to a vector of stmt_vec_infos. * tree-vect-stmts.c (vect_mark_relevant, process_use) (vect_mark_stmts_to_be_vectorized): Likewise From-SVN: r263145
This commit is contained in:
parent
a1824cfdcd
commit
eca52fdd6c
|
|
@ -1,3 +1,11 @@
|
||||||
|
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
|
* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
|
||||||
|
of the worklist from a vector of gimple stmts to a vector of
|
||||||
|
stmt_vec_infos.
|
||||||
|
* tree-vect-stmts.c (vect_mark_relevant, process_use)
|
||||||
|
(vect_mark_stmts_to_be_vectorized): Likewise
|
||||||
|
|
||||||
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
* tree-vect-loop.c (vect_analyze_loop_operations): Look up the
|
* tree-vect-loop.c (vect_analyze_loop_operations): Look up the
|
||||||
|
|
|
||||||
|
|
@ -474,7 +474,7 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
|
||||||
{
|
{
|
||||||
basic_block bb = loop->header;
|
basic_block bb = loop->header;
|
||||||
tree init, step;
|
tree init, step;
|
||||||
auto_vec<gimple *, 64> worklist;
|
auto_vec<stmt_vec_info, 64> worklist;
|
||||||
gphi_iterator gsi;
|
gphi_iterator gsi;
|
||||||
bool double_reduc;
|
bool double_reduc;
|
||||||
|
|
||||||
|
|
@ -543,9 +543,9 @@ vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, struct loop *loop)
|
||||||
/* Second - identify all reductions and nested cycles. */
|
/* Second - identify all reductions and nested cycles. */
|
||||||
while (worklist.length () > 0)
|
while (worklist.length () > 0)
|
||||||
{
|
{
|
||||||
gimple *phi = worklist.pop ();
|
stmt_vec_info stmt_vinfo = worklist.pop ();
|
||||||
|
gphi *phi = as_a <gphi *> (stmt_vinfo->stmt);
|
||||||
tree def = PHI_RESULT (phi);
|
tree def = PHI_RESULT (phi);
|
||||||
stmt_vec_info stmt_vinfo = vinfo_for_stmt (phi);
|
|
||||||
|
|
||||||
if (dump_enabled_p ())
|
if (dump_enabled_p ())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ vect_clobber_variable (gimple *stmt, gimple_stmt_iterator *gsi, tree var)
|
||||||
Mark STMT as "relevant for vectorization" and add it to WORKLIST. */
|
Mark STMT as "relevant for vectorization" and add it to WORKLIST. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vect_mark_relevant (vec<gimple *> *worklist, gimple *stmt,
|
vect_mark_relevant (vec<stmt_vec_info> *worklist, gimple *stmt,
|
||||||
enum vect_relevant relevant, bool live_p)
|
enum vect_relevant relevant, bool live_p)
|
||||||
{
|
{
|
||||||
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
|
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
|
||||||
|
|
@ -453,7 +453,7 @@ exist_non_indexing_operands_for_use_p (tree use, gimple *stmt)
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
process_use (gimple *stmt, tree use, loop_vec_info loop_vinfo,
|
process_use (gimple *stmt, tree use, loop_vec_info loop_vinfo,
|
||||||
enum vect_relevant relevant, vec<gimple *> *worklist,
|
enum vect_relevant relevant, vec<stmt_vec_info> *worklist,
|
||||||
bool force)
|
bool force)
|
||||||
{
|
{
|
||||||
stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
|
stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
|
||||||
|
|
@ -618,16 +618,14 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo)
|
||||||
basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
|
basic_block *bbs = LOOP_VINFO_BBS (loop_vinfo);
|
||||||
unsigned int nbbs = loop->num_nodes;
|
unsigned int nbbs = loop->num_nodes;
|
||||||
gimple_stmt_iterator si;
|
gimple_stmt_iterator si;
|
||||||
gimple *stmt;
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
stmt_vec_info stmt_vinfo;
|
|
||||||
basic_block bb;
|
basic_block bb;
|
||||||
bool live_p;
|
bool live_p;
|
||||||
enum vect_relevant relevant;
|
enum vect_relevant relevant;
|
||||||
|
|
||||||
DUMP_VECT_SCOPE ("vect_mark_stmts_to_be_vectorized");
|
DUMP_VECT_SCOPE ("vect_mark_stmts_to_be_vectorized");
|
||||||
|
|
||||||
auto_vec<gimple *, 64> worklist;
|
auto_vec<stmt_vec_info, 64> worklist;
|
||||||
|
|
||||||
/* 1. Init worklist. */
|
/* 1. Init worklist. */
|
||||||
for (i = 0; i < nbbs; i++)
|
for (i = 0; i < nbbs; i++)
|
||||||
|
|
@ -665,17 +663,17 @@ vect_mark_stmts_to_be_vectorized (loop_vec_info loop_vinfo)
|
||||||
use_operand_p use_p;
|
use_operand_p use_p;
|
||||||
ssa_op_iter iter;
|
ssa_op_iter iter;
|
||||||
|
|
||||||
stmt = worklist.pop ();
|
stmt_vec_info stmt_vinfo = worklist.pop ();
|
||||||
if (dump_enabled_p ())
|
if (dump_enabled_p ())
|
||||||
{
|
{
|
||||||
dump_printf_loc (MSG_NOTE, vect_location, "worklist: examine stmt: ");
|
dump_printf_loc (MSG_NOTE, vect_location,
|
||||||
dump_gimple_stmt (MSG_NOTE, TDF_SLIM, stmt, 0);
|
"worklist: examine stmt: ");
|
||||||
|
dump_gimple_stmt (MSG_NOTE, TDF_SLIM, stmt_vinfo->stmt, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Examine the USEs of STMT. For each USE, mark the stmt that defines it
|
/* Examine the USEs of STMT. For each USE, mark the stmt that defines it
|
||||||
(DEF_STMT) as relevant/irrelevant according to the relevance property
|
(DEF_STMT) as relevant/irrelevant according to the relevance property
|
||||||
of STMT. */
|
of STMT. */
|
||||||
stmt_vinfo = vinfo_for_stmt (stmt);
|
|
||||||
relevant = STMT_VINFO_RELEVANT (stmt_vinfo);
|
relevant = STMT_VINFO_RELEVANT (stmt_vinfo);
|
||||||
|
|
||||||
/* Generally, the relevance property of STMT (in STMT_VINFO_RELEVANT) is
|
/* Generally, the relevance property of STMT (in STMT_VINFO_RELEVANT) is
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue