From 711408b1b8a4b807c8bcd0271903edcd8d91d31c Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 17 Nov 2010 16:28:35 +0100 Subject: [PATCH] add isl_union_set_is_equal Signed-off-by: Sven Verdoolaege --- doc/user.pod | 9 +++++++++ include/isl_union_set.h | 7 +++++++ isl_test.c | 18 +++++++++++++++--- isl_union_map.c | 18 ++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 59f4c5e..44cb37a 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -1126,6 +1126,9 @@ The followning functions check whether the domain of the given __isl_keep isl_set *set2); int isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2); + int isl_union_set_is_equal( + __isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); int isl_basic_map_is_equal( __isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2); @@ -1149,6 +1152,12 @@ The followning functions check whether the domain of the given int isl_set_is_strict_subset( __isl_keep isl_set *set1, __isl_keep isl_set *set2); + int isl_union_set_is_subset( + __isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); + int isl_union_set_is_strict_subset( + __isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); int isl_basic_map_is_subset( __isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2); diff --git a/include/isl_union_set.h b/include/isl_union_set.h index a7b7918..ae2161d 100644 --- a/include/isl_union_set.h +++ b/include/isl_union_set.h @@ -45,6 +45,13 @@ __isl_give isl_union_set *isl_union_set_apply( int isl_union_set_is_empty(__isl_keep isl_union_set *uset); +int isl_union_set_is_subset(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); +int isl_union_set_is_equal(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); +int isl_union_set_is_strict_subset(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2); + int isl_union_set_n_set(__isl_keep isl_union_set *uset); int isl_union_set_foreach_set(__isl_keep isl_union_set *uset, int (*fn)(__isl_take isl_set *set, void *user), void *user); diff --git a/isl_test.c b/isl_test.c index 793248b..c67a09e 100644 --- a/isl_test.c +++ b/isl_test.c @@ -1500,19 +1500,31 @@ void test_split_periods(isl_ctx *ctx) void test_union(isl_ctx *ctx) { const char *str; - isl_union_set *uset; + isl_union_set *uset1, *uset2; isl_union_map *umap1, *umap2; str = "{ [i] : 0 <= i <= 1 }"; - uset = isl_union_set_read_from_str(ctx, str); + uset1 = isl_union_set_read_from_str(ctx, str); str = "{ [1] -> [0] }"; umap1 = isl_union_map_read_from_str(ctx, str); - umap2 = isl_union_set_lex_gt_union_set(isl_union_set_copy(uset), uset); + umap2 = isl_union_set_lex_gt_union_set(isl_union_set_copy(uset1), uset1); assert(isl_union_map_is_equal(umap1, umap2)); isl_union_map_free(umap1); isl_union_map_free(umap2); + + str = "{ A[i] -> B[i]; B[i] -> C[i]; A[0] -> C[1] }"; + umap1 = isl_union_map_read_from_str(ctx, str); + str = "{ A[i]; B[i] }"; + uset1 = isl_union_set_read_from_str(ctx, str); + + uset2 = isl_union_map_domain(umap1); + + assert(isl_union_set_is_equal(uset1, uset2)); + + isl_union_set_free(uset1); + isl_union_set_free(uset2); } void test_bound(isl_ctx *ctx) diff --git a/isl_union_map.c b/isl_union_map.c index c7cb827..bccf34d 100644 --- a/isl_union_map.c +++ b/isl_union_map.c @@ -1260,6 +1260,12 @@ error: return -1; } +int isl_union_set_is_subset(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2) +{ + return isl_union_map_is_subset(uset1, uset2); +} + int isl_union_map_is_equal(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2) { @@ -1274,6 +1280,12 @@ int isl_union_map_is_equal(__isl_keep isl_union_map *umap1, return is_subset; } +int isl_union_set_is_equal(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2) +{ + return isl_union_map_is_equal(uset1, uset2); +} + int isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2) { @@ -1290,6 +1302,12 @@ int isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1, return !is_subset; } +int isl_union_set_is_strict_subset(__isl_keep isl_union_set *uset1, + __isl_keep isl_union_set *uset2) +{ + return isl_union_map_is_strict_subset(uset1, uset2); +} + static int sample_entry(void **entry, void *user) { isl_basic_map **sample = (isl_basic_map **)user; -- 2.7.4