add convex hull computation
[platform/upstream/isl.git] / isl_map_private.h
index e6394e1..f3cef4e 100644 (file)
@@ -3,8 +3,14 @@
 
 int isl_basic_map_alloc_equality(struct isl_ctx *ctx,
                struct isl_basic_map *bmap);
+int isl_basic_set_alloc_equality(struct isl_ctx *ctx,
+               struct isl_basic_set *bset);
+int isl_basic_set_free_inequality(struct isl_ctx *ctx,
+               struct isl_basic_set *bset, unsigned n);
 int isl_basic_map_free_equality(struct isl_ctx *ctx,
                struct isl_basic_map *bmap, unsigned n);
+int isl_basic_set_alloc_inequality(struct isl_ctx *ctx,
+               struct isl_basic_set *bset);
 int isl_basic_map_alloc_inequality(struct isl_ctx *ctx,
                struct isl_basic_map *bmap);
 int isl_basic_map_free_inequality(struct isl_ctx *ctx,
@@ -15,6 +21,10 @@ int isl_basic_map_free_div(struct isl_ctx *ctx,
                struct isl_basic_map *bmap, unsigned n);
 void isl_basic_map_inequality_to_equality(struct isl_ctx *ctx,
                struct isl_basic_map *bmap, unsigned pos);
+int isl_basic_set_drop_equality(struct isl_ctx *ctx,
+               struct isl_basic_set *bset, unsigned pos);
+int isl_basic_set_drop_inequality(struct isl_ctx *ctx,
+               struct isl_basic_set *bset, unsigned pos);
 
 int isl_inequality_negate(struct isl_ctx *ctx,
                struct isl_basic_map *bmap, unsigned pos);
@@ -23,6 +33,7 @@ struct isl_basic_set *isl_basic_set_cow(struct isl_ctx *ctx,
                struct isl_basic_set *bset);
 struct isl_basic_map *isl_basic_map_cow(struct isl_ctx *ctx,
                struct isl_basic_map *bmap);
+struct isl_set *isl_set_cow(struct isl_ctx *ctx, struct isl_set *set);
 struct isl_map *isl_map_cow(struct isl_ctx *ctx, struct isl_map *map);
 
 struct isl_basic_map *isl_basic_map_set_to_empty(
@@ -34,7 +45,25 @@ struct isl_map *isl_basic_map_compute_divs(struct isl_ctx *ctx,
 struct isl_map *isl_map_compute_divs(struct isl_ctx *ctx, struct isl_map *map);
 struct isl_basic_map *isl_basic_map_align_divs(struct isl_ctx *ctx,
                struct isl_basic_map *dst, struct isl_basic_map *src);
+struct isl_map *isl_map_align_divs(struct isl_ctx *ctx, struct isl_map *map);
 struct isl_basic_map *isl_basic_map_gauss(struct isl_ctx *ctx,
        struct isl_basic_map *bmap, int *progress);
 struct isl_basic_set *isl_basic_set_gauss(struct isl_ctx *ctx,
        struct isl_basic_set *bset, int *progress);
+struct isl_basic_map *isl_basic_map_implicit_equalities(struct isl_ctx *ctx,
+                                               struct isl_basic_map *bmap);
+struct isl_set *isl_map_underlying_set(struct isl_ctx *ctx, struct isl_map *map);
+struct isl_basic_map *isl_basic_map_overlying_set(
+       struct isl_ctx *ctx, struct isl_basic_set *bset,
+       struct isl_basic_map *like);
+
+struct isl_map *isl_map_remove_empty_parts(struct isl_ctx *ctx,
+       struct isl_map *map);
+struct isl_set *isl_set_remove_empty_parts(struct isl_ctx *ctx,
+       struct isl_set *set);
+
+struct isl_set *isl_set_drop_vars(struct isl_ctx *ctx,
+               struct isl_set *set, unsigned first, unsigned n);
+
+struct isl_basic_set *isl_basic_set_eliminate_vars(struct isl_ctx *ctx,
+       struct isl_basic_set *bset, unsigned pos, unsigned n);