add isl_set_flatten_map
authorSven Verdoolaege <skimo@kotnet.org>
Tue, 19 Oct 2010 12:50:40 +0000 (14:50 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 26 Oct 2010 14:52:12 +0000 (16:52 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl_map.h
isl_map.c

index d9db51e..eb8229a 100644 (file)
@@ -1368,6 +1368,12 @@ then the name of the space is also removed.
        __isl_give isl_map *isl_map_flatten(
                __isl_take isl_map *map);
 
+       __isl_give isl_map *isl_set_flatten_map(
+               __isl_take isl_set *set);
+
+The function above constructs a relation
+that maps the input set to a flattened version of the set.
+
 =item * Dimension manipulation
 
        __isl_give isl_set *isl_set_add_dims(
index 8907e48..8b96dd8 100644 (file)
@@ -384,6 +384,7 @@ __isl_give isl_basic_map *isl_basic_set_unwrap(__isl_take isl_basic_set *bset);
 __isl_give isl_map *isl_set_unwrap(__isl_take isl_set *set);
 __isl_give isl_map *isl_map_flatten(__isl_take isl_map *map);
 __isl_give isl_set *isl_set_flatten(__isl_take isl_set *set);
+__isl_give isl_map *isl_set_flatten_map(__isl_take isl_set *set);
 __isl_give isl_set *isl_map_domain(__isl_take isl_map *bmap);
 __isl_give isl_set *isl_map_range(__isl_take isl_map *map);
 __isl_give isl_map *isl_map_domain_map(__isl_take isl_map *map);
index c71e501..b906139 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -7574,6 +7574,19 @@ __isl_give isl_set *isl_set_flatten(__isl_take isl_set *set)
        return (isl_set *)isl_map_flatten((isl_map *)set);
 }
 
+__isl_give isl_map *isl_set_flatten_map(__isl_take isl_set *set)
+{
+       isl_dim *dim, *flat_dim;
+       isl_map *map;
+
+       dim = isl_set_get_dim(set);
+       flat_dim = isl_dim_flatten(isl_dim_copy(dim));
+       map = map_identity(isl_dim_join(isl_dim_reverse(dim), flat_dim));
+       map = isl_map_intersect_domain(map, set);
+
+       return map;
+}
+
 /* Extend the given dim_map with mappings for the divs in bmap.
  */
 static __isl_give struct isl_dim_map *extend_dim_map(