This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Graphite-Branch] Move from NNC_Polyhedron to C_Polyhedron.
- From: Tobias Grosser <grosser at fim dot uni-passau dot de>
- To: gcc-patches at gcc dot gnu dot org, gcc-graphite at googlegroups dot com
- Cc: Tobias Grosser <grosser at fim dot uni-passau dot de>
- Date: Fri, 10 Jul 2009 11:22:47 +0200
- Subject: [Graphite-Branch] Move from NNC_Polyhedron to C_Polyhedron.
- References: <2400_1247145676_4A55EECB_2400_20_2_4A55EEC3.1070300@inria.fr>
As discussed in
http://groups.google.com/group/gcc-graphite/t/877b73d30c8bae2e, we do not
need non necessarily closed (NNC) polyhedron in Graphite. To improve
performance switch back to C_Polyhedron.
Converted everything with s/_NNC_/_C_/g and replaced every strict
inequality a < b or a > b with a + 1 <= b or a >= b + 1.
2009-07-10 Tobias Grosser <grosser@fim.uni-passau.de>
* graphite-dependences.c (map_into_dep_poly, map_dr_into_dep_poly,
build_pairwise_constraint, dr_equality_constraints,
build_pairwise_scheduling_equality,
build_pairwise_scheduling_inequality, lexicographically_gt_p,
build_lexicographically_gt_constraint, dependence_polyhedron,
graphite_legal_transform_dr, graphite_carried_dependence_level_k):
Move from NNC_Polyhedron to C_Polyhedron.
* graphite-interchange.c (compute_array_size_poly,
gather_access_strides): Dito.
* graphite-poly.c (apply_poly_transforms, new_poly_dr, free_poly_bb,
free_scop, pbb_number_of_iterations): Dito.
* graphite-poly.h (struct poly_dr, pdr_nb_subscripts, struct poly_bb,
pbb_dim_iter_domain, struct scop): Dito.
* graphite-ppl.c (new_Constraint_System_from_Cloog_Matrix,
new_Cloog_Domain_from_ppl_Polyhedron,
new_Cloog_Domain_from_ppl_Pointset_Powerset, ppl_set_coef_gmp,
ppl_insert_dimensions_pointset, ppl_insert_dimensions_pointset,
ppl_strip_loop, ppl_strip_loop, ppl_print_polyhedron_matrix,
ppl_print_powerset_matrix, debug_ppl_polyhedron_matrix,
debug_ppl_powerset_matrix, ppl_read_polyhedron_matrix): Dito.
* graphite-ppl.h (ppl_Pointset_Powerset_C_Polyhedron_t,
new_C_Polyhedron_from_Cloog_Matrix, ppl_print_powerset_matrix,
debug_ppl_powerset_matrix, ppl_insert_dimensions_pointset): Dito.
* graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons,
build_loop_iteration_domains, ppl_constraint_type_from_tree_code,
add_condition_to_domain, add_condition_to_pbb, build_scop_context,
build_scop_iteration_domain, build_poly_dr): Dito
---
gcc/ChangeLog.graphite | 30 ++++++++
gcc/graphite-dependences.c | 164 ++++++++++++++++++++++---------------------
gcc/graphite-interchange.c | 44 ++++++------
gcc/graphite-poly.c | 14 ++--
gcc/graphite-poly.h | 16 ++--
gcc/graphite-ppl.c | 64 ++++++++--------
gcc/graphite-ppl.h | 11 ++--
gcc/graphite-sese-to-poly.c | 91 ++++++++++++++++--------
8 files changed, 248 insertions(+), 186 deletions(-)
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index c8727a3..9f38d93 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,3 +1,33 @@
+2009-07-10 Tobias Grosser <grosser@fim.uni-passau.de>
+
+ * graphite-dependences.c (map_into_dep_poly, map_dr_into_dep_poly,
+ build_pairwise_constraint, dr_equality_constraints,
+ build_pairwise_scheduling_equality,
+ build_pairwise_scheduling_inequality, lexicographically_gt_p,
+ build_lexicographically_gt_constraint, dependence_polyhedron,
+ graphite_legal_transform_dr, graphite_carried_dependence_level_k):
+ Move from NNC_Polyhedron to C_Polyhedron.
+ * graphite-interchange.c (compute_array_size_poly,
+ gather_access_strides): Dito.
+ * graphite-poly.c (apply_poly_transforms, new_poly_dr, free_poly_bb,
+ free_scop, pbb_number_of_iterations): Dito.
+ * graphite-poly.h (struct poly_dr, pdr_nb_subscripts, struct poly_bb,
+ pbb_dim_iter_domain, struct scop): Dito.
+ * graphite-ppl.c (new_Constraint_System_from_Cloog_Matrix,
+ new_Cloog_Domain_from_ppl_Polyhedron,
+ new_Cloog_Domain_from_ppl_Pointset_Powerset, ppl_set_coef_gmp,
+ ppl_insert_dimensions_pointset, ppl_insert_dimensions_pointset,
+ ppl_strip_loop, ppl_strip_loop, ppl_print_polyhedron_matrix,
+ ppl_print_powerset_matrix, debug_ppl_polyhedron_matrix,
+ debug_ppl_powerset_matrix, ppl_read_polyhedron_matrix): Dito.
+ * graphite-ppl.h (ppl_Pointset_Powerset_C_Polyhedron_t,
+ new_C_Polyhedron_from_Cloog_Matrix, ppl_print_powerset_matrix,
+ debug_ppl_powerset_matrix, ppl_insert_dimensions_pointset): Dito.
+ * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons,
+ build_loop_iteration_domains, ppl_constraint_type_from_tree_code,
+ add_condition_to_domain, add_condition_to_pbb, build_scop_context,
+ build_scop_iteration_domain, build_poly_dr): Dito
+
2009-07-09 Sebastian Pop <sebastian.pop@amd.com>
* testsuite/gcc.dg/graphite/graphite.exp: Added a rule to execute
diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c
index 6dbbc19..753e016 100644
--- a/gcc/graphite-dependences.c
+++ b/gcc/graphite-dependences.c
@@ -55,15 +55,15 @@ along with GCC; see the file COPYING3. If not see
Maps the dimensions [0, ..., cut - 1] of polyhedron P to OFFSET0
and the dimensions [cut, ..., nb_dim] to DIM - GDIM. */
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
map_into_dep_poly (graphite_dim_t dim, graphite_dim_t gdim,
- ppl_Pointset_Powerset_NNC_Polyhedron_t p,
+ ppl_Pointset_Powerset_C_Polyhedron_t p,
graphite_dim_t cut,
graphite_dim_t offset)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron (&res, p);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (&res, p);
ppl_insert_dimensions_pointset (res, 0, offset);
ppl_insert_dimensions_pointset (res, offset + cut, dim - offset - cut - gdim);
@@ -78,19 +78,19 @@ map_into_dep_poly (graphite_dim_t dim, graphite_dim_t gdim,
Add DIM - NB0 - NB1 - PDIM zeros between "c" and "b": "00...0 a 00...0 c 00...0 b"
*/
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
map_dr_into_dep_poly (graphite_dim_t dim,
- ppl_Pointset_Powerset_NNC_Polyhedron_t dr,
+ ppl_Pointset_Powerset_C_Polyhedron_t dr,
graphite_dim_t cut0, graphite_dim_t cut1,
graphite_dim_t nb0, graphite_dim_t nb1)
{
ppl_dimension_type pdim;
ppl_dimension_type *map;
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
ppl_dimension_type i;
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron (&res, dr);
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (res, &pdim);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (&res, dr);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (res, &pdim);
map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, pdim);
@@ -104,7 +104,7 @@ map_dr_into_dep_poly (graphite_dim_t dim,
for (i = cut1; i < pdim; i++)
map[i] = cut0 + i - cut1;
- ppl_Pointset_Powerset_NNC_Polyhedron_map_space_dimensions (res, map, pdim);
+ ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (res, map, pdim);
free (map);
/* After swapping 's' and 'g' vectors, we have to update a new cut. */
@@ -160,12 +160,12 @@ build_pairwise_constraint (graphite_dim_t dim,
/* Builds subscript equality constraints. */
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
dr_equality_constraints (graphite_dim_t dim,
graphite_dim_t pos, graphite_dim_t nb_subscripts)
{
ppl_Polyhedron_t subscript_equalities;
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
Value v, v_op;
graphite_dim_t i;
@@ -174,7 +174,7 @@ dr_equality_constraints (graphite_dim_t dim,
value_set_si (v, 1);
value_set_si (v_op, -1);
- ppl_new_NNC_Polyhedron_from_space_dimension (&subscript_equalities, dim, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&subscript_equalities, dim, 0);
for (i = 0; i < nb_subscripts; i++)
{
ppl_Linear_Expression_t expr;
@@ -197,7 +197,7 @@ dr_equality_constraints (graphite_dim_t dim,
ppl_delete_Coefficient (coef);
}
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&res, subscript_equalities);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, subscript_equalities);
value_clear (v);
value_clear (v_op);
ppl_delete_Polyhedron (subscript_equalities);
@@ -207,48 +207,50 @@ dr_equality_constraints (graphite_dim_t dim,
/* Builds scheduling equality constraints. */
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
build_pairwise_scheduling_equality (graphite_dim_t dim,
graphite_dim_t pos, graphite_dim_t offset)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
ppl_Polyhedron_t equalities;
ppl_Constraint_t cstr;
- ppl_new_NNC_Polyhedron_from_space_dimension (&equalities, dim, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
cstr = build_pairwise_constraint (dim, pos, pos + offset, 0, PPL_CONSTRAINT_TYPE_EQUAL);
ppl_Polyhedron_add_constraint (equalities, cstr);
ppl_delete_Constraint (cstr);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&res, equalities);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, equalities);
ppl_delete_Polyhedron (equalities);
return res;
}
/* Builds scheduling inequality constraints. */
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
build_pairwise_scheduling_inequality (graphite_dim_t dim,
graphite_dim_t pos,
graphite_dim_t offset,
bool direction)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
ppl_Polyhedron_t equalities;
ppl_Constraint_t cstr;
- ppl_new_NNC_Polyhedron_from_space_dimension (&equalities, dim, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
if (direction)
- cstr = build_pairwise_constraint (dim, pos, pos + offset, 0, PPL_CONSTRAINT_TYPE_GREATER_THAN);
+ cstr = build_pairwise_constraint (dim, pos, pos + offset, -1,
+ PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
else
- cstr = build_pairwise_constraint (dim, pos, pos + offset, 0, PPL_CONSTRAINT_TYPE_LESS_THAN);
+ cstr = build_pairwise_constraint (dim, pos, pos + offset, 1,
+ PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
ppl_Polyhedron_add_constraint (equalities, cstr);
ppl_delete_Constraint (cstr);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&res, equalities);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, equalities);
ppl_delete_Polyhedron (equalities);
return res;
}
@@ -257,21 +259,21 @@ build_pairwise_scheduling_inequality (graphite_dim_t dim,
to the RES dependence polyhedron returns an empty polyhedron. */
static bool
-lexicographically_gt_p (ppl_Pointset_Powerset_NNC_Polyhedron_t res,
+lexicographically_gt_p (ppl_Pointset_Powerset_C_Polyhedron_t res,
graphite_dim_t dim,
graphite_dim_t offset,
bool direction, graphite_dim_t i)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t ineq;
+ ppl_Pointset_Powerset_C_Polyhedron_t ineq;
bool empty_p;
ineq = build_pairwise_scheduling_inequality (dim, i, offset,
direction);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (ineq, res);
- empty_p = ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (ineq);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (ineq, res);
+ empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (ineq);
if (!empty_p)
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, ineq);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (ineq);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, ineq);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (ineq);
return !empty_p;
}
@@ -280,7 +282,7 @@ lexicographically_gt_p (ppl_Pointset_Powerset_NNC_Polyhedron_t res,
of time vectors RES following the lexicographical order. */
static void
-build_lexicographically_gt_constraint (ppl_Pointset_Powerset_NNC_Polyhedron_t res,
+build_lexicographically_gt_constraint (ppl_Pointset_Powerset_C_Polyhedron_t res,
graphite_dim_t dim,
graphite_dim_t tdim1, graphite_dim_t offset,
bool direction)
@@ -292,11 +294,11 @@ build_lexicographically_gt_constraint (ppl_Pointset_Powerset_NNC_Polyhedron_t re
for (i = 0; i < tdim1 - 1; i++)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t sceq;
+ ppl_Pointset_Powerset_C_Polyhedron_t sceq;
sceq = build_pairwise_scheduling_equality (dim, i, offset);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, sceq);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (sceq);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, sceq);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (sceq);
if (lexicographically_gt_p (res, dim, offset, direction, i + 1))
return;
@@ -304,18 +306,18 @@ build_lexicographically_gt_constraint (ppl_Pointset_Powerset_NNC_Polyhedron_t re
if (i == tdim1 - 1)
{
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (res);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension (&res, dim, 1);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (res);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 1);
}
}
/* Build the dependence polyhedron for data references PDR1 and PDR2. */
-static ppl_Pointset_Powerset_NNC_Polyhedron_t
+static ppl_Pointset_Powerset_C_Polyhedron_t
dependence_polyhedron (poly_bb_p pbb1, poly_bb_p pbb2,
- ppl_Pointset_Powerset_NNC_Polyhedron_t d1,
- ppl_Pointset_Powerset_NNC_Polyhedron_t d2,
+ ppl_Pointset_Powerset_C_Polyhedron_t d1,
+ ppl_Pointset_Powerset_C_Polyhedron_t d2,
poly_dr_p pdr1, poly_dr_p pdr2,
ppl_Polyhedron_t s1, ppl_Polyhedron_t s2,
bool direction,
@@ -333,13 +335,13 @@ dependence_polyhedron (poly_bb_p pbb1, poly_bb_p pbb2,
graphite_dim_t dim1 = pdr_dim (pdr1);
graphite_dim_t dim2 = pdr_dim (pdr2);
graphite_dim_t dim = tdim1 + tdim2 + dim1 + dim2;
- ppl_Pointset_Powerset_NNC_Polyhedron_t res;
- ppl_Pointset_Powerset_NNC_Polyhedron_t id1, id2, isc1, isc2, idr1, idr2;
- ppl_Pointset_Powerset_NNC_Polyhedron_t sc1, sc2, dreq;
+ ppl_Pointset_Powerset_C_Polyhedron_t res;
+ ppl_Pointset_Powerset_C_Polyhedron_t id1, id2, isc1, isc2, idr1, idr2;
+ ppl_Pointset_Powerset_C_Polyhedron_t sc1, sc2, dreq;
gcc_assert (PBB_SCOP (pbb1) == PBB_SCOP (pbb2));
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&sc1, s1);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&sc2, s2);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&sc1, s1);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&sc2, s2);
id1 = map_into_dep_poly (dim, gdim, d1, ddim1, tdim1);
id2 = map_into_dep_poly (dim, gdim, d2, ddim2, tdim1 + ddim1 + tdim2);
@@ -354,25 +356,25 @@ dependence_polyhedron (poly_bb_p pbb1, poly_bb_p pbb2,
/* Now add the subscript equalities. */
dreq = dr_equality_constraints (dim, tdim1 + ddim1 + tdim2 + ddim2, sdim1);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_space_dimension (&res, dim, 0);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, id1);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, id2);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, isc1);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, isc2);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, idr1);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, idr2);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (res, dreq);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (id1);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (id2);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (sc1);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (sc2);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (isc1);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (isc2);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (idr1);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (idr2);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (dreq);
-
- if (!ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (res))
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (&res, dim, 0);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, id1);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, id2);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, isc1);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, isc2);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr1);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, idr2);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (res, dreq);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (id1);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (id2);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (sc1);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (sc2);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (isc1);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (isc2);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (idr1);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (idr2);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (dreq);
+
+ if (!ppl_Pointset_Powerset_C_Polyhedron_is_empty (res))
build_lexicographically_gt_constraint (res, dim, MIN (tdim1, tdim2),
tdim1 + ddim1, direction);
@@ -387,11 +389,11 @@ static bool
graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
poly_dr_p pdr1, poly_dr_p pdr2)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t d1 = PBB_DOMAIN (pbb1);
- ppl_Pointset_Powerset_NNC_Polyhedron_t d2 = PBB_DOMAIN (pbb2);
+ ppl_Pointset_Powerset_C_Polyhedron_t d1 = PBB_DOMAIN (pbb1);
+ ppl_Pointset_Powerset_C_Polyhedron_t d2 = PBB_DOMAIN (pbb2);
ppl_Polyhedron_t so1 = PBB_ORIGINAL_SCATTERING (pbb1);
ppl_Polyhedron_t so2 = PBB_ORIGINAL_SCATTERING (pbb2);
- ppl_Pointset_Powerset_NNC_Polyhedron_t po;
+ ppl_Pointset_Powerset_C_Polyhedron_t po;
graphite_dim_t sdim1 = pdr_nb_subscripts (pdr1) + 1;
graphite_dim_t sdim2 = pdr_nb_subscripts (pdr2) + 1;
@@ -401,13 +403,13 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
po = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, so1, so2, true, true);
- if (ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (po))
+ if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (po))
return true;
else
{
ppl_Polyhedron_t st1 = PBB_TRANSFORMED_SCATTERING (pbb1);
ppl_Polyhedron_t st2 = PBB_TRANSFORMED_SCATTERING (pbb2);
- ppl_Pointset_Powerset_NNC_Polyhedron_t pt;
+ ppl_Pointset_Powerset_C_Polyhedron_t pt;
graphite_dim_t ddim1 = pbb_dim_iter_domain (pbb1);
graphite_dim_t otdim1 = pbb_nb_scattering_orig (pbb1);
graphite_dim_t otdim2 = pbb_nb_scattering_orig (pbb2);
@@ -422,8 +424,8 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
ppl_insert_dimensions_pointset (pt, 0, otdim1);
ppl_insert_dimensions_pointset (pt, otdim1 + ttdim1 + ddim1, otdim2);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (po, pt);
- return ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (po);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (po, pt);
+ return ppl_Pointset_Powerset_C_Polyhedron_is_empty (po);
}
}
@@ -470,12 +472,12 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
{
poly_bb_p pbb1 = PDR_PBB (pdr1);
poly_bb_p pbb2 = PDR_PBB (pdr2);
- ppl_Pointset_Powerset_NNC_Polyhedron_t d1 = PBB_DOMAIN (pbb1);
- ppl_Pointset_Powerset_NNC_Polyhedron_t d2 = PBB_DOMAIN (pbb2);
+ ppl_Pointset_Powerset_C_Polyhedron_t d1 = PBB_DOMAIN (pbb1);
+ ppl_Pointset_Powerset_C_Polyhedron_t d2 = PBB_DOMAIN (pbb2);
ppl_Polyhedron_t so1 = PBB_TRANSFORMED_SCATTERING (pbb1);
ppl_Polyhedron_t so2 = PBB_TRANSFORMED_SCATTERING (pbb2);
- ppl_Pointset_Powerset_NNC_Polyhedron_t po;
- ppl_Pointset_Powerset_NNC_Polyhedron_t eqpp;
+ ppl_Pointset_Powerset_C_Polyhedron_t po;
+ ppl_Pointset_Powerset_C_Polyhedron_t eqpp;
graphite_dim_t sdim1 = pdr_nb_subscripts (pdr1) + 1;
graphite_dim_t sdim2 = pdr_nb_subscripts (pdr2) + 1;
graphite_dim_t tdim1 = pbb_nb_scattering_transform (pbb1);
@@ -487,20 +489,20 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
return true;
po = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, so1, so2, true, false);
- if (ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (po))
+ if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (po))
{
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (po);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (po);
return false;
}
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (po, &dim);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &dim);
eqpp = build_pairwise_scheduling_inequality (dim, level, tdim1 + ddim1, 1);
- ppl_Pointset_Powerset_NNC_Polyhedron_intersection_assign (eqpp, po);
- empty_p = ppl_Pointset_Powerset_NNC_Polyhedron_is_empty (eqpp);
+ ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po);
+ empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (eqpp);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (po);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (eqpp);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (po);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (eqpp);
return !empty_p;
}
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c
index 0697c60..4639afe 100644
--- a/gcc/graphite-interchange.c
+++ b/gcc/graphite-interchange.c
@@ -174,8 +174,8 @@ compute_array_size_poly (poly_dr_p pdr, ppl_dimension_type sub_dim, Value array_
static void
compute_array_size (poly_dr_p pdr, ppl_dimension_type sub_dim, Value array_size)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t data_container = PDR_DATA_CONTAINER (pdr);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t it, end;
+ ppl_Pointset_Powerset_C_Polyhedron_t data_container = PDR_DATA_CONTAINER (pdr);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
Value val;
value_set_si (array_size, 1);
@@ -183,24 +183,24 @@ compute_array_size (poly_dr_p pdr, ppl_dimension_type sub_dim, Value array_size)
return;
value_init (val);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&end);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
- for (ppl_Pointset_Powerset_NNC_Polyhedron_iterator_begin (data_container, it),
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_end (data_container, end);
- !ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment (it))
+ for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (data_container, it),
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_end (data_container, end);
+ !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
{
ppl_const_Polyhedron_t ph;
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_dereference (it, &ph);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
compute_array_size_poly (pdr, sub_dim, val, ph);
value_max (array_size, array_size, val);
}
value_clear (val);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (end);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
}
/* Computes ACCESS_STRIDES, the sum of all the strides of PDR at
@@ -263,29 +263,29 @@ gather_access_strides (poly_dr_p pdr, graphite_dim_t loop_depth,
{
ppl_dimension_type loop_dim = pdr_iterator_dim (pdr, loop_depth);
- ppl_Pointset_Powerset_NNC_Polyhedron_t accesses = PDR_ACCESSES (pdr);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t it, end;
+ ppl_Pointset_Powerset_C_Polyhedron_t accesses = PDR_ACCESSES (pdr);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
Value res;
value_init (res);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&end);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
- for (ppl_Pointset_Powerset_NNC_Polyhedron_iterator_begin (accesses, it),
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_end (accesses, end);
- !ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment (it))
+ for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (accesses, it),
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_end (accesses, end);
+ !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
{
ppl_const_Polyhedron_t ph;
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_dereference (it, &ph);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
gather_access_strides_poly (pdr, ph, loop_dim, res);
value_addto (access_strides, access_strides, res);
}
value_clear (res);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (end);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
}
/* Returns true when it is profitable to interchange loop at depth1
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index 5fa0461..087cf36 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -299,8 +299,8 @@ apply_poly_transforms (scop_p scop)
void
new_poly_dr (poly_bb_p pbb,
- ppl_Pointset_Powerset_NNC_Polyhedron_t accesses,
- ppl_Pointset_Powerset_NNC_Polyhedron_t data_container,
+ ppl_Pointset_Powerset_C_Polyhedron_t accesses,
+ ppl_Pointset_Powerset_C_Polyhedron_t data_container,
enum POLY_DR_TYPE type, void *cdr)
{
poly_dr_p pdr = XNEW (struct poly_dr);
@@ -318,7 +318,7 @@ new_poly_dr (poly_bb_p pbb,
void
free_poly_dr (poly_dr_p pdr)
{
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (PDR_ACCESSES (pdr));
+ ppl_delete_Pointset_Powerset_C_Polyhedron (PDR_ACCESSES (pdr));
XDELETE (pdr);
}
@@ -349,7 +349,7 @@ free_poly_bb (poly_bb_p pbb)
int i;
poly_dr_p pdr;
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (PBB_DOMAIN (pbb));
+ ppl_delete_Pointset_Powerset_C_Polyhedron (PBB_DOMAIN (pbb));
if (PBB_TRANSFORMED_SCATTERING (pbb))
ppl_delete_Polyhedron (PBB_TRANSFORMED_SCATTERING (pbb));
@@ -463,7 +463,7 @@ free_scop (scop_p scop)
VEC_free (poly_bb_p, heap, SCOP_BBS (scop));
if (SCOP_CONTEXT (scop))
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (SCOP_CONTEXT (scop));
+ ppl_delete_Pointset_Powerset_C_Polyhedron (SCOP_CONTEXT (scop));
XDELETE (scop);
}
@@ -747,10 +747,10 @@ pbb_number_of_iterations (poly_bb_p pbb, graphite_dim_t loop_depth, Value niter)
value_init (dv);
ppl_new_Coefficient (&num);
ppl_new_Coefficient (&denom);
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim);
ppl_new_Linear_Expression_with_dimension (&le, dim);
ppl_set_coef (le, loop_iter, 1);
- ppl_Pointset_Powerset_NNC_Polyhedron_maximize (PBB_DOMAIN (pbb), le,
+ ppl_Pointset_Powerset_C_Polyhedron_maximize (PBB_DOMAIN (pbb), le,
num, denom, &maximum);
if (maximum == 1)
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index bb8b625..bb0053c 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -131,8 +131,8 @@ struct poly_dr
| i j k a 1
| 0 0 0 -1 15 = 0 */
- ppl_Pointset_Powerset_NNC_Polyhedron_t accesses;
- ppl_Pointset_Powerset_NNC_Polyhedron_t data_container;
+ ppl_Pointset_Powerset_C_Polyhedron_t accesses;
+ ppl_Pointset_Powerset_C_Polyhedron_t data_container;
};
#define PDR_CDR(PDR) (PDR->compiler_dr)
@@ -141,8 +141,8 @@ struct poly_dr
#define PDR_ACCESSES(PDR) (PDR->accesses)
#define PDR_DATA_CONTAINER(PDR) (PDR->data_container)
-void new_poly_dr (poly_bb_p, ppl_Pointset_Powerset_NNC_Polyhedron_t,
- ppl_Pointset_Powerset_NNC_Polyhedron_t,
+void new_poly_dr (poly_bb_p, ppl_Pointset_Powerset_C_Polyhedron_t,
+ ppl_Pointset_Powerset_C_Polyhedron_t,
enum POLY_DR_TYPE, void *);
void free_poly_dr (poly_dr_p);
void debug_pdr (poly_dr_p);
@@ -157,7 +157,7 @@ pdr_nb_subscripts (poly_dr_p pdr)
poly_bb_p pbb = PDR_PBB (pdr);
ppl_dimension_type dim;
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (PDR_ACCESSES (pdr), &dim);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PDR_ACCESSES (pdr), &dim);
return dim - pbb_dim_iter_domain (pbb) - pbb_nb_params (pbb) - 1;
}
@@ -254,7 +254,7 @@ struct poly_bb
The number of variables in the DOMAIN may change and is not
related to the number of loops in the original code. */
- ppl_Pointset_Powerset_NNC_Polyhedron_t domain;
+ ppl_Pointset_Powerset_C_Polyhedron_t domain;
/* The data references we access. */
VEC (poly_dr_p, heap) *drs;
@@ -330,7 +330,7 @@ pbb_dim_iter_domain (const struct poly_bb *pbb)
scop_p scop = PBB_SCOP (pbb);
ppl_dimension_type dim;
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim);
return dim - scop_nb_params (scop);
}
@@ -525,7 +525,7 @@ struct scop
-128 >= a >= 127
0 >= b >= 65,535
c = 2a + b */
- ppl_Pointset_Powerset_NNC_Polyhedron_t context;
+ ppl_Pointset_Powerset_C_Polyhedron_t context;
};
#define SCOP_BBS(S) (S->bbs)
diff --git a/gcc/graphite-ppl.c b/gcc/graphite-ppl.c
index 5037aea..71bbb0a 100644
--- a/gcc/graphite-ppl.c
+++ b/gcc/graphite-ppl.c
@@ -85,12 +85,12 @@ new_Constraint_System_from_Cloog_Matrix (ppl_Constraint_System_t *pcs,
/* Creates a PPL Polyhedron from MATRIX. */
void
-new_NNC_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *ph,
+new_C_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *ph,
CloogMatrix *matrix)
{
ppl_Constraint_System_t cs;
new_Constraint_System_from_Cloog_Matrix (&cs, matrix);
- ppl_new_NNC_Polyhedron_recycle_Constraint_System (ph, cs);
+ ppl_new_C_Polyhedron_recycle_Constraint_System (ph, cs);
}
/* Counts the number of constraints in PCS. */
@@ -239,23 +239,23 @@ new_Cloog_Domain_from_ppl_Polyhedron (ppl_const_Polyhedron_t ph)
CloogDomain *
new_Cloog_Domain_from_ppl_Pointset_Powerset (
- ppl_Pointset_Powerset_NNC_Polyhedron_t ps)
+ ppl_Pointset_Powerset_C_Polyhedron_t ps)
{
CloogDomain *res = NULL;
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t it, end;
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&end);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
- for (ppl_Pointset_Powerset_NNC_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment (it))
+ for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
+ !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
{
ppl_const_Polyhedron_t ph;
CloogDomain *tmp;
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_dereference (it, &ph);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
tmp = new_Cloog_Domain_from_ppl_Polyhedron (ph);
if (res == NULL)
@@ -264,8 +264,8 @@ new_Cloog_Domain_from_ppl_Pointset_Powerset (
res = cloog_domain_union (res, tmp);
}
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (end);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
gcc_assert (res != NULL);
@@ -336,7 +336,7 @@ ppl_set_coef_gmp (ppl_Linear_Expression_t e, ppl_dimension_type i, Value x)
*/
void
-ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_NNC_Polyhedron_t ph, int x,
+ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t ph, int x,
int nb_new_dims)
{
ppl_dimension_type i, dim;
@@ -346,8 +346,8 @@ ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_NNC_Polyhedron_t ph, int x
x_ppl = (ppl_dimension_type) x;
nb_new_dims_ppl = (ppl_dimension_type) nb_new_dims;
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (ph, &dim);
- ppl_Pointset_Powerset_NNC_Polyhedron_add_space_dimensions_and_embed (ph, nb_new_dims);
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (ph, &dim);
+ ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (ph, nb_new_dims);
map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim + nb_new_dims);
@@ -360,7 +360,7 @@ ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_NNC_Polyhedron_t ph, int x
for (i = x_ppl + nb_new_dims_ppl; i < dim + nb_new_dims_ppl; i++)
map[i - nb_new_dims_ppl] = i;
- ppl_Pointset_Powerset_NNC_Polyhedron_map_space_dimensions (ph, map, dim + nb_new_dims);
+ ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (ph, map, dim + nb_new_dims);
free (map);
}
@@ -430,7 +430,7 @@ ppl_strip_loop (ppl_Polyhedron_t ph, ppl_dimension_type loop, int stride)
ppl_Polyhedron_get_constraints (ph, &pcs);
/* Start from a copy of the constraints. */
- ppl_new_NNC_Polyhedron_from_space_dimension (&res, dim + 1, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&res, dim + 1, 0);
ppl_Polyhedron_add_constraints (res, pcs);
/* Add an empty dimension for the strip loop. */
@@ -441,7 +441,7 @@ ppl_strip_loop (ppl_Polyhedron_t ph, ppl_dimension_type loop, int stride)
{
ppl_Polyhedron_t tmp;
- ppl_new_NNC_Polyhedron_from_space_dimension (&tmp, dim + 1, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&tmp, dim + 1, 0);
ppl_new_Constraint_System_const_iterator (&cit);
ppl_new_Constraint_System_const_iterator (&end);
@@ -565,26 +565,26 @@ ppl_print_polyhedron_matrix (FILE *file, ppl_const_Polyhedron_t ph)
void
ppl_print_powerset_matrix (FILE *file,
- ppl_Pointset_Powerset_NNC_Polyhedron_t ps)
+ ppl_Pointset_Powerset_C_Polyhedron_t ps)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_t it, end;
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_t it, end;
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&it);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_iterator (&end);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&it);
+ ppl_new_Pointset_Powerset_C_Polyhedron_iterator (&end);
- for (ppl_Pointset_Powerset_NNC_Polyhedron_iterator_begin (ps, it),
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_end (ps, end);
- !ppl_Pointset_Powerset_NNC_Polyhedron_iterator_equal_test (it, end);
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_increment (it))
+ for (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (ps, it),
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_end (ps, end);
+ !ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (it, end);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (it))
{
ppl_const_Polyhedron_t ph;
- ppl_Pointset_Powerset_NNC_Polyhedron_iterator_dereference (it, &ph);
+ ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (it, &ph);
ppl_print_polyhedron_matrix (file, ph);
}
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (it);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron_iterator (end);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (it);
+ ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
}
/* Print to STDERR the polyhedron PH under its PolyLib matrix form. */
@@ -598,7 +598,7 @@ debug_ppl_polyhedron_matrix (ppl_Polyhedron_t ph)
/* Print to STDERR the powerset PS in its PolyLib matrix form. */
void
-debug_ppl_powerset_matrix (ppl_Pointset_Powerset_NNC_Polyhedron_t ps)
+debug_ppl_powerset_matrix (ppl_Pointset_Powerset_C_Polyhedron_t ps)
{
ppl_print_powerset_matrix (stderr, ps);
}
@@ -610,7 +610,7 @@ void
ppl_read_polyhedron_matrix (ppl_Polyhedron_t *ph, FILE *file)
{
CloogMatrix *mat = cloog_matrix_read (file);
- new_NNC_Polyhedron_from_Cloog_Matrix (ph, mat);
+ new_C_Polyhedron_from_Cloog_Matrix (ph, mat);
cloog_matrix_free (mat);
}
#endif
diff --git a/gcc/graphite-ppl.h b/gcc/graphite-ppl.h
index ef376ac..8a23c93 100644
--- a/gcc/graphite-ppl.h
+++ b/gcc/graphite-ppl.h
@@ -27,20 +27,21 @@ along with GCC; see the file COPYING3. If not see
CloogMatrix *new_Cloog_Matrix_from_ppl_Polyhedron (ppl_const_Polyhedron_t);
CloogDomain *new_Cloog_Domain_from_ppl_Polyhedron (ppl_const_Polyhedron_t);
CloogDomain * new_Cloog_Domain_from_ppl_Pointset_Powerset (
- ppl_Pointset_Powerset_NNC_Polyhedron_t);
-void new_NNC_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *, CloogMatrix *);
+ ppl_Pointset_Powerset_C_Polyhedron_t);
+void new_C_Polyhedron_from_Cloog_Matrix (ppl_Polyhedron_t *, CloogMatrix *);
void insert_constraint_into_matrix (CloogMatrix *, int, ppl_const_Constraint_t);
ppl_Polyhedron_t ppl_strip_loop (ppl_Polyhedron_t, ppl_dimension_type, int);
int ppl_lexico_compare_linear_expressions (ppl_Linear_Expression_t,
ppl_Linear_Expression_t);
void ppl_print_polyhedron_matrix (FILE *, ppl_const_Polyhedron_t);
-void ppl_print_powerset_matrix (FILE *, ppl_Pointset_Powerset_NNC_Polyhedron_t);
+void ppl_print_powerset_matrix (FILE *, ppl_Pointset_Powerset_C_Polyhedron_t);
void debug_ppl_polyhedron_matrix (ppl_Polyhedron_t);
-void debug_ppl_powerset_matrix (ppl_Pointset_Powerset_NNC_Polyhedron_t);
+void debug_ppl_powerset_matrix (ppl_Pointset_Powerset_C_Polyhedron_t);
void ppl_read_polyhedron_matrix (ppl_Polyhedron_t *, FILE *);
void ppl_insert_dimensions (ppl_Polyhedron_t, int, int);
-void ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_NNC_Polyhedron_t, int, int);
+void ppl_insert_dimensions_pointset (ppl_Pointset_Powerset_C_Polyhedron_t, int,
+ int);
void ppl_set_inhomogeneous_gmp (ppl_Linear_Expression_t, Value);
void ppl_set_coef_gmp (ppl_Linear_Expression_t, ppl_dimension_type, Value);
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index a58f039..00c15be 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -331,7 +331,7 @@ build_pbb_scattering_polyhedrons (ppl_Linear_Expression_t static_schedule,
value_init (v);
ppl_new_Coefficient (&c);
- ppl_new_NNC_Polyhedron_from_space_dimension
+ ppl_new_C_Polyhedron_from_space_dimension
(&PBB_TRANSFORMED_SCATTERING (pbb), dim, 0);
PBB_NB_SCATTERING_TRANSFORM (pbb) = scattering_dimensions;
@@ -376,7 +376,7 @@ build_pbb_scattering_polyhedrons (ppl_Linear_Expression_t static_schedule,
value_clear (v);
ppl_delete_Coefficient (c);
- ppl_new_NNC_Polyhedron_from_NNC_Polyhedron (&PBB_ORIGINAL_SCATTERING (pbb),
+ ppl_new_C_Polyhedron_from_C_Polyhedron (&PBB_ORIGINAL_SCATTERING (pbb),
PBB_TRANSFORMED_SCATTERING (pbb));
}
@@ -919,7 +919,7 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop,
ppl_dimension_type *map
= (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim);
- ppl_new_NNC_Polyhedron_from_space_dimension (&ph, dim, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&ph, dim, 0);
ppl_Polyhedron_get_constraints (outer_ph, &pcs);
ppl_Polyhedron_add_constraints (ph, pcs);
@@ -997,8 +997,8 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop,
&& loop_in_sese_p (loop->next, region))
build_loop_iteration_domains (scop, loop->next, outer_ph, nb);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron
- ((ppl_Pointset_Powerset_NNC_Polyhedron_t *) &loop->aux, ph);
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
+ ((ppl_Pointset_Powerset_C_Polyhedron_t *) &loop->aux, ph);
ppl_delete_Polyhedron (ph);
}
@@ -1034,11 +1034,12 @@ ppl_constraint_type_from_tree_code (enum tree_code code)
{
switch (code)
{
+ /* We do not support LT and GT to be able to work with C_Polyhedron.
+ As we work on integer polyhedron "a < b" can be expressed by
+ "a + 1 <= b". */
case LT_EXPR:
- return PPL_CONSTRAINT_TYPE_LESS_THAN;
-
case GT_EXPR:
- return PPL_CONSTRAINT_TYPE_GREATER_THAN;
+ gcc_unreachable ();
case LE_EXPR:
return PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL;
@@ -1059,21 +1060,49 @@ ppl_constraint_type_from_tree_code (enum tree_code code)
condition or to handle inequalities. */
static void
-add_condition_to_domain (ppl_Pointset_Powerset_NNC_Polyhedron_t ps, gimple stmt,
+add_condition_to_domain (ppl_Pointset_Powerset_C_Polyhedron_t ps, gimple stmt,
poly_bb_p pbb, enum tree_code code)
{
+ Value v;
+ ppl_Coefficient_t c;
ppl_Linear_Expression_t left, right;
ppl_Constraint_t cstr;
enum ppl_enum_Constraint_Type type;
- type = ppl_constraint_type_from_tree_code (code);
-
left = create_linear_expr_from_tree (pbb, gimple_cond_lhs (stmt));
right = create_linear_expr_from_tree (pbb, gimple_cond_rhs (stmt));
+
+ /* If we have < or > expressions convert them to <= or >= by adding 1 to
+ the left or the right side of the expression. */
+ if (code == LT_EXPR)
+ {
+ value_init (v);
+ value_set_si (v, 1);
+ ppl_new_Coefficient (&c);
+ ppl_assign_Coefficient_from_mpz_t (c, v);
+ ppl_Linear_Expression_add_to_inhomogeneous (left, c);
+ ppl_delete_Coefficient (c);
+
+ code = LE_EXPR;
+ }
+ else if (code == GT_EXPR)
+ {
+ value_init (v);
+ value_set_si (v, 1);
+ ppl_new_Coefficient (&c);
+ ppl_assign_Coefficient_from_mpz_t (c, v);
+ ppl_Linear_Expression_add_to_inhomogeneous (right, c);
+ ppl_delete_Coefficient (c);
+
+ code = GE_EXPR;
+ }
+
+ type = ppl_constraint_type_from_tree_code (code);
+
ppl_subtract_Linear_Expression_from_Linear_Expression (left, right);
ppl_new_Constraint (&cstr, left, type);
- ppl_Pointset_Powerset_NNC_Polyhedron_add_constraint (ps, cstr);
+ ppl_Pointset_Powerset_C_Polyhedron_add_constraint (ps, cstr);
ppl_delete_Constraint (cstr);
ppl_delete_Linear_Expression (left);
@@ -1089,15 +1118,15 @@ add_condition_to_pbb (poly_bb_p pbb, gimple stmt, enum tree_code code)
{
if (code == NE_EXPR)
{
- ppl_Pointset_Powerset_NNC_Polyhedron_t left = PBB_DOMAIN (pbb);
- ppl_Pointset_Powerset_NNC_Polyhedron_t right;
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron
+ ppl_Pointset_Powerset_C_Polyhedron_t left = PBB_DOMAIN (pbb);
+ ppl_Pointset_Powerset_C_Polyhedron_t right;
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
(&right, left);
add_condition_to_domain (left, stmt, pbb, LT_EXPR);
add_condition_to_domain (right, stmt, pbb, GT_EXPR);
- ppl_Pointset_Powerset_NNC_Polyhedron_upper_bound_assign (left,
+ ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (left,
right);
- ppl_delete_Pointset_Powerset_NNC_Polyhedron (right);
+ ppl_delete_Pointset_Powerset_C_Polyhedron (right);
}
else
add_condition_to_domain (PBB_DOMAIN (pbb), stmt, pbb, code);
@@ -1369,12 +1398,12 @@ build_scop_context (scop_p scop)
ppl_Polyhedron_t context;
graphite_dim_t p, n = scop_nb_params (scop);
- ppl_new_NNC_Polyhedron_from_space_dimension (&context, n, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&context, n, 0);
for (p = 0; p < n; p++)
add_param_constraints (scop, context, p);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
(&SCOP_CONTEXT (scop), context);
ppl_delete_Polyhedron (context);
@@ -1393,7 +1422,7 @@ build_scop_iteration_domain (scop_p scop)
ppl_Polyhedron_t ph;
poly_bb_p pbb;
- ppl_new_NNC_Polyhedron_from_space_dimension (&ph, scop_nb_params (scop), 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&ph, scop_nb_params (scop), 0);
for (i = 0; VEC_iterate (loop_p, SESE_LOOP_NEST (region), i, loop); i++)
if (!loop_in_sese_p (loop_outer (loop), region))
@@ -1401,18 +1430,18 @@ build_scop_iteration_domain (scop_p scop)
for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++)
if (gbb_loop (PBB_BLACK_BOX (pbb))->aux)
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_Pointset_Powerset_NNC_Polyhedron
- (&PBB_DOMAIN (pbb), (ppl_const_Pointset_Powerset_NNC_Polyhedron_t)
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron
+ (&PBB_DOMAIN (pbb), (ppl_const_Pointset_Powerset_C_Polyhedron_t)
gbb_loop (PBB_BLACK_BOX (pbb))->aux);
else
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron
(&PBB_DOMAIN (pbb), ph);
for (i = 0; VEC_iterate (loop_p, SESE_LOOP_NEST (region), i, loop); i++)
if (loop->aux)
{
- ppl_delete_Pointset_Powerset_NNC_Polyhedron
- ((ppl_Pointset_Powerset_NNC_Polyhedron_t) loop->aux);
+ ppl_delete_Pointset_Powerset_C_Polyhedron
+ ((ppl_Pointset_Powerset_C_Polyhedron_t) loop->aux);
loop->aux = NULL;
}
@@ -1536,24 +1565,24 @@ static void
build_poly_dr (data_reference_p dr, poly_bb_p pbb)
{
ppl_Polyhedron_t accesses, data_container;
- ppl_Pointset_Powerset_NNC_Polyhedron_t accesses_ps, data_container_ps;
+ ppl_Pointset_Powerset_C_Polyhedron_t accesses_ps, data_container_ps;
ppl_dimension_type dom_nb_dims;
ppl_dimension_type accessp_nb_dims;
- ppl_Pointset_Powerset_NNC_Polyhedron_space_dimension (PBB_DOMAIN (pbb),
+ ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb),
&dom_nb_dims);
accessp_nb_dims = dom_nb_dims + 1 + DR_NUM_DIMENSIONS (dr);
- ppl_new_NNC_Polyhedron_from_space_dimension (&accesses, accessp_nb_dims, 0);
- ppl_new_NNC_Polyhedron_from_space_dimension (&data_container, accessp_nb_dims, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&accesses, accessp_nb_dims, 0);
+ ppl_new_C_Polyhedron_from_space_dimension (&data_container, accessp_nb_dims, 0);
pdr_add_alias_set (accesses, dr, accessp_nb_dims, dom_nb_dims);
pdr_add_memory_accesses (accesses, dr, accessp_nb_dims, dom_nb_dims, pbb);
pdr_add_data_dimensions (data_container, dr, accessp_nb_dims, dom_nb_dims);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&accesses_ps,
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&accesses_ps,
accesses);
- ppl_new_Pointset_Powerset_NNC_Polyhedron_from_NNC_Polyhedron (&data_container_ps,
+ ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&data_container_ps,
data_container);
ppl_delete_Polyhedron (accesses);
new_poly_dr (pbb, accesses_ps, data_container_ps,
--
1.6.1.3