add isl_aff_ge_basic_set
authorSven Verdoolaege <skimo@kotnet.org>
Fri, 24 Jun 2011 12:37:32 +0000 (14:37 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 25 Jun 2011 20:22:21 +0000 (22:22 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/aff.h
isl_aff.c

index a47b77b..1c2c9be 100644 (file)
@@ -2267,6 +2267,13 @@ Operations include
        __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff,
                __isl_take isl_set *context);
 
+       __isl_give isl_basic_set *isl_aff_ge_basic_set(
+               __isl_take isl_aff *aff1, __isl_take isl_aff *aff2);
+
+The function C<isl_aff_ge_basic_set> returns a basic set
+containing those elements in the shared space
+of C<aff1> and C<aff2> where C<aff1> is greater than or equal to C<aff2>.
+
 An expression can be printed using
 
        #include <isl/aff.h>
index f5ddee7..2d321d2 100644 (file)
@@ -67,6 +67,9 @@ __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f);
 __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff,
        __isl_take isl_set *context);
 
+__isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1,
+       __isl_take isl_aff *aff2);
+
 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p,
        __isl_keep isl_aff *aff);
 void isl_aff_dump(__isl_keep isl_aff *aff);
index e258941..b8d86de 100644 (file)
--- a/isl_aff.c
+++ b/isl_aff.c
@@ -12,7 +12,9 @@
 #include <isl_aff_private.h>
 #include <isl_local_space_private.h>
 #include <isl_mat_private.h>
+#include <isl/constraint.h>
 #include <isl/seq.h>
+#include <isl/set.h>
 
 __isl_give isl_aff *isl_aff_alloc_vec(__isl_take isl_local_space *ls,
        __isl_take isl_vec *v)
@@ -720,3 +722,17 @@ error:
        isl_set_free(context);
        return NULL;
 }
+
+/* Return a basic set containing those elements in the shared space
+ * of aff1 and aff2 where aff1 is greater than or equal to aff2.
+ */
+__isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1,
+       __isl_take isl_aff *aff2)
+{
+       isl_constraint *ineq;
+
+       aff1 = isl_aff_sub(aff1, aff2);
+       ineq = isl_inequality_from_aff(aff1);
+
+       return isl_basic_set_from_constraint(ineq);
+}