diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2013-05-28 14:47:36 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2013-05-28 20:42:49 +0200 |
commit | b56d2b5a27544cec303857fb62ba89b4b9687951 (patch) | |
tree | 9ec08ecb179d30d57df680a23b0f24806ab38fde | |
parent | a544f6dfa70071d15743ec6b20ce87755f8b0d90 (diff) | |
download | isl-b56d2b5a27544cec303857fb62ba89b4b9687951.tar.gz isl-b56d2b5a27544cec303857fb62ba89b4b9687951.tar.bz2 isl-b56d2b5a27544cec303857fb62ba89b4b9687951.zip |
isl_ast_build_scale_down: use isl_val
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
-rw-r--r-- | isl_ast_build.c | 18 | ||||
-rw-r--r-- | isl_ast_build_private.h | 2 | ||||
-rw-r--r-- | isl_ast_codegen.c | 5 |
3 files changed, 13 insertions, 12 deletions
diff --git a/isl_ast_build.c b/isl_ast_build.c index 7bf86102..520247f5 100644 --- a/isl_ast_build.c +++ b/isl_ast_build.c @@ -1540,28 +1540,25 @@ __isl_give isl_ast_build *isl_ast_build_insert_dim( * We therefore only need to update stride, offset and the options. */ __isl_give isl_ast_build *isl_ast_build_scale_down( - __isl_take isl_ast_build *build, isl_int m, + __isl_take isl_ast_build *build, __isl_take isl_val *m, __isl_take isl_union_map *umap) { isl_aff *aff; - isl_int v; + isl_val *v; int depth; build = isl_ast_build_cow(build); - if (!build || !umap) + if (!build || !umap || !m) goto error; depth = build->depth; - isl_int_init(v); - if (isl_vec_get_element(build->strides, depth, &v) < 0) - build->strides = isl_vec_free(build->strides); - isl_int_divexact(v, v, m); - build->strides = isl_vec_set_element(build->strides, depth, v); - isl_int_clear(v); + v = isl_vec_get_element_val(build->strides, depth); + v = isl_val_div(v, isl_val_copy(m)); + build->strides = isl_vec_set_element_val(build->strides, depth, v); aff = isl_multi_aff_get_aff(build->offsets, depth); - aff = isl_aff_scale_down(aff, m); + aff = isl_aff_scale_down_val(aff, m); build->offsets = isl_multi_aff_set_aff(build->offsets, depth, aff); build->options = isl_union_map_apply_domain(build->options, umap); if (!build->strides || !build->offsets || !build->options) @@ -1569,6 +1566,7 @@ __isl_give isl_ast_build *isl_ast_build_scale_down( return build; error: + isl_val_free(m); isl_union_map_free(umap); return isl_ast_build_free(build); } diff --git a/isl_ast_build_private.h b/isl_ast_build_private.h index 52133abe..4ead3459 100644 --- a/isl_ast_build_private.h +++ b/isl_ast_build_private.h @@ -174,7 +174,7 @@ __isl_give isl_ast_build *isl_ast_build_cow( __isl_give isl_ast_build *isl_ast_build_insert_dim( __isl_take isl_ast_build *build, int pos); __isl_give isl_ast_build *isl_ast_build_scale_down( - __isl_take isl_ast_build *build, isl_int m, + __isl_take isl_ast_build *build, __isl_take isl_val *m, __isl_take isl_union_map *umap); __isl_give isl_ast_build *isl_ast_build_product( __isl_take isl_ast_build *build, __isl_take isl_space *embedding); diff --git a/isl_ast_codegen.c b/isl_ast_codegen.c index 5806c663..0a7cd0a1 100644 --- a/isl_ast_codegen.c +++ b/isl_ast_codegen.c @@ -12,6 +12,7 @@ #include <isl/set.h> #include <isl/ilp.h> #include <isl/union_map.h> +#include <isl/val_int.h> #include <isl_sort.h> #include <isl_tarjan.h> #include <isl_ast_private.h> @@ -1550,6 +1551,7 @@ static __isl_give isl_ast_graft *create_node(__isl_take isl_union_map *executed, isl_aff *aff; isl_map *map; isl_union_map *umap; + isl_val *m; space = isl_ast_build_get_space(build, 1); space = isl_space_map_from_set(space); @@ -1566,7 +1568,8 @@ static __isl_give isl_ast_graft *create_node(__isl_take isl_union_map *executed, umap = isl_union_map_from_map(map); executed = isl_union_map_apply_domain(executed, isl_union_map_copy(umap)); - build = isl_ast_build_scale_down(build, data.m, umap); + m = isl_val_int_from_isl_int(ctx, data.m); + build = isl_ast_build_scale_down(build, m, umap); } isl_aff_free(offset); |