X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_reordering.c;h=30e2c8b466b13df11904e025739d48d61db8fb36;hb=de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0;hp=392152f92352319915b6af27e5f0664bfb9efd24;hpb=7f17911bba7c398741edde2ce03c64b6555afbec;p=platform%2Fupstream%2Fisl.git diff --git a/isl_reordering.c b/isl_reordering.c index 392152f..30e2c8b 100644 --- a/isl_reordering.c +++ b/isl_reordering.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, @@ -9,7 +9,7 @@ */ #include -#include +#include #include __isl_give isl_reordering *isl_reordering_alloc(isl_ctx *ctx, int len) @@ -49,7 +49,7 @@ __isl_give isl_reordering *isl_reordering_dup(__isl_keep isl_reordering *r) if (!dup) return NULL; - dup->dim = isl_dim_copy(r->dim); + dup->dim = isl_space_copy(r->dim); if (!dup->dim) return isl_reordering_free(dup); for (i = 0; i < dup->len; ++i) @@ -77,7 +77,7 @@ void *isl_reordering_free(__isl_take isl_reordering *exp) if (--exp->ref > 0) return NULL; - isl_dim_free(exp->dim); + isl_space_free(exp->dim); free(exp); return NULL; } @@ -88,7 +88,7 @@ void *isl_reordering_free(__isl_take isl_reordering *exp) * any remaining parameters of "alignee" that do not occur in "aligner". */ __isl_give isl_reordering *isl_parameter_alignment_reordering( - __isl_keep isl_dim *alignee, __isl_keep isl_dim *aligner) + __isl_keep isl_space *alignee, __isl_keep isl_space *aligner) { int i, j; isl_reordering *exp; @@ -100,32 +100,36 @@ __isl_give isl_reordering *isl_parameter_alignment_reordering( if (!exp) return NULL; - exp->dim = isl_dim_copy(aligner); + exp->dim = isl_space_copy(aligner); for (i = 0; i < alignee->nparam; ++i) { - const char *name_i; - name_i = isl_dim_get_name(alignee, isl_dim_param, i); - if (!name_i) + isl_id *id_i; + id_i = isl_space_get_dim_id(alignee, isl_dim_param, i); + if (!id_i) isl_die(alignee->ctx, isl_error_invalid, "cannot align unnamed parameters", goto error); for (j = 0; j < aligner->nparam; ++j) { - const char *name_j; - name_j = isl_dim_get_name(aligner, isl_dim_param, j); - if (name_i == name_j) + isl_id *id_j; + id_j = isl_space_get_dim_id(aligner, isl_dim_param, j); + isl_id_free(id_j); + if (id_i == id_j) break; } - if (j < aligner->nparam) + if (j < aligner->nparam) { exp->pos[i] = j; - else { + isl_id_free(id_i); + } else { int pos; - pos = isl_dim_size(exp->dim, isl_dim_param); - exp->dim = isl_dim_add(exp->dim, isl_dim_param, 1); - exp->dim = isl_dim_set_name(exp->dim, - isl_dim_param, pos, name_i); + pos = isl_space_dim(exp->dim, isl_dim_param); + exp->dim = isl_space_add_dims(exp->dim, isl_dim_param, 1); + exp->dim = isl_space_set_dim_id(exp->dim, + isl_dim_param, pos, id_i); exp->pos[i] = pos; } } + if (!exp->dim) + return isl_reordering_free(exp); return exp; error: isl_reordering_free(exp); @@ -144,11 +148,11 @@ __isl_give isl_reordering *isl_reordering_extend(__isl_take isl_reordering *exp, if (extra == 0) return exp; - offset = isl_dim_total(exp->dim) - exp->len; + offset = isl_space_dim(exp->dim, isl_dim_all) - exp->len; res = isl_reordering_alloc(exp->dim->ctx, exp->len + extra); if (!res) goto error; - res->dim = isl_dim_copy(exp->dim); + res->dim = isl_space_copy(exp->dim); for (i = 0; i < exp->len; ++i) res->pos[i] = exp->pos[i]; for (i = exp->len; i < res->len; ++i) @@ -162,8 +166,8 @@ error: return NULL; } -__isl_give isl_reordering *isl_reordering_extend_dim( - __isl_take isl_reordering *exp, __isl_take isl_dim *dim) +__isl_give isl_reordering *isl_reordering_extend_space( + __isl_take isl_reordering *exp, __isl_take isl_space *dim) { isl_reordering *res; @@ -171,19 +175,22 @@ __isl_give isl_reordering *isl_reordering_extend_dim( goto error; res = isl_reordering_extend(isl_reordering_copy(exp), - isl_dim_total(dim) - exp->len); + isl_space_dim(dim, isl_dim_all) - exp->len); res = isl_reordering_cow(res); if (!res) goto error; - isl_dim_free(res->dim); - res->dim = isl_dim_replace(dim, isl_dim_param, exp->dim); + isl_space_free(res->dim); + res->dim = isl_space_replace(dim, isl_dim_param, exp->dim); isl_reordering_free(exp); + if (!res->dim) + return isl_reordering_free(res); + return res; error: isl_reordering_free(exp); - isl_dim_free(dim); + isl_space_free(dim); return NULL; }