isl_ast_build_scale_down: use isl_val
authorSven Verdoolaege <skimo@kotnet.org>
Tue, 28 May 2013 12:47:36 +0000 (14:47 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Tue, 28 May 2013 18:42:49 +0000 (20:42 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
isl_ast_build.c
isl_ast_build_private.h
isl_ast_codegen.c

index 7bf8610..520247f 100644 (file)
@@ -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);
 }
index 52133ab..4ead345 100644 (file)
@@ -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);
index 5806c66..0a7cd0a 100644 (file)
@@ -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);