add isl_pw_aff_floor
authorSven Verdoolaege <skimo@kotnet.org>
Sat, 9 Jul 2011 09:55:23 +0000 (11:55 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 9 Jul 2011 14:16:09 +0000 (16:16 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/aff.h
isl_aff.c

index b3f226a..72662fd 100644 (file)
@@ -2355,6 +2355,8 @@ Operations include
                __isl_take isl_pw_aff *pwaff);
        __isl_give isl_aff *isl_aff_ceil(__isl_take isl_aff *aff);
        __isl_give isl_aff *isl_aff_floor(__isl_take isl_aff *aff);
+       __isl_give isl_pw_aff *isl_pw_aff_floor(
+               __isl_take isl_pw_aff *pwaff);
        __isl_give isl_aff *isl_aff_scale(__isl_take isl_aff *aff,
                isl_int f);
        __isl_give isl_aff *isl_aff_scale_down(__isl_take isl_aff *aff,
index 4c6e9f7..1f3cdbf 100644 (file)
@@ -110,6 +110,7 @@ __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff);
 __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1,
        __isl_take isl_pw_aff *pwaff2);
 __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff);
+__isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff);
 
 __isl_give isl_pw_aff *isl_pw_aff_scale_down(__isl_take isl_pw_aff *pwaff,
        isl_int f);
index ffca874..9acf52c 100644 (file)
--- a/isl_aff.c
+++ b/isl_aff.c
@@ -1232,3 +1232,22 @@ __isl_give isl_pw_aff *isl_pw_aff_scale_down(__isl_take isl_pw_aff *pwaff,
 
        return pwaff;
 }
+
+__isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff)
+{
+       int i;
+
+       pwaff = isl_pw_aff_cow(pwaff);
+       if (!pwaff)
+               return NULL;
+       if (pwaff->n == 0)
+               return pwaff;
+
+       for (i = 0; i < pwaff->n; ++i) {
+               pwaff->p[i].aff = isl_aff_floor(pwaff->p[i].aff);
+               if (!pwaff->p[i].aff)
+                       return isl_pw_aff_free(pwaff);
+       }
+
+       return pwaff;
+}