From b47595f765ce51aaa9154e65cd5df6369184a79f Mon Sep 17 00:00:00 2001 From: Mircea Namolaru Date: Mon, 11 Aug 2014 17:05:48 +0200 Subject: [PATCH] Replacement of isl_int by isl_val From-SVN: r213816 --- gcc/ChangeLog | 21 +++++++++++ gcc/graphite-clast-to-gimple.c | 42 +++++++++++----------- gcc/graphite-interchange.c | 38 +++++++++++--------- gcc/graphite-optimize-isl.c | 9 +++-- gcc/graphite-poly.c | 26 ++++++++------ gcc/graphite-sese-to-poly.c | 80 ++++++++++++++++++++---------------------- 6 files changed, 123 insertions(+), 93 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e24e03a..af940e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,24 @@ +2014-08-11 Mircea Namolaru + + Replacement of isl_int by isl_val + * graphite-clast-to-gimple.c: include isl/val.h, isl/val_gmp.h + (compute_bounds_for_param): use isl_val instead of isl_int + (compute_bounds_for_loop): likewise + * graphite-interchange.c: include isl/val.h, isl/val_gmp.h + (build_linearized_memory_access): use isl_val instead of isl_int + (pdr_stride_in_loop): likewise + * graphite-optimize-isl.c: + (getPrevectorMap): use isl_val instead of isl_int + * graphite-poly.c: + (pbb_number_of_iterations_at_time): use isl_val instead of isl_int + graphite-sese-to-poly.c: include isl/val.h, isl/val_gmp.h + (extern the_isl_ctx): declare + (build_pbb_scattering_polyhedrons): use isl_val instead of isl_int + (extract_affine_gmp): likewise + (wrap): likewise + (build_loop_iteration_domains): likewise + (add_param_constraints): likewise + 2014-08-11 Richard Biener PR tree-optimization/62075 diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 296b893..0b0bf52 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -28,6 +28,14 @@ along with GCC; see the file COPYING3. If not see #include #include #include +#include +#if defined(__cplusplus) +extern "C" { +#endif +#include +#if defined(__cplusplus) +} +#endif #include #include #endif @@ -871,18 +879,18 @@ graphite_create_new_guard (edge entry_edge, struct clast_guard *stmt, static void compute_bounds_for_param (scop_p scop, int param, mpz_t low, mpz_t up) { - isl_int v; + isl_val *v; isl_aff *aff = isl_aff_zero_on_domain (isl_local_space_from_space (isl_set_get_space (scop->context))); aff = isl_aff_add_coefficient_si (aff, isl_dim_param, param, 1); - isl_int_init (v); - isl_set_min (scop->context, aff, &v); - isl_int_get_gmp (v, low); - isl_set_max (scop->context, aff, &v); - isl_int_get_gmp (v, up); - isl_int_clear (v); + v = isl_set_min_val (scop->context, aff); + isl_val_get_num_gmp (v, low); + isl_val_free (v); + v = isl_set_max_val (scop->context, aff); + isl_val_get_num_gmp (v, up); + isl_val_free (v); isl_aff_free (aff); } @@ -901,8 +909,7 @@ compute_bounds_for_loop (struct clast_for *loop, mpz_t low, mpz_t up) isl_set *domain; isl_aff *dimension; isl_local_space *local_space; - isl_int isl_value; - enum isl_lp_result lp_result; + isl_val *isl_value; domain = isl_set_copy (isl_set_from_cloog_domain (loop->domain)); local_space = isl_local_space_from_space (isl_set_get_space (domain)); @@ -911,17 +918,12 @@ compute_bounds_for_loop (struct clast_for *loop, mpz_t low, mpz_t up) isl_set_dim (domain, isl_dim_set) - 1, 1); - isl_int_init (isl_value); - - lp_result = isl_set_min (domain, dimension, &isl_value); - assert (lp_result == isl_lp_ok); - isl_int_get_gmp (isl_value, low); - - lp_result = isl_set_max (domain, dimension, &isl_value); - assert (lp_result == isl_lp_ok); - isl_int_get_gmp (isl_value, up); - - isl_int_clear (isl_value); + isl_value = isl_set_min_val (domain, dimension); + isl_val_get_num_gmp (isl_value, low); + isl_val_free (isl_value); + isl_value = isl_set_max_val (domain, dimension); + isl_val_get_num_gmp (isl_value, up); + isl_val_free (isl_value); isl_set_free (domain); isl_aff_free (dimension); } diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index 55e3fab..45db539 100644 --- a/gcc/graphite-interchange.c +++ b/gcc/graphite-interchange.c @@ -29,6 +29,14 @@ along with GCC; see the file COPYING3. If not see #include #include #include +#include +#if defined(__cplusplus) +extern "C" { +#endif +#include +#if defined(__cplusplus) +} +#endif #include #include #endif @@ -79,13 +87,13 @@ build_linearized_memory_access (isl_map *map, poly_dr_p pdr) isl_local_space *ls = isl_local_space_from_space (isl_map_get_space (map)); unsigned offset, nsubs; int i; - isl_int size, subsize; + isl_ctx *ctx; + + isl_val *size, *subsize, *size1; res = isl_equality_alloc (ls); - isl_int_init (size); - isl_int_set_ui (size, 1); - isl_int_init (subsize); - isl_int_set_ui (subsize, 1); + ctx = isl_local_space_get_ctx (ls); + size = isl_val_int_from_ui (ctx, 1); nsubs = isl_set_dim (pdr->extent, isl_dim_set); /* -1 for the already included L dimension. */ @@ -98,18 +106,17 @@ build_linearized_memory_access (isl_map *map, poly_dr_p pdr) isl_space *dc; isl_aff *aff; - res = isl_constraint_set_coefficient (res, isl_dim_out, offset + i, size); - + size1 = isl_val_copy (size); + res = isl_constraint_set_coefficient_val (res, isl_dim_out, offset + i, size); dc = isl_set_get_space (pdr->extent); aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc)); aff = isl_aff_set_coefficient_si (aff, isl_dim_in, i, 1); - isl_set_max (pdr->extent, aff, &subsize); + subsize = isl_set_max_val (pdr->extent, aff); isl_aff_free (aff); - isl_int_mul (size, size, subsize); + size = isl_val_mul (size1, subsize); } - isl_int_clear (subsize); - isl_int_clear (size); + isl_val_free (size); return res; } @@ -126,7 +133,7 @@ pdr_stride_in_loop (mpz_t stride, graphite_dim_t depth, poly_dr_p pdr) isl_aff *aff; isl_space *dc; isl_constraint *lma, *c; - isl_int islstride; + isl_val *islstride; graphite_dim_t time_depth; unsigned offset, nt; unsigned i; @@ -239,10 +246,9 @@ pdr_stride_in_loop (mpz_t stride, graphite_dim_t depth, poly_dr_p pdr) aff = isl_aff_zero_on_domain (isl_local_space_from_space (dc)); aff = isl_aff_set_coefficient_si (aff, isl_dim_in, offset - 1, -1); aff = isl_aff_set_coefficient_si (aff, isl_dim_in, offset + offset - 1, 1); - isl_int_init (islstride); - isl_set_max (set, aff, &islstride); - isl_int_get_gmp (islstride, stride); - isl_int_clear (islstride); + islstride = isl_set_max_val (set, aff); + isl_val_get_num_gmp (islstride, stride); + isl_val_free (islstride); isl_aff_free (aff); isl_set_free (set); diff --git a/gcc/graphite-optimize-isl.c b/gcc/graphite-optimize-isl.c index 7f61ff0..31f3018 100644 --- a/gcc/graphite-optimize-isl.c +++ b/gcc/graphite-optimize-isl.c @@ -244,7 +244,7 @@ getPrevectorMap (isl_ctx *ctx, int DimToVectorize, isl_aff *Aff; int PointDimension; /* ip */ int TileDimension; /* it */ - isl_int VectorWidthMP; + isl_val *VectorWidthMP; int i; /* assert (0 <= DimToVectorize && DimToVectorize < ScheduleDimensions);*/ @@ -275,10 +275,9 @@ getPrevectorMap (isl_ctx *ctx, int DimToVectorize, Aff = isl_aff_zero_on_domain (LocalSpaceRange); Aff = isl_aff_set_constant_si (Aff, VectorWidth); Aff = isl_aff_set_coefficient_si (Aff, isl_dim_in, TileDimension, 1); - isl_int_init (VectorWidthMP); - isl_int_set_si (VectorWidthMP, VectorWidth); - Aff = isl_aff_mod (Aff, VectorWidthMP); - isl_int_clear (VectorWidthMP); + + VectorWidthMP = isl_val_int_from_si (ctx, VectorWidth); + Aff = isl_aff_mod_val (Aff, VectorWidthMP); Modulo = isl_pw_aff_zero_set (isl_pw_aff_from_aff (Aff)); TilingMap = isl_map_intersect_range (TilingMap, Modulo); diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index 4ca62f9..28ab4df 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -28,6 +28,14 @@ along with GCC; see the file COPYING3. If not see #include #include #include +#include +#if defined(__cplusplus) +extern "C" { +#endif +#include +#if defined(__cplusplus) +} +#endif #include #include #endif @@ -1029,10 +1037,7 @@ pbb_number_of_iterations_at_time (poly_bb_p pbb, isl_set *transdomain; isl_space *dc; isl_aff *aff; - isl_int isllb, islub; - - isl_int_init (isllb); - isl_int_init (islub); + isl_val *isllb, *islub; /* Map the iteration domain through the current scatter, and work on the resulting set. */ @@ -1046,15 +1051,14 @@ pbb_number_of_iterations_at_time (poly_bb_p pbb, /* And find the min/max for that function. */ /* XXX isl check results? */ - isl_set_min (transdomain, aff, &isllb); - isl_set_max (transdomain, aff, &islub); + isllb = isl_set_min_val (transdomain, aff); + islub = isl_set_max_val (transdomain, aff); - isl_int_sub (islub, islub, isllb); - isl_int_add_ui (islub, islub, 1); - isl_int_get_gmp (islub, res); + islub = isl_val_sub (islub, isllb); + islub = isl_val_add_ui (islub, 1); + isl_val_get_num_gmp (islub, res); - isl_int_clear (isllb); - isl_int_clear (islub); + isl_val_free (islub); isl_aff_free (aff); isl_set_free (transdomain); } diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 3254df9..c36420a 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -26,6 +26,18 @@ along with GCC; see the file COPYING3. If not see #include #include #include +#include +/* For C++ linkage of C functions. + Missing from isl/val_gmp.h in isl 0.12 versions. + Appearing in isl/val_gmp.h in isl 0.13. + To be removed when passing to isl 0.13. */ +#if defined(__cplusplus) +extern "C" { +#endif +#include +#if defined(__cplusplus) +} +#endif #include #include #include @@ -480,13 +492,11 @@ build_pbb_scattering_polyhedrons (isl_aff *static_sched, int i; int nb_iterators = pbb_dim_iter_domain (pbb); int used_scattering_dimensions = nb_iterators * 2 + 1; - isl_int val; + isl_val *val; isl_space *dc, *dm; gcc_assert (scattering_dimensions >= used_scattering_dimensions); - isl_int_init (val); - dc = isl_set_get_space (pbb->domain); dm = isl_space_add_dims (isl_space_from_domain (dc), isl_dim_out, scattering_dimensions); @@ -500,12 +510,10 @@ build_pbb_scattering_polyhedrons (isl_aff *static_sched, isl_constraint *c = isl_equality_alloc (isl_local_space_from_space (isl_map_get_space (pbb->schedule))); - if (0 != isl_aff_get_coefficient (static_sched, isl_dim_in, - i / 2, &val)) - gcc_unreachable (); + val = isl_aff_get_coefficient_val (static_sched, isl_dim_in, i / 2); - isl_int_neg (val, val); - c = isl_constraint_set_constant (c, val); + val = isl_val_neg (val); + c = isl_constraint_set_constant_val (c, val); c = isl_constraint_set_coefficient_si (c, isl_dim_out, i, 1); pbb->schedule = isl_map_add_constraint (pbb->schedule, c); } @@ -519,8 +527,6 @@ build_pbb_scattering_polyhedrons (isl_aff *static_sched, } } - isl_int_clear (val); - pbb->transformed = isl_map_copy (pbb->schedule); } @@ -699,12 +705,12 @@ extract_affine_gmp (mpz_t g, __isl_take isl_space *space) isl_local_space *ls = isl_local_space_from_space (isl_space_copy (space)); isl_aff *aff = isl_aff_zero_on_domain (ls); isl_set *dom = isl_set_universe (space); - isl_int v; + isl_val *v; + isl_ctx *ct; - isl_int_init (v); - isl_int_set_gmp (v, g); - aff = isl_aff_add_constant (aff, v); - isl_int_clear (v); + ct = isl_aff_get_ctx (aff); + v = isl_val_int_from_gmp (ct, g); + aff = isl_aff_add_constant_val (aff, v); return isl_pw_aff_alloc (dom, aff); } @@ -727,18 +733,16 @@ extract_affine_int (tree e, __isl_take isl_space *space) /* Compute pwaff mod 2^width. */ +extern isl_ctx *the_isl_ctx; + static isl_pw_aff * wrap (isl_pw_aff *pwaff, unsigned width) { - isl_int mod; - - isl_int_init (mod); - isl_int_set_si (mod, 1); - isl_int_mul_2exp (mod, mod, width); - - pwaff = isl_pw_aff_mod (pwaff, mod); + isl_val *mod; - isl_int_clear (mod); + mod = isl_val_int_from_ui(the_isl_ctx, width); + mod = isl_val_2exp (mod); + pwaff = isl_pw_aff_mod_val (pwaff, mod); return pwaff; } @@ -994,11 +998,10 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop, isl_space *space; isl_constraint *c; int pos = isl_set_dim (outer, isl_dim_set); - isl_int v; + isl_val *v; mpz_t g; mpz_init (g); - isl_int_init (v); inner = isl_set_add_dims (inner, isl_dim_set, 1); space = isl_set_get_space (inner); @@ -1016,8 +1019,8 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop, (isl_local_space_from_space (isl_space_copy (space))); c = isl_constraint_set_coefficient_si (c, isl_dim_set, pos, -1); tree_int_to_gmp (nb_iters, g); - isl_int_set_gmp (v, g); - c = isl_constraint_set_constant (c, v); + v = isl_val_int_from_gmp (the_isl_ctx, g); + c = isl_constraint_set_constant_val (c, v); inner = isl_set_add_constraint (inner, c); } @@ -1071,9 +1074,9 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop, c = isl_inequality_alloc (isl_local_space_from_space (isl_space_copy (space))); c = isl_constraint_set_coefficient_si (c, isl_dim_set, pos, -1); - isl_int_set_gmp (v, g); + v = isl_val_int_from_gmp (the_isl_ctx, g); mpz_clear (g); - c = isl_constraint_set_constant (c, v); + c = isl_constraint_set_constant_val (c, v); inner = isl_set_add_constraint (inner, c); } else @@ -1096,7 +1099,6 @@ build_loop_iteration_domains (scop_p scop, struct loop *loop, isl_set_free (outer); isl_space_free (space); - isl_int_clear (v); mpz_clear (g); } @@ -1330,17 +1332,15 @@ add_param_constraints (scop_p scop, graphite_dim_t p) isl_space *space = isl_set_get_space (scop->context); isl_constraint *c; mpz_t g; - isl_int v; + isl_val *v; c = isl_inequality_alloc (isl_local_space_from_space (space)); mpz_init (g); - isl_int_init (v); tree_int_to_gmp (lb, g); - isl_int_set_gmp (v, g); - isl_int_neg (v, v); + v = isl_val_int_from_gmp (the_isl_ctx, g); + v = isl_val_neg (v); mpz_clear (g); - c = isl_constraint_set_constant (c, v); - isl_int_clear (v); + c = isl_constraint_set_constant_val (c, v); c = isl_constraint_set_coefficient_si (c, isl_dim_param, p, 1); scop->context = isl_set_add_constraint (scop->context, c); @@ -1351,17 +1351,15 @@ add_param_constraints (scop_p scop, graphite_dim_t p) isl_space *space = isl_set_get_space (scop->context); isl_constraint *c; mpz_t g; - isl_int v; + isl_val *v; c = isl_inequality_alloc (isl_local_space_from_space (space)); mpz_init (g); - isl_int_init (v); tree_int_to_gmp (ub, g); - isl_int_set_gmp (v, g); + v = isl_val_int_from_gmp (the_isl_ctx, g); mpz_clear (g); - c = isl_constraint_set_constant (c, v); - isl_int_clear (v); + c = isl_constraint_set_constant_val (c, v); c = isl_constraint_set_coefficient_si (c, isl_dim_param, p, -1); scop->context = isl_set_add_constraint (scop->context, c); -- 2.7.4