X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_aff.c;h=85e4953e23fd5c3d68df54c9dc685733e2087baf;hb=de8a09c8327e8f060c2965b81082b5913e0ee8a6;hp=b316a3183c7c7a56b422bb3a25dc249c5e667a74;hpb=b04a20aa1edc4378618efa264a1da1e5d2afa83d;p=platform%2Fupstream%2Fisl.git diff --git a/isl_aff.c b/isl_aff.c index b316a31..85e4953 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -433,6 +433,43 @@ __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v) return aff; } +/* Add "v" to the numerator of the constant term of "aff". + */ +__isl_give isl_aff *isl_aff_add_constant_num(__isl_take isl_aff *aff, isl_int v) +{ + if (isl_int_is_zero(v)) + return aff; + + aff = isl_aff_cow(aff); + if (!aff) + return NULL; + + aff->v = isl_vec_cow(aff->v); + if (!aff->v) + return isl_aff_free(aff); + + isl_int_add(aff->v->el[1], aff->v->el[1], v); + + return aff; +} + +/* Add "v" to the numerator of the constant term of "aff". + */ +__isl_give isl_aff *isl_aff_add_constant_num_si(__isl_take isl_aff *aff, int v) +{ + isl_int t; + + if (v == 0) + return aff; + + isl_int_init(t); + isl_int_set_si(t, v); + aff = isl_aff_add_constant_num(aff, t); + isl_int_clear(t); + + return aff; +} + __isl_give isl_aff *isl_aff_set_constant_si(__isl_take isl_aff *aff, int v) { aff = isl_aff_cow(aff); @@ -1099,6 +1136,16 @@ __isl_give isl_basic_set *isl_aff_nonneg_basic_set(__isl_take isl_aff *aff) return bset; } +/* Return a basic set containing those elements in the domain space + * of aff where it is negative. + */ +__isl_give isl_basic_set *isl_aff_neg_basic_set(__isl_take isl_aff *aff) +{ + aff = isl_aff_neg(aff); + aff = isl_aff_add_constant_num_si(aff, -1); + return isl_aff_nonneg_basic_set(aff); +} + /* Return a basic set containing those elements in the space * of aff where it is zero. */ @@ -2262,6 +2309,9 @@ __isl_give isl_multi_aff *isl_multi_aff_set_dim_name( maff->space = isl_space_set_dim_name(maff->space, type, pos, s); if (!maff->space) return isl_multi_aff_free(maff); + + if (type == isl_dim_out) + return maff; for (i = 0; i < maff->n; ++i) { maff->p[i] = isl_aff_set_dim_name(maff->p[i], type, pos, s); if (!maff->p[i])