add isl_basic_map_image_is_bounded
[platform/upstream/isl.git] / include / isl_map.h
index a218fca..ce41c43 100644 (file)
@@ -122,8 +122,21 @@ unsigned isl_map_n_out(const struct isl_map *map);
 unsigned isl_map_n_param(const struct isl_map *map);
 unsigned isl_map_dim(const struct isl_map *map, enum isl_dim_type type);
 
-struct isl_dim *isl_basic_map_get_dim(struct isl_basic_map *bmap);
-struct isl_dim *isl_map_get_dim(struct isl_map *map);
+isl_ctx *isl_map_get_ctx(__isl_keep isl_map *map);
+__isl_give isl_dim *isl_basic_map_get_dim(__isl_keep isl_basic_map *bmap);
+__isl_give isl_dim *isl_map_get_dim(__isl_keep isl_map *map);
+
+__isl_give isl_basic_map *isl_basic_map_set_tuple_name(
+       __isl_take isl_basic_map *bmap, enum isl_dim_type type, const char *s);
+__isl_give isl_map *isl_map_set_tuple_name(__isl_take isl_map *map,
+       enum isl_dim_type type, const char *s);
+__isl_give isl_basic_map *isl_basic_map_set_dim_name(
+       __isl_take isl_basic_map *bmap,
+       enum isl_dim_type type, unsigned pos, const char *s);
+__isl_give isl_map *isl_map_set_dim_name(__isl_take isl_map *map,
+       enum isl_dim_type type, unsigned pos, const char *s);
+
+int isl_basic_map_is_rational(__isl_keep isl_basic_map *bmap);
 
 struct isl_basic_map *isl_basic_map_alloc(struct isl_ctx *ctx,
                unsigned nparam, unsigned in, unsigned out, unsigned extra,
@@ -148,7 +161,9 @@ struct isl_basic_map *isl_basic_map_empty_like_map(struct isl_map *model);
 __isl_give isl_basic_map *isl_basic_map_universe(__isl_take isl_dim *dim);
 __isl_give isl_basic_map *isl_basic_map_universe_like(
                __isl_keep isl_basic_map *bmap);
-struct isl_basic_map *isl_basic_map_convex_hull(struct isl_basic_map *bmap);
+__isl_give isl_basic_map *isl_basic_map_remove_redundancies(
+       __isl_take isl_basic_map *bmap);
+__isl_give isl_basic_map *isl_map_simple_hull(__isl_take isl_map *map);
 
 __isl_give isl_basic_map *isl_basic_map_intersect_domain(
                __isl_take isl_basic_map *bmap,
@@ -170,7 +185,7 @@ __isl_give isl_basic_map *isl_basic_map_apply_range(
                __isl_take isl_basic_map *bmap2);
 __isl_give isl_basic_map *isl_basic_map_affine_hull(
                __isl_take isl_basic_map *bmap);
-struct isl_basic_map *isl_basic_map_reverse(struct isl_basic_map *bmap);
+__isl_give isl_basic_map *isl_basic_map_reverse(__isl_take isl_basic_map *bmap);
 __isl_give isl_basic_set *isl_basic_map_domain(__isl_take isl_basic_map *bmap);
 __isl_give isl_basic_set *isl_basic_map_range(__isl_take isl_basic_map *bmap);
 struct isl_basic_map *isl_basic_map_remove(struct isl_basic_map *bmap,
@@ -248,6 +263,7 @@ __isl_give isl_map *isl_map_drop_basic_map(__isl_take isl_map *map,
 int isl_basic_map_fast_is_fixed(struct isl_basic_map *bmap,
        enum isl_dim_type type, unsigned pos, isl_int *val);
 
+int isl_basic_map_image_is_bounded(__isl_keep isl_basic_map *bmap);
 int isl_basic_map_is_universe(__isl_keep isl_basic_map *bmap);
 int isl_basic_map_fast_is_empty(__isl_keep isl_basic_map *bmap);
 int isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap);
@@ -269,8 +285,12 @@ __isl_give isl_map *isl_map_add_basic_map(__isl_take isl_map *map,
 __isl_give isl_map *isl_map_identity(__isl_take isl_dim *set_dim);
 struct isl_map *isl_map_identity_like(struct isl_map *model);
 struct isl_map *isl_map_identity_like_basic_map(struct isl_basic_map *model);
+__isl_give isl_map *isl_map_lex_lt_first(__isl_take isl_dim *dim, unsigned n);
+__isl_give isl_map *isl_map_lex_le_first(__isl_take isl_dim *dim, unsigned n);
 __isl_give isl_map *isl_map_lex_lt(__isl_take isl_dim *set_dim);
 __isl_give isl_map *isl_map_lex_le(__isl_take isl_dim *set_dim);
+__isl_give isl_map *isl_map_lex_gt_first(__isl_take isl_dim *dim, unsigned n);
+__isl_give isl_map *isl_map_lex_ge_first(__isl_take isl_dim *dim, unsigned n);
 __isl_give isl_map *isl_map_lex_gt(__isl_take isl_dim *set_dim);
 __isl_give isl_map *isl_map_lex_ge(__isl_take isl_dim *set_dim);
 struct isl_map *isl_map_finalize(struct isl_map *map);
@@ -278,7 +298,7 @@ void isl_map_free(__isl_take isl_map *map);
 __isl_give isl_map *isl_map_copy(__isl_keep isl_map *map);
 struct isl_map *isl_map_extend(struct isl_map *base,
                unsigned nparam, unsigned n_in, unsigned n_out);
-struct isl_map *isl_map_reverse(struct isl_map *map);
+__isl_give isl_map *isl_map_reverse(__isl_take isl_map *map);
 __isl_give isl_map *isl_map_union(
                __isl_take isl_map *map1,
                __isl_take isl_map *map2);
@@ -308,8 +328,8 @@ struct isl_map *isl_map_fix_si(struct isl_map *map,
                enum isl_dim_type type, unsigned pos, int value);
 __isl_give isl_map *isl_map_lower_bound_si(__isl_take isl_map *map,
                enum isl_dim_type type, unsigned pos, int value);
-struct isl_basic_set *isl_basic_map_deltas(struct isl_basic_map *bmap);
-struct isl_set *isl_map_deltas(struct isl_map *map);
+__isl_give isl_basic_set *isl_basic_map_deltas(__isl_take isl_basic_map *bmap);
+__isl_give isl_set *isl_map_deltas(__isl_take isl_map *map);
 struct isl_map *isl_map_detect_equalities(struct isl_map *map);
 __isl_give isl_basic_map *isl_map_affine_hull(__isl_take isl_map *map);
 __isl_give isl_basic_map *isl_map_convex_hull(__isl_take isl_map *map);
@@ -319,6 +339,10 @@ __isl_give isl_map *isl_map_add(__isl_take isl_map *map,
                enum isl_dim_type type, unsigned n);
 __isl_give isl_map *isl_map_insert(__isl_take isl_map *map,
                enum isl_dim_type type, unsigned pos, unsigned n);
+__isl_give isl_basic_map *isl_basic_map_move_dims(
+       __isl_take isl_basic_map *bmap,
+       enum isl_dim_type dst_type, unsigned dst_pos,
+       enum isl_dim_type src_type, unsigned src_pos, unsigned n);
 __isl_give isl_map *isl_map_move_dims(__isl_take isl_map *map,
        enum isl_dim_type dst_type, unsigned dst_pos,
        enum isl_dim_type src_type, unsigned src_pos, unsigned n);
@@ -349,6 +373,10 @@ int isl_map_is_empty(__isl_keep isl_map *map);
 int isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2);
 int isl_map_is_strict_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2);
 int isl_map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2);
+int isl_map_is_single_valued(__isl_keep isl_map *map);
+int isl_map_is_bijective(__isl_keep isl_map *map);
+int isl_map_is_translation(__isl_keep isl_map *map);
+int isl_map_has_equal_dim(__isl_keep isl_map *map1, __isl_keep isl_map *map2);
 
 __isl_give isl_map *isl_map_make_disjoint(__isl_take isl_map *map);
 __isl_give isl_map *isl_basic_map_compute_divs(__isl_take isl_basic_map *bmap);
@@ -380,6 +408,8 @@ __isl_give isl_map *isl_set_lifting(__isl_take isl_set *set);
 
 __isl_give isl_map *isl_map_power(__isl_take isl_map *map, unsigned param,
        int *exact);
+__isl_give isl_map *isl_map_reaching_path_lengths(__isl_take isl_map *map,
+       int *exact);
 __isl_give isl_map *isl_map_transitive_closure(__isl_take isl_map *map,
        int *exact);