74 if (bset->n_eq == 0 && bset->n_ineq == 0)
85 isl_assert(bset->ctx, bset->n_eq == 1,
goto error);
86 isl_assert(bset->ctx, bset->n_ineq == 0,
goto error);
103 for (i = 1; i < bset->n_ineq; ++i) {
105 bset->ineq[i], 2, &
t);
110 if (i < bset->n_ineq) {
141 if (!sample || sample->
size == 0)
166 if (tab->
empty || n_eq == 0)
168 if (n_eq == tab->
n_var)
174 for (i = 0, j = 0; i < tab->
n_con; ++i) {
183 bset->ineq[i - bset->n_eq] + 1, tab->
n_var);
208 if (tab->
empty || n_eq == 0 || n_eq == tab->
n_var)
231 ctx->
one, &min->el[level], NULL, 0);
244 unsigned dim = tab->
n_var;
247 tab->
basis->
row[1 + level] + 1, dim);
249 ctx->
one, &max->el[level], NULL, 0);
251 tab->
basis->
row[1 + level] + 1, dim);
290 min->el[level], max->el[level]);
309 "expecting bounded rational solution",
316 "expecting bounded rational solution",
318 }
while (
isl_int_le(min->el[level], max->el[level]));
429 if (!min || !max || !snap)
445 "expecting bounded rational solution",
454 "expecting bounded rational solution",
467 if (!reduced && choice &&
469 unsigned gbr_only_first;
478 if (!tab || !tab->
basis)
591 if (!ctx ||
total < 0)
658 if (tab && tab->
empty) {
674 if (sample->
size > 0) {
708 if (
total < 0 || !sample)
715 for (i = 0; i < sample->size; ++i) {
719 for (i = 0; i < T->
n_col - 1; ++i) {
795 if (
total < 0 || !vec)
803 for (i = 0; i <
cone->n_ineq; ++i) {
811 shift->ineq[k][0], vec->el[0]);
813 for (j = 0; j <
total; ++j) {
817 shift->ineq[k][0], shift->ineq[k][1 + j]);
848 if (!vec || !
cone || !U)
851 isl_assert(vec->ctx, vec->size != 0,
goto error);
863 0,
total - (vec->size - 1));
887 isl_assert(vec1->ctx, vec1->size > 0,
goto error);
888 isl_assert(vec2->ctx, vec2->size > 0,
goto error);
897 isl_seq_cpy(vec->
el + vec1->size, vec2->el + 1, vec2->size - 1);
958 if (!bset ||
total < 0)
975 total - cone_dim, cone_dim);
978 if (!sample || sample->
size == 0) {
1002 for (i = 0; i < v->size; ++i)
1036 if (!tab || !tab_cone || !U)
1040 for (i = 0; i < bset->n_ineq; ++i) {
1058 isl_int_add(bset->ineq[i][0], bset->ineq[i][0], v);
1060 isl_int_sub(bset->ineq[i][0], bset->ineq[i][0], v);
1095 if (!tab || !tab_cone)
1100 return tab->
basis ? 0 : -1;
1143 if (
cone->n_eq < dim)
1169 if (bset->sample && bset->sample->size == 1 + dim) {
1180 bset->sample = NULL;
1226 for (i = dim - 1; i >= 0; --i) {
1252 if (sample_vec->
size == 0) {
1278 for (i = 0; i <
map->n; ++i) {
1320 for (i = 0; i <
set->n; ++i) {
static RegisterPass< ScopPrinterWrapperPass > M("dot-scops", "Polly - Print Scops of function")
struct isl_tab * isl_tab_compute_reduced_basis(struct isl_tab *tab)
static __isl_give isl_basic_set * bset_from_bmap(__isl_take isl_basic_map *bmap)
#define isl_die(ctx, errno, msg, code)
#define isl_assert(ctx, test, code)
#define isl_alloc_array(ctx, type, n)
#define ISL_F_ISSET(p, f)
isl_stat isl_stat(*) void user)
void GMPQAPI() init(mp_rat x)
__isl_give isl_basic_set * isl_basic_set_recession_cone(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_remove_equalities(__isl_take isl_basic_set *bset, __isl_give isl_mat **T, __isl_give isl_mat **T2)
__isl_give isl_factorizer * isl_basic_set_factorizer(__isl_keep isl_basic_set *bset)
__isl_give isl_bool isl_factorizer_every_factor_basic_set(__isl_keep isl_factorizer *f, isl_bool(*test)(__isl_keep isl_basic_set *bset, void *user), void *user)
__isl_null isl_factorizer * isl_factorizer_free(__isl_take isl_factorizer *f)
#define isl_int_is_nonneg(i)
#define isl_int_is_zero(i)
#define isl_int_is_one(i)
#define isl_int_is_negone(i)
#define isl_int_is_neg(i)
#define isl_int_neg(r, i)
#define isl_int_add_ui(r, i, j)
#define isl_int_add(r, i, j)
#define isl_int_set(r, i)
#define isl_int_cdiv_q(r, i, j)
#define isl_int_fdiv_q_ui(r, i, j)
#define isl_int_set_si(r, i)
#define isl_int_sub(r, i, j)
__isl_give isl_basic_set * isl_basic_set_alloc_space(__isl_take isl_space *space, unsigned extra, unsigned n_eq, unsigned n_ineq)
isl_bool isl_basic_set_contains(__isl_keep isl_basic_set *bset, __isl_keep isl_vec *vec)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving(__isl_take isl_basic_set *bset, unsigned first, unsigned n)
__isl_give isl_basic_set * isl_basic_set_drop_dims(__isl_take isl_basic_set *bset, unsigned first, unsigned n)
int isl_basic_set_alloc_equality(__isl_keep isl_basic_set *bset)
isl_stat isl_basic_set_check_no_locals(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_set_to_empty(__isl_take isl_basic_map *bmap)
isl_stat isl_basic_set_check_no_params(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_map_underlying_set(__isl_take isl_basic_map *bmap)
__isl_give isl_basic_set * isl_basic_set_underlying_set(__isl_take isl_basic_set *bset)
__isl_give isl_basic_map * isl_basic_map_overlying_set(__isl_take isl_basic_set *bset, __isl_take isl_basic_map *like)
__isl_give isl_basic_set * isl_basic_set_alloc(isl_ctx *ctx, unsigned nparam, unsigned dim, unsigned extra, unsigned n_eq, unsigned n_ineq)
int isl_basic_set_alloc_inequality(__isl_keep isl_basic_set *bset)
#define ISL_BASIC_MAP_EMPTY
__isl_give isl_basic_set * isl_basic_set_preimage(__isl_take isl_basic_set *bset, __isl_take isl_mat *mat)
#define ISL_BASIC_SET_NO_IMPLICIT
__isl_give isl_basic_set * isl_basic_set_simplify(__isl_take isl_basic_set *bset)
#define ISL_BASIC_SET_EMPTY
__isl_give isl_basic_set * isl_basic_set_finalize(__isl_take isl_basic_set *bset)
__isl_give isl_mat * isl_mat_sub_alloc6(isl_ctx *ctx, isl_int **row, unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col)
__isl_give isl_morph * isl_morph_inverse(__isl_take isl_morph *morph)
__isl_give isl_vec * isl_morph_vec(__isl_take isl_morph *morph, __isl_take isl_vec *vec)
__isl_give isl_morph * isl_morph_copy(__isl_keep isl_morph *morph)
__isl_give isl_point * isl_point_alloc(__isl_take isl_space *space, __isl_take isl_vec *vec)
static __isl_give isl_vec * sample_bounded(__isl_take isl_basic_set *bset)
static void vec_sum_of_neg(__isl_keep isl_vec *v, isl_int *s)
__isl_give isl_basic_set * isl_basic_set_from_vec(__isl_take isl_vec *vec)
static struct isl_mat * initial_basis(struct isl_tab *tab)
static __isl_give isl_vec * basic_set_sample(__isl_take isl_basic_set *bset, int bounded)
static isl_bool factor_sample(__isl_keep isl_basic_set *bset, void *user)
static __isl_give isl_vec * zero_sample(__isl_take isl_basic_set *bset)
static struct isl_mat * tab_equalities(struct isl_tab *tab)
__isl_give isl_basic_set * isl_set_sample(__isl_take isl_set *set)
static __isl_give isl_vec * rational_sample(__isl_take isl_basic_set *bset)
static __isl_give isl_vec * interval_sample(__isl_take isl_basic_set *bset)
static __isl_give isl_vec * empty_sample(__isl_take isl_basic_set *bset)
__isl_give isl_vec * isl_basic_set_sample_with_cone(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *cone)
__isl_give isl_point * isl_set_sample_point(__isl_take isl_set *set)
__isl_give isl_basic_map * isl_basic_map_sample(__isl_take isl_basic_map *bmap)
static enum isl_lp_result compute_max(isl_ctx *ctx, struct isl_tab *tab, __isl_keep isl_vec *max, int level)
static __isl_give isl_basic_set * plug_in(__isl_take isl_basic_set *bset, __isl_take isl_vec *sample)
static __isl_give isl_vec * vec_concat(__isl_take isl_vec *vec1, __isl_take isl_vec *vec2)
__isl_give isl_point * isl_basic_set_sample_point(__isl_take isl_basic_set *bset)
static __isl_give isl_basic_set * shift_cone(__isl_take isl_basic_set *cone, __isl_take isl_vec *vec)
static __isl_give isl_vec * isl_basic_set_sample_bounded(__isl_take isl_basic_set *bset)
static __isl_give isl_vec * round_up_in_cone(__isl_take isl_vec *vec, __isl_take isl_basic_set *cone, __isl_take isl_mat *U)
static __isl_give isl_vec * factored_sample(__isl_take isl_basic_set *bset, __isl_take isl_factorizer *f)
__isl_give isl_basic_set * isl_basic_set_sample(__isl_take isl_basic_set *bset)
static __isl_give isl_vec * sample_eq(__isl_take isl_basic_set *bset, __isl_give isl_vec *(*recurse)(__isl_take isl_basic_set *))
static __isl_give isl_vec * gbr_sample(__isl_take isl_basic_set *bset)
int isl_tab_set_initial_basis_with_cone(struct isl_tab *tab, struct isl_tab *tab_cone)
static int greedy_search(isl_ctx *ctx, struct isl_tab *tab, __isl_keep isl_vec *min, __isl_keep isl_vec *max, int level)
static enum isl_lp_result compute_min(isl_ctx *ctx, struct isl_tab *tab, __isl_keep isl_vec *min, int level)
static int tab_shift_cone(struct isl_tab *tab, struct isl_tab *tab_cone, struct isl_mat *U)
__isl_give isl_vec * isl_basic_set_sample_vec(__isl_take isl_basic_set *bset)
__isl_give isl_vec * isl_tab_sample(struct isl_tab *tab)
__isl_give isl_basic_map * isl_map_sample(__isl_take isl_map *map)
static __isl_give isl_schedule_node * recurse(struct isl_scc_graph *scc_graph, int *pos, int n, __isl_take isl_schedule_node *node)
void isl_seq_inner_product(isl_int *p1, isl_int *p2, unsigned len, isl_int *prod)
void isl_seq_clr(isl_int *p, unsigned len)
void isl_seq_cpy(isl_int *dst, isl_int *src, unsigned len)
void isl_seq_neg(isl_int *dst, isl_int *src, unsigned len)
void isl_tab_free(struct isl_tab *tab)
__isl_keep isl_basic_set * isl_tab_peek_bset(struct isl_tab *tab)
struct isl_tab_undo * isl_tab_snap(struct isl_tab *tab)
int isl_tab_is_equality(struct isl_tab *tab, int con)
isl_stat isl_tab_add_ineq(struct isl_tab *tab, isl_int *ineq)
__isl_give isl_vec * isl_tab_get_sample_value(struct isl_tab *tab)
int isl_tab_add_valid_eq(struct isl_tab *tab, isl_int *eq)
int isl_tab_sample_is_integer(struct isl_tab *tab)
enum isl_lp_result isl_tab_min(struct isl_tab *tab, isl_int *f, isl_int denom, isl_int *opt, isl_int *opt_denom, unsigned flags)
int isl_tab_detect_implicit_equalities(struct isl_tab *tab)
__isl_give struct isl_tab * isl_tab_from_basic_set(__isl_keep isl_basic_set *bset, int track)
isl_stat isl_tab_rollback(struct isl_tab *tab, struct isl_tab_undo *snap)
int isl_tab_extend_cons(struct isl_tab *tab, unsigned n_new)
static __isl_give isl_union_map * total(__isl_take isl_union_map *umap, __isl_give isl_map *(*fn)(__isl_take isl_map *))
__isl_null isl_basic_map * isl_basic_map_free(__isl_take isl_basic_map *bmap)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_empty(__isl_take isl_space *space)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_copy(__isl_keep isl_basic_map *bmap)
struct isl_basic_set isl_basic_set
__isl_give isl_mat * isl_mat_copy(__isl_keep isl_mat *mat)
__isl_give isl_vec * isl_mat_vec_inverse_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_identity(isl_ctx *ctx, unsigned n_row)
__isl_give isl_mat * isl_mat_left_hermite(__isl_take isl_mat *M, int neg, __isl_give isl_mat **U, __isl_give isl_mat **Q)
__isl_give isl_vec * isl_mat_vec_product(__isl_take isl_mat *mat, __isl_take isl_vec *vec)
__isl_give isl_mat * isl_mat_lin_to_aff(__isl_take isl_mat *mat)
__isl_null isl_mat * isl_mat_free(__isl_take isl_mat *mat)
__isl_give isl_mat * isl_mat_alloc(isl_ctx *ctx, unsigned n_row, unsigned n_col)
__isl_give isl_mat * isl_mat_concat(__isl_take isl_mat *top, __isl_take isl_mat *bot)
__isl_give isl_mat * isl_mat_drop_cols(__isl_take isl_mat *mat, unsigned col, unsigned n)
__isl_give isl_vec * isl_vec_mat_product(__isl_take isl_vec *vec, __isl_take isl_mat *mat)
isl_bool isl_point_is_void(__isl_keep isl_point *pnt)
__isl_null isl_point * isl_point_free(__isl_take isl_point *pnt)
__isl_give isl_point * isl_point_void(__isl_take isl_space *space)
isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, enum isl_dim_type type)
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
__isl_give isl_space * isl_basic_set_get_space(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_remove_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
isl_ctx * isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
static Signature set_to_map
static bool contains(const std::vector< std::string > &v, const std::string &el)
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_copy(__isl_keep isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)
__isl_give isl_vec * isl_vec_ceil(__isl_take isl_vec *vec)