mirror of git://gcc.gnu.org/git/gcc.git
graphite.h (scop::max_alias_set): New member.
2017-09-27 Richard Biener <rguenther@suse.de> * graphite.h (scop::max_alias_set): New member. * graphite-scop-detection.c: Remove references to non-existing --param in comments. (build_alias_sets): Record the maximum alias set used for drs. (build_scops): Support zero as unlimited for --param graphite-max-arrays-per-scop. * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove and inline into ... (build_poly_sr_1): ... here. Compute alias set based on the maximum alias set used for drs rather than PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP From-SVN: r253229
This commit is contained in:
parent
84c8627ce0
commit
99124c31f9
|
|
@ -1,3 +1,17 @@
|
|||
2017-09-27 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* graphite.h (scop::max_alias_set): New member.
|
||||
* graphite-scop-detection.c: Remove references to non-existing
|
||||
--param in comments.
|
||||
(build_alias_sets): Record the maximum alias set used for drs.
|
||||
(build_scops): Support zero as unlimited for
|
||||
--param graphite-max-arrays-per-scop.
|
||||
* graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
|
||||
and inline into ...
|
||||
(build_poly_sr_1): ... here. Compute alias set based on the
|
||||
maximum alias set used for drs rather than
|
||||
PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
|
||||
|
||||
2017-09-27 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* graphite-optimize-isl.c (get_schedule_for_node_st): Allow
|
||||
|
|
|
|||
|
|
@ -389,10 +389,7 @@ public:
|
|||
|
||||
void remove_intersecting_scops (sese_l s1);
|
||||
|
||||
/* Return true when a statement in SCOP cannot be represented by Graphite.
|
||||
The assumptions are that L1 dominates L2, and SCOP->entry dominates L1.
|
||||
Limit the number of bbs between adjacent loops to
|
||||
PARAM_SCOP_MAX_NUM_BBS_BETWEEN_LOOPS. */
|
||||
/* Return true when a statement in SCOP cannot be represented by Graphite. */
|
||||
|
||||
bool harmful_loop_in_region (sese_l scop) const;
|
||||
|
||||
|
|
@ -760,10 +757,7 @@ scop_detection::add_scop (sese_l s)
|
|||
DEBUG_PRINT (dp << "[scop-detection] Adding SCoP: "; print_sese (dump_file, s));
|
||||
}
|
||||
|
||||
/* Return true when a statement in SCOP cannot be represented by Graphite.
|
||||
The assumptions are that L1 dominates L2, and SCOP->entry dominates L1.
|
||||
Limit the number of bbs between adjacent loops to
|
||||
PARAM_SCOP_MAX_NUM_BBS_BETWEEN_LOOPS. */
|
||||
/* Return true when a statement in SCOP cannot be represented by Graphite. */
|
||||
|
||||
bool
|
||||
scop_detection::harmful_loop_in_region (sese_l scop) const
|
||||
|
|
@ -1531,7 +1525,8 @@ build_alias_set (scop_p scop)
|
|||
for (i = 0; i < num_vertices; i++)
|
||||
all_vertices[i] = i;
|
||||
|
||||
graphds_dfs (g, all_vertices, num_vertices, NULL, true, NULL);
|
||||
scop->max_alias_set
|
||||
= graphds_dfs (g, all_vertices, num_vertices, NULL, true, NULL) + 1;
|
||||
free (all_vertices);
|
||||
|
||||
for (i = 0; i < g->n_vertices; i++)
|
||||
|
|
@ -1755,7 +1750,8 @@ build_scops (vec<scop_p> *scops)
|
|||
}
|
||||
|
||||
unsigned max_arrays = PARAM_VALUE (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP);
|
||||
if (scop->drs.length () >= max_arrays)
|
||||
if (max_arrays > 0
|
||||
&& scop->drs.length () >= max_arrays)
|
||||
{
|
||||
DEBUG_PRINT (dp << "[scop-detection-fail] too many data references: "
|
||||
<< scop->drs.length ()
|
||||
|
|
|
|||
|
|
@ -491,25 +491,6 @@ pdr_add_alias_set (isl_map *acc, dr_info &dri)
|
|||
return isl_map_add_constraint (acc, c);
|
||||
}
|
||||
|
||||
/* Add a constrain to the ACCESSES polyhedron for the alias set of
|
||||
data reference DR. ACCESSP_NB_DIMS is the dimension of the
|
||||
ACCESSES polyhedron, DOM_NB_DIMS is the dimension of the iteration
|
||||
domain. */
|
||||
|
||||
static isl_map *
|
||||
add_scalar_version_numbers (isl_map *acc, tree var)
|
||||
{
|
||||
isl_constraint *c = isl_equality_alloc
|
||||
(isl_local_space_from_space (isl_map_get_space (acc)));
|
||||
int max_arrays = PARAM_VALUE (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP);
|
||||
/* Each scalar variables has a unique alias set number starting from
|
||||
max_arrays. */
|
||||
c = isl_constraint_set_constant_si (c, -max_arrays - SSA_NAME_VERSION (var));
|
||||
c = isl_constraint_set_coefficient_si (c, isl_dim_out, 0, 1);
|
||||
|
||||
return isl_map_add_constraint (acc, c);
|
||||
}
|
||||
|
||||
/* Assign the affine expression INDEX to the output dimension POS of
|
||||
MAP and return the result. */
|
||||
|
||||
|
|
@ -684,13 +665,21 @@ static void
|
|||
build_poly_sr_1 (poly_bb_p pbb, gimple *stmt, tree var, enum poly_dr_type kind,
|
||||
isl_map *acc, isl_set *subscript_sizes)
|
||||
{
|
||||
int max_arrays = PARAM_VALUE (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP);
|
||||
scop_p scop = PBB_SCOP (pbb);
|
||||
/* Each scalar variables has a unique alias set number starting from
|
||||
max_arrays. */
|
||||
the maximum alias set assigned to a dr. */
|
||||
int alias_set = scop->max_alias_set + SSA_NAME_VERSION (var);
|
||||
subscript_sizes = isl_set_fix_si (subscript_sizes, isl_dim_set, 0,
|
||||
max_arrays + SSA_NAME_VERSION (var));
|
||||
alias_set);
|
||||
|
||||
new_poly_dr (pbb, stmt, kind, add_scalar_version_numbers (acc, var),
|
||||
/* Add a constrain to the ACCESSES polyhedron for the alias set of
|
||||
data reference DR. */
|
||||
isl_constraint *c
|
||||
= isl_equality_alloc (isl_local_space_from_space (isl_map_get_space (acc)));
|
||||
c = isl_constraint_set_constant_si (c, -alias_set);
|
||||
c = isl_constraint_set_coefficient_si (c, isl_dim_out, 0, 1);
|
||||
|
||||
new_poly_dr (pbb, stmt, kind, isl_map_add_constraint (acc, c),
|
||||
subscript_sizes);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -379,6 +379,9 @@ struct scop
|
|||
/* Number of parameters in SCoP. */
|
||||
graphite_dim_t nb_params;
|
||||
|
||||
/* The maximum alias set as assigned to drs by build_alias_sets. */
|
||||
unsigned max_alias_set;
|
||||
|
||||
/* All the basic blocks in this scop that contain memory references
|
||||
and that will be represented as statements in the polyhedral
|
||||
representation. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue