diff options
author | Richard Biener <rguenther@suse.de> | 2017-09-27 13:06:34 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-09-27 13:06:34 +0000 |
commit | 99124c31f9afaa8e713f3e1335d8e53c2ee61bc1 (patch) | |
tree | 583e879371e4870ee09a7e4b6505ebe81d9052b7 | |
parent | 84c8627ce00ccd0d1b644c8c72450626b3e111fd (diff) | |
download | gcc-99124c31f9afaa8e713f3e1335d8e53c2ee61bc1.zip gcc-99124c31f9afaa8e713f3e1335d8e53c2ee61bc1.tar.gz gcc-99124c31f9afaa8e713f3e1335d8e53c2ee61bc1.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/graphite-scop-detection.c | 16 | ||||
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 35 | ||||
-rw-r--r-- | gcc/graphite.h | 3 |
4 files changed, 35 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e7b5e3..d35c497 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 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 --param loop-block-tile-size=0 to disable tiling. diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index 3b1492f..351e944 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -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 () diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index fc8cd89..087a44a 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -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); + + /* 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, add_scalar_version_numbers (acc, var), + new_poly_dr (pbb, stmt, kind, isl_map_add_constraint (acc, c), subscript_sizes); } diff --git a/gcc/graphite.h b/gcc/graphite.h index d22c4f2..79793ee 100644 --- a/gcc/graphite.h +++ b/gcc/graphite.h @@ -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. */ |