add isl_constraint_is_div_constraint
authorSven Verdoolaege <skimo@kotnet.org>
Sun, 27 Jun 2010 18:35:45 +0000 (20:35 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sun, 27 Jun 2010 18:39:02 +0000 (20:39 +0200)
include/isl_constraint.h
isl_constraint.c

index f7ee563..b732243 100644 (file)
@@ -86,6 +86,7 @@ void isl_constraint_clear(struct isl_constraint *constraint);
 struct isl_constraint *isl_constraint_negate(struct isl_constraint *constraint);
 
 int isl_constraint_is_equality(__isl_keep isl_constraint *constraint);
+int isl_constraint_is_div_constraint(__isl_keep isl_constraint *constraint);
 
 __isl_give isl_basic_map *isl_basic_map_from_constraint(
        __isl_take isl_constraint *constraint);
index 27d790a..6af5972 100644 (file)
@@ -389,6 +389,25 @@ int isl_constraint_is_equality(struct isl_constraint *constraint)
        return constraint->line >= constraint->bmap->eq;
 }
 
+int isl_constraint_is_div_constraint(__isl_keep isl_constraint *constraint)
+{
+       int i;
+
+       if (!constraint)
+               return -1;
+       if (isl_constraint_is_equality(constraint))
+               return 0;
+       for (i = 0; i < constraint->bmap->n_div; ++i) {
+               if (isl_int_is_zero(constraint->bmap->div[i][0]))
+                       continue;
+               if (isl_basic_map_is_div_constraint(constraint->bmap,
+                                       constraint->line[0], i))
+                       return 1;
+       }
+
+       return 0;
+}
+
 /* We manually set ISL_BASIC_SET_FINAL instead of calling
  * isl_basic_map_finalize because we want to keep the position
  * of the divs and we therefore do not want to throw away redundant divs.