From b56d2b5a27544cec303857fb62ba89b4b9687951 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 28 May 2013 14:47:36 +0200 Subject: [PATCH] isl_ast_build_scale_down: use isl_val Signed-off-by: Sven Verdoolaege --- isl_ast_build.c | 18 ++++++++---------- isl_ast_build_private.h | 2 +- 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 7bf8610..520247f 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 52133ab..4ead345 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 5806c66..0a7cd0a 100644 --- a/isl_ast_codegen.c +++ b/isl_ast_codegen.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -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); -- 2.7.4