summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2013-05-28 14:47:36 +0200
committerSven Verdoolaege <skimo@kotnet.org>2013-05-28 20:42:49 +0200
commitb56d2b5a27544cec303857fb62ba89b4b9687951 (patch)
tree9ec08ecb179d30d57df680a23b0f24806ab38fde
parenta544f6dfa70071d15743ec6b20ce87755f8b0d90 (diff)
downloadisl-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.c18
-rw-r--r--isl_ast_build_private.h2
-rw-r--r--isl_ast_codegen.c5
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);