X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_polynomial.c;h=bc0937dcc377ffbb3d1dcc2ddd3a44799ad3aaba;hb=de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0;hp=132986ea5b69772f93a319c89ccb2287202557bf;hpb=556d287f982d8cc1a6f1fd6a318e926c95dbebf4;p=platform%2Fupstream%2Fisl.git diff --git a/isl_polynomial.c b/isl_polynomial.c index 132986e..bc0937d 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -1,7 +1,7 @@ /* * Copyright 2010 INRIA Saclay * - * Use of this software is governed by the GNU LGPLv2.1 license + * Use of this software is governed by the MIT license * * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France, * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod, @@ -2503,7 +2503,7 @@ __isl_give isl_qpolynomial *isl_qpolynomial_substitute_equalities( if (!qp || !eq) goto error; if (qp->div->n_row > 0) - eq = isl_basic_set_add(eq, isl_dim_set, qp->div->n_row); + eq = isl_basic_set_add_dims(eq, isl_dim_set, qp->div->n_row); return isl_qpolynomial_substitute_equalities_lifted(qp, eq); error: isl_basic_set_free(eq); @@ -2608,6 +2608,8 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_from_qpolynomial( #undef DEFAULT_IS_ZERO #define DEFAULT_IS_ZERO 1 +#define NO_PULLBACK + #include #undef UNION @@ -3213,7 +3215,7 @@ int isl_qpolynomial_as_polynomial_on_domain(__isl_keep isl_qpolynomial *qp, dim = isl_space_add_dims(dim, isl_dim_set, qp->div->n_row); poly = isl_qpolynomial_alloc(dim, 0, isl_upoly_copy(qp->upoly)); bset = isl_basic_set_copy(bset); - bset = isl_basic_set_add(bset, isl_dim_set, qp->div->n_row); + bset = isl_basic_set_add_dims(bset, isl_dim_set, qp->div->n_row); bset = add_div_constraints(bset, div); return fn(bset, poly, user); @@ -3482,7 +3484,7 @@ __isl_give isl_term *isl_term_dup(__isl_keep isl_term *term) isl_term *dup; unsigned total; - if (term) + if (!term) return NULL; total = isl_space_dim(term->dim, isl_dim_all) + term->div->n_row; @@ -3581,7 +3583,6 @@ __isl_give isl_aff *isl_term_get_div(__isl_keep isl_term *term, unsigned pos) { isl_local_space *ls; isl_aff *aff; - unsigned total; if (!term) return NULL; @@ -3589,13 +3590,6 @@ __isl_give isl_aff *isl_term_get_div(__isl_keep isl_term *term, unsigned pos) isl_assert(term->dim->ctx, pos < isl_term_dim(term, isl_dim_div), return NULL); - total = term->div->n_col - term->div->n_row - 2; - /* No nested divs for now */ - isl_assert(term->dim->ctx, - isl_seq_first_non_zero(term->div->row[pos] + 2 + total, - term->div->n_row) == -1, - return NULL); - ls = isl_local_space_alloc_div(isl_space_copy(term->dim), isl_mat_copy(term->div)); aff = isl_aff_alloc(ls); @@ -3604,6 +3598,8 @@ __isl_give isl_aff *isl_term_get_div(__isl_keep isl_term *term, unsigned pos) isl_seq_cpy(aff->v->el, term->div->row[pos], aff->v->size); + aff = isl_aff_normalize(aff); + return aff; } @@ -3968,44 +3964,11 @@ __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_sub( isl_union_pw_qpolynomial_neg(upwqp2)); } -static int mul_entry(void **entry, void *user) -{ - struct isl_union_pw_qpolynomial_match_bin_data *data = user; - uint32_t hash; - struct isl_hash_table_entry *entry2; - isl_pw_qpolynomial *pwpq = *entry; - int empty; - - hash = isl_space_get_hash(pwpq->dim); - entry2 = isl_hash_table_find(data->u2->dim->ctx, &data->u2->table, - hash, &has_dim, pwpq->dim, 0); - if (!entry2) - return 0; - - pwpq = isl_pw_qpolynomial_copy(pwpq); - pwpq = isl_pw_qpolynomial_mul(pwpq, - isl_pw_qpolynomial_copy(entry2->data)); - - empty = isl_pw_qpolynomial_is_zero(pwpq); - if (empty < 0) { - isl_pw_qpolynomial_free(pwpq); - return -1; - } - if (empty) { - isl_pw_qpolynomial_free(pwpq); - return 0; - } - - data->res = isl_union_pw_qpolynomial_add_pw_qpolynomial(data->res, pwpq); - - return 0; -} - __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_mul( __isl_take isl_union_pw_qpolynomial *upwqp1, __isl_take isl_union_pw_qpolynomial *upwqp2) { - return match_bin_op(upwqp1, upwqp2, &mul_entry); + return match_bin_op(upwqp1, upwqp2, &isl_pw_qpolynomial_mul); } /* Reorder the columns of the given div definitions according to the