From 9aa4bca44d5aaddfac928629df8630ba3e3376c8 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 26 Jan 2011 21:59:54 +0100 Subject: [PATCH] add isl_map_nat_universe Signed-off-by: Sven Verdoolaege --- doc/user.pod | 13 +++++++++++++ include/isl/map.h | 2 ++ include/isl/set.h | 2 ++ isl_map.c | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index 928d168..6b9b1d6 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -727,6 +727,19 @@ is only used to specify the parameters. __isl_give isl_map *isl_map_universe( __isl_take isl_dim *dim); +The sets and relations constructed by the functions above +contain all integer values, while those constructed by the +functions below only contain non-negative values. + + __isl_give isl_basic_set *isl_basic_set_nat_universe( + __isl_take isl_dim *dim); + __isl_give isl_basic_map *isl_basic_map_nat_universe( + __isl_take isl_dim *dim); + __isl_give isl_set *isl_set_nat_universe( + __isl_take isl_dim *dim); + __isl_give isl_map *isl_map_nat_universe( + __isl_take isl_dim *dim); + =item * Identity relations __isl_give isl_basic_map *isl_basic_map_identity( diff --git a/include/isl/map.h b/include/isl/map.h index e3e8a28..63eb44f 100644 --- a/include/isl/map.h +++ b/include/isl/map.h @@ -110,6 +110,7 @@ __isl_give isl_basic_map *isl_basic_map_empty(__isl_take isl_dim *dim); struct isl_basic_map *isl_basic_map_empty_like(struct isl_basic_map *model); 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_nat_universe(__isl_take isl_dim *dim); __isl_give isl_basic_map *isl_basic_map_universe_like( __isl_keep isl_basic_map *bmap); __isl_give isl_basic_map *isl_basic_map_remove_redundancies( @@ -235,6 +236,7 @@ struct isl_map *isl_map_alloc(struct isl_ctx *ctx, unsigned nparam, unsigned in, unsigned out, int n, unsigned flags); __isl_give isl_map *isl_map_universe(__isl_take isl_dim *dim); +__isl_give isl_map *isl_map_nat_universe(__isl_take isl_dim *dim); __isl_give isl_map *isl_map_empty(__isl_take isl_dim *dim); struct isl_map *isl_map_empty_like(struct isl_map *model); struct isl_map *isl_map_empty_like_basic_map(struct isl_basic_map *model); diff --git a/include/isl/set.h b/include/isl/set.h index e06b4f6..5a14895 100644 --- a/include/isl/set.h +++ b/include/isl/set.h @@ -62,6 +62,7 @@ struct isl_basic_set *isl_basic_set_dup(struct isl_basic_set *bset); __isl_give isl_basic_set *isl_basic_set_empty(__isl_take isl_dim *dim); struct isl_basic_set *isl_basic_set_empty_like(struct isl_basic_set *bset); __isl_give isl_basic_set *isl_basic_set_universe(__isl_take isl_dim *dim); +__isl_give isl_basic_set *isl_basic_set_nat_universe(__isl_take isl_dim *dim); struct isl_basic_set *isl_basic_set_universe_like(struct isl_basic_set *bset); __isl_give isl_basic_set *isl_basic_set_universe_like_set( __isl_keep isl_set *model); @@ -165,6 +166,7 @@ struct isl_set *isl_set_extend(struct isl_set *base, __isl_give isl_set *isl_set_empty(__isl_take isl_dim *dim); struct isl_set *isl_set_empty_like(struct isl_set *set); __isl_give isl_set *isl_set_universe(__isl_take isl_dim *dim); +__isl_give isl_set *isl_set_nat_universe(__isl_take isl_dim *dim); __isl_give isl_set *isl_set_universe_like(__isl_keep isl_set *model); __isl_give isl_set *isl_set_add_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *bset); diff --git a/isl_map.c b/isl_map.c index 0b4bd39..e26a92d 100644 --- a/isl_map.c +++ b/isl_map.c @@ -4156,6 +4156,41 @@ struct isl_basic_set *isl_basic_set_universe(struct isl_dim *dim) return bset; } +__isl_give isl_basic_map *isl_basic_map_nat_universe(__isl_take isl_dim *dim) +{ + int i; + unsigned total = isl_dim_total(dim); + isl_basic_map *bmap; + + bmap= isl_basic_map_alloc_dim(dim, 0, 0, total); + for (i = 0; i < total; ++i) { + int k = isl_basic_map_alloc_inequality(bmap); + if (k < 0) + goto error; + isl_seq_clr(bmap->ineq[k], 1 + total); + isl_int_set_si(bmap->ineq[k][1 + i], 1); + } + return bmap; +error: + isl_basic_map_free(bmap); + return NULL; +} + +__isl_give isl_basic_set *isl_basic_set_nat_universe(__isl_take isl_dim *dim) +{ + return isl_basic_map_nat_universe(dim); +} + +__isl_give isl_map *isl_map_nat_universe(__isl_take isl_dim *dim) +{ + return isl_map_from_basic_map(isl_basic_map_nat_universe(dim)); +} + +__isl_give isl_set *isl_set_nat_universe(__isl_take isl_dim *dim) +{ + return isl_map_nat_universe(dim); +} + __isl_give isl_basic_map *isl_basic_map_universe_like( __isl_keep isl_basic_map *model) { -- 2.7.4