Factor uses of build_pairwise_scheduling.
authorSebastian Pop <sebastian.pop@amd.com>
Sat, 6 Feb 2010 17:40:52 +0000 (17:40 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Sat, 6 Feb 2010 17:40:52 +0000 (17:40 +0000)
2010-01-20  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-dependences.c (build_pairwise_scheduling_equality): Removed.
(build_pairwise_scheduling_inequality): Renamed build_pairwise_scheduling.
(lexicographically_gt_p): Change type of direction to int.
(build_lexicographically_gt_constraint): Same.
(dependence_polyhedron_1): Same.
(dependence_polyhedron): Same.
(pddr_original_scattering): Use integers for direction.
(pddr_transformed_scattering): Same.
(graphite_legal_transform_dr): Same.
(graphite_carried_dependence_level_k): Same.

From-SVN: r156542

gcc/ChangeLog.graphite
gcc/graphite-dependences.c

index fbfe742db023459bdf6393f0cc8d719438c4413f..a160dde48dcb00d639bc55d00a4a1cac14d1cb16 100644 (file)
@@ -1,3 +1,16 @@
+2010-01-20  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (build_pairwise_scheduling_equality): Removed.
+       (build_pairwise_scheduling_inequality): Renamed build_pairwise_scheduling.
+       (lexicographically_gt_p): Change type of direction to int.
+       (build_lexicographically_gt_constraint): Same.
+       (dependence_polyhedron_1): Same.
+       (dependence_polyhedron): Same.
+       (pddr_original_scattering): Use integers for direction.
+       (pddr_transformed_scattering): Same.
+       (graphite_legal_transform_dr): Same.
+       (graphite_carried_dependence_level_k): Same.
+
 2010-01-20  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-dependences.c (build_pairwise_constraint): Renamed
index d2c67f36a2f9c29854df62f52e9b32761db6d93d..bc9d2708133d2f83f112270fc321d0bbc9c1b4b6 100644 (file)
@@ -216,11 +216,16 @@ dr_equality_constraints (graphite_dim_t dim,
   return res;
 }
 
-/* Builds scheduling equality constraints.  */
+/* Builds scheduling inequality constraints: when DIRECTION is
+   1 builds a GE constraint,
+   0 builds an EQ constraint,
+   -1 builds a LE constraint.  */
 
 static ppl_Pointset_Powerset_C_Polyhedron_t
-build_pairwise_scheduling_equality (graphite_dim_t dim,
-                                   graphite_dim_t pos, graphite_dim_t offset)
+build_pairwise_scheduling (graphite_dim_t dim,
+                          graphite_dim_t pos,
+                          graphite_dim_t offset,
+                          int direction)
 {
   ppl_Pointset_Powerset_C_Polyhedron_t res;
   ppl_Polyhedron_t equalities;
@@ -228,36 +233,26 @@ build_pairwise_scheduling_equality (graphite_dim_t dim,
 
   ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
 
-  cstr = ppl_build_relation (dim, pos, pos + offset, 0,
-                            PPL_CONSTRAINT_TYPE_EQUAL);
-  ppl_Polyhedron_add_constraint (equalities, cstr);
-  ppl_delete_Constraint (cstr);
-
-  ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (&res, equalities);
-  ppl_delete_Polyhedron (equalities);
-  return res;
-}
-
-/* Builds scheduling inequality constraints.  */
+  switch (direction)
+    {
+    case -1:
+      cstr = ppl_build_relation (dim, pos, pos + offset, 1,
+                                PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
+      break;
 
-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_C_Polyhedron_t res;
-  ppl_Polyhedron_t equalities;
-  ppl_Constraint_t cstr;
+    case 0:
+      cstr = ppl_build_relation (dim, pos, pos + offset, 0,
+                                PPL_CONSTRAINT_TYPE_EQUAL);
+      break;
 
-  ppl_new_C_Polyhedron_from_space_dimension (&equalities, dim, 0);
+    case 1:
+      cstr = ppl_build_relation (dim, pos, pos + offset, -1,
+                                PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
+      break;
 
-  if (direction)
-    cstr = ppl_build_relation (dim, pos, pos + offset, -1,
-                              PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL);
-  else
-    cstr = ppl_build_relation (dim, pos, pos + offset, 1,
-                              PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL);
+    default:
+      gcc_unreachable ();
+    }
 
   ppl_Polyhedron_add_constraint (equalities, cstr);
   ppl_delete_Constraint (cstr);
@@ -274,13 +269,12 @@ static bool
 lexicographically_gt_p (ppl_Pointset_Powerset_C_Polyhedron_t res,
                        graphite_dim_t dim,
                        graphite_dim_t offset,
-                       bool direction, graphite_dim_t i)
+                       int direction, graphite_dim_t i)
 {
   ppl_Pointset_Powerset_C_Polyhedron_t ineq;
   bool empty_p;
 
-  ineq = build_pairwise_scheduling_inequality (dim, i, offset,
-                                              direction);
+  ineq = build_pairwise_scheduling (dim, i, offset, direction);
   ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (ineq, res);
   empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (ineq);
   if (!empty_p)
@@ -298,7 +292,7 @@ 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)
+                                      int direction)
 {
   graphite_dim_t i;
 
@@ -309,7 +303,7 @@ build_lexicographically_gt_constraint (ppl_Pointset_Powerset_C_Polyhedron_t *res
     {
       ppl_Pointset_Powerset_C_Polyhedron_t sceq;
 
-      sceq = build_pairwise_scheduling_equality (dim, i, offset);
+      sceq = build_pairwise_scheduling (dim, i, offset, 0);
       ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*res, sceq);
       ppl_delete_Pointset_Powerset_C_Polyhedron (sceq);
 
@@ -341,7 +335,7 @@ dependence_polyhedron_1 (poly_bb_p pbb1, poly_bb_p pbb2,
                         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,
+                        int direction,
                         bool original_scattering_p)
 {
   scop_p scop = PBB_SCOP (pbb1);
@@ -419,7 +413,7 @@ dependence_polyhedron (poly_bb_p pbb1, poly_bb_p pbb2,
                       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,
+                      int direction,
                       bool original_scattering_p)
 {
   PTR *x = NULL;
@@ -470,7 +464,7 @@ pddr_original_scattering (poly_bb_p pbb1, poly_bb_p pbb2,
     return NULL;
 
   pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, so1, so2,
-                               true, true);
+                               1, true);
   if (pddr_is_empty (pddr))
     return NULL;
 
@@ -497,7 +491,7 @@ pddr_transformed_scattering (poly_bb_p pbb1, poly_bb_p pbb2,
     return NULL;
 
   pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, st1, st2,
-                               true, false);
+                               1, false);
   if (pddr_is_empty (pddr))
     return NULL;
 
@@ -585,7 +579,7 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2,
   ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (temp, po);
 
   pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, st1, st2,
-                               false, false);
+                               -1, false);
   pt = PDDR_DDP (pddr);
 
   /* Extend PO and PT to have the same dimensions.  */
@@ -755,14 +749,14 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2,
     return false;
 
   pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, so1, so2,
-                               true, false);
+                               1, false);
 
   if (pddr_is_empty (pddr))
     return false;
 
   po = PDDR_DDP (pddr);
   ppl_Pointset_Powerset_C_Polyhedron_space_dimension (po, &dim);
-  eqpp = build_pairwise_scheduling_inequality (dim, level, tdim1 + ddim1, 1);
+  eqpp = build_pairwise_scheduling (dim, level, tdim1 + ddim1, 1);
 
   ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po);
   empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (eqpp);