OSDN Git Service

2010-04-30 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / graphite-ppl.h
index 8a23c93..c14d61c 100644 (file)
@@ -1,5 +1,5 @@
 /* Gimple Represented as Polyhedra.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
    Contributed by Sebastian Pop <sebastian.pop@inria.fr>
    and Tobias Grosser <grosser@fim.uni-passau.de>.
 
@@ -38,12 +38,20 @@ void ppl_print_polyhedron_matrix (FILE *, ppl_const_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_C_Polyhedron_t);
+void ppl_print_linear_expr (FILE *, ppl_Linear_Expression_t);
+void debug_ppl_linear_expr (ppl_Linear_Expression_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_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);
+void ppl_max_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t,
+                              ppl_Linear_Expression_t, Value);
+void ppl_min_for_le_pointset (ppl_Pointset_Powerset_C_Polyhedron_t,
+                             ppl_Linear_Expression_t, Value);
+ppl_Constraint_t ppl_build_relation (int, int, int, int,
+                                    enum ppl_enum_Constraint_Type);
 
 /* Assigns to RES the value of the INTEGER_CST T.  */
 
@@ -129,5 +137,31 @@ value_max (Value res, Value v1, Value v2)
   value_assign (res, v1);
 }
 
+/* Builds a new identity map for dimension DIM.  */
+
+static inline ppl_dimension_type *
+ppl_new_id_map (ppl_dimension_type dim)
+{
+  ppl_dimension_type *map, i;
+
+  map = (ppl_dimension_type *) XNEWVEC (ppl_dimension_type, dim);
+
+  for (i = 0; i < dim; i++)
+    map[i] = i;
+
+  return map;
+}
+
+/* Builds an interchange of dimensions A and B in MAP.  */
+
+static inline void
+ppl_interchange (ppl_dimension_type *map,
+                ppl_dimension_type a,
+                ppl_dimension_type b)
+{
+  map[a] = b;
+  map[b] = a;
+}
+
 #endif