From: Sven Verdoolaege Date: Tue, 28 Jun 2011 18:36:13 +0000 (+0200) Subject: add isl_aff_drop_dims X-Git-Tag: isl-0.07~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=23f9e637f7d7617c639b53be36851408a53cd6fa;p=platform%2Fupstream%2Fisl.git add isl_aff_drop_dims Signed-off-by: Sven Verdoolaege --- diff --git a/doc/user.pod b/doc/user.pod index f44f3f5..38cef38 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -2286,6 +2286,13 @@ It can be modified using __isl_take isl_aff *aff, enum isl_dim_type type, int pos, int v); + __isl_give isl_aff *isl_aff_drop_dims( + __isl_take isl_aff *aff, + enum isl_dim_type type, unsigned first, unsigned n); + __isl_give isl_pw_aff *isl_pw_aff_drop_dims( + __isl_take isl_pw_aff *pwaff, + enum isl_dim_type type, unsigned first, unsigned n); + Note that the C and C functions set the I of the constant or coefficient, while C and C add an integer value to diff --git a/include/isl/aff.h b/include/isl/aff.h index 2df4420..3a7e69c 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -68,6 +68,9 @@ __isl_give isl_aff *isl_aff_scale(__isl_take isl_aff *aff, isl_int f); __isl_give isl_aff *isl_aff_scale_down(__isl_take isl_aff *aff, isl_int f); __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f); +__isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff, + enum isl_dim_type type, unsigned first, unsigned n); + __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff, __isl_take isl_set *context); @@ -105,6 +108,9 @@ __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff); __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); +__isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff, + enum isl_dim_type type, unsigned first, unsigned n); + __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pwqp); __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, __isl_take isl_set *context); diff --git a/isl_aff.c b/isl_aff.c index e61b73c..72869f7 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -824,6 +824,37 @@ error: return -1; } +__isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff, + enum isl_dim_type type, unsigned first, unsigned n) +{ + isl_ctx *ctx; + + if (!aff) + return NULL; + if (n == 0 && !isl_local_space_is_named_or_nested(aff->ls, type)) + return aff; + + ctx = isl_aff_get_ctx(aff); + if (first + n > isl_aff_dim(aff, type)) + isl_die(ctx, isl_error_invalid, "range out of bounds", + return isl_aff_free(aff)); + + aff = isl_aff_cow(aff); + if (!aff) + return NULL; + + aff->ls = isl_local_space_drop_dims(aff->ls, type, first, n); + if (!aff->ls) + return isl_aff_free(aff); + + first += 1 + isl_local_space_offset(aff->ls, type); + aff->v = isl_vec_drop_els(aff->v, first, n); + if (!aff->v) + return isl_aff_free(aff); + + return aff; +} + #undef PW #define PW isl_pw_aff #undef EL @@ -840,7 +871,6 @@ error: #define NO_EVAL #define NO_OPT #define NO_MOVE_DIMS -#define NO_DROP_DIMS #define NO_INSERT_DIMS #define NO_REALIGN #define NO_LIFT