From: Sven Verdoolaege Date: Sat, 24 Sep 2011 16:08:08 +0000 (+0200) Subject: add isl_aff_set_dim_id X-Git-Tag: isl-0.08~59 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cf2e02ca592663590324ce1bc191f4b480673fea;p=platform%2Fupstream%2Fisl.git add isl_aff_set_dim_id Signed-off-by: Sven Verdoolaege --- diff --git a/doc/user.pod b/doc/user.pod index 63058ac..ab43bdf 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -2629,6 +2629,9 @@ It can be modified using __isl_give isl_aff *isl_aff_set_dim_name( __isl_take isl_aff *aff, enum isl_dim_type type, unsigned pos, const char *s); + __isl_give isl_aff *isl_aff_set_dim_id( + __isl_take isl_aff *aff, enum isl_dim_type type, + unsigned pos, __isl_take isl_id *id); __isl_give isl_aff *isl_aff_set_constant( __isl_take isl_aff *aff, isl_int v); __isl_give isl_aff *isl_aff_set_constant_si( diff --git a/include/isl/aff.h b/include/isl/aff.h index 8582103..9917001 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -52,6 +52,8 @@ int isl_aff_is_cst(__isl_keep isl_aff *aff); __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff, enum isl_dim_type type, unsigned pos, const char *s); +__isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff, + enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); int isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, __isl_keep isl_aff *aff2); int isl_aff_plain_is_zero(__isl_keep isl_aff *aff); diff --git a/isl_aff.c b/isl_aff.c index 1c4f03f..c18493d 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -862,6 +862,29 @@ __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff, return aff; } +__isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff, + enum isl_dim_type type, unsigned pos, __isl_take isl_id *id) +{ + aff = isl_aff_cow(aff); + if (!aff) + return isl_id_free(id); + if (type == isl_dim_out) + isl_die(aff->v->ctx, isl_error_invalid, + "cannot set name of output/set dimension", + goto error); + if (type == isl_dim_in) + type = isl_dim_set; + aff->ls = isl_local_space_set_dim_id(aff->ls, type, pos, id); + if (!aff->ls) + return isl_aff_free(aff); + + return aff; +error: + isl_id_free(id); + isl_aff_free(aff); + return NULL; +} + /* Exploit the equalities in "eq" to simplify the affine expression * and the expressions of the integer divisions in the local space. * The integer divisions in this local space are assumed to appear