From c20a709659864c6cd9393f5c6d5225c7f44602fc Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 1 Jul 2011 14:47:29 +0200 Subject: [PATCH] add isl_aff_from_div Signed-off-by: Sven Verdoolaege --- doc/user.pod | 5 +++++ include/isl/div.h | 3 +++ isl_div.c | 17 +++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index 5fed4a9b..ae767785 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -2189,6 +2189,11 @@ The zero quasi affine expression can be created using __isl_give isl_aff *isl_aff_zero( __isl_take isl_local_space *ls); +A quasi affine expression can also be initialized from an C: + + #include + __isl_give isl_aff *isl_aff_from_div(__isl_take isl_div *div); + An empty piecewise quasi affine expression (one with no cells) or a piecewise quasi affine expression with a single cell can be created using the following functions. diff --git a/include/isl/div.h b/include/isl/div.h index 86ac0ca7..398c7be8 100644 --- a/include/isl/div.h +++ b/include/isl/div.h @@ -11,6 +11,7 @@ #define ISL_DIV_H #include +#include #if defined(__cplusplus) extern "C" { @@ -37,6 +38,8 @@ void isl_div_set_coefficient(struct isl_div *div, unsigned isl_div_dim(__isl_keep isl_div *div, enum isl_dim_type type); __isl_give isl_div *isl_div_div(__isl_take isl_div *div, int pos); +__isl_give isl_aff *isl_aff_from_div(__isl_take isl_div *div); + #if defined(__cplusplus) } #endif diff --git a/isl_div.c b/isl_div.c index d7ca68f2..a04646f0 100644 --- a/isl_div.c +++ b/isl_div.c @@ -12,6 +12,7 @@ #include #include #include +#include isl_ctx *isl_div_get_ctx(__isl_keep isl_div *div) { @@ -172,3 +173,19 @@ void isl_div_set_coefficient(struct isl_div *div, isl_assert(div->ctx, pos < n(div, type), return); isl_int_set(div->line[0][offset(div, type) + pos], v); } + +__isl_give isl_aff *isl_aff_from_div(__isl_take isl_div *div) +{ + isl_aff *aff; + int pos; + + if (!div) + return NULL; + + pos = div->line - div->bmap->div; + aff = isl_aff_zero(isl_basic_map_get_local_space(div->bmap)); + aff = isl_aff_set_coefficient_si(aff, isl_dim_div, pos, 1); + + isl_div_free(div); + return aff; +} -- 2.11.4.GIT