enum isl_dim_type type, int pos, isl_int v);
struct isl_div *isl_constraint_div(struct isl_constraint *constraint, int pos);
+struct isl_constraint *isl_constraint_add_div(struct isl_constraint *constraint,
+ struct isl_div *div, int *pos);
void isl_constraint_clear(struct isl_constraint *constraint);
struct isl_constraint *isl_constraint_negate(struct isl_constraint *constraint);
isl_int **line;
};
+struct isl_div *isl_div_alloc(struct isl_dim *dim);
struct isl_div *isl_basic_map_div(struct isl_basic_map *bmap, isl_int **line);
struct isl_div *isl_div_free(struct isl_div *c);
return NULL;
}
+struct isl_constraint *isl_constraint_add_div(struct isl_constraint *constraint,
+ struct isl_div *div, int *pos)
+{
+ if (!constraint || !div)
+ goto error;
+
+ isl_assert(constraint->ctx,
+ isl_dim_equal(div->bmap->dim, constraint->bmap->dim), goto error);
+ isl_assert(constraint->ctx,
+ constraint->bmap->n_eq + constraint->bmap->n_ineq == 1, goto error);
+
+ constraint->bmap = isl_basic_map_extend_dim(constraint->bmap,
+ isl_dim_copy(constraint->bmap->dim), 1, 0, 0);
+ if (!constraint->bmap)
+ goto error;
+ constraint->line = &constraint->bmap->eq[0];
+ *pos = isl_basic_map_alloc_div(constraint->bmap);
+ if (*pos < 0)
+ goto error;
+ isl_seq_cpy(constraint->bmap->div[*pos], div->line[0],
+ 1 + 1 + isl_basic_map_total_dim(constraint->bmap));
+ isl_div_free(div);
+ return constraint;
+error:
+ isl_constraint_free(constraint);
+ isl_div_free(div);
+ return NULL;
+}
+
int isl_constraint_dim(struct isl_constraint *constraint,
enum isl_dim_type type)
{
#include <isl_div.h>
#include <isl_map.h>
+#include "isl_map_private.h"
static unsigned n(struct isl_div *d, enum isl_dim_type type)
{
return NULL;
}
+struct isl_div *isl_div_alloc(struct isl_dim *dim)
+{
+ struct isl_basic_map *bmap;
+
+ if (!dim)
+ return NULL;
+
+ bmap = isl_basic_map_alloc_dim(dim, 1, 0, 0);
+ if (!bmap)
+ return NULL;
+
+ isl_basic_map_alloc_div(bmap);
+ isl_seq_clr(bmap->div[0], 1 + 1 + isl_basic_map_total_dim(bmap));
+ return isl_basic_map_div(bmap, &bmap->div[0]);
+}
+
struct isl_div *isl_div_free(struct isl_div *c)
{
if (!c)