5484b01455
(2) Add option PURE (default OFF) to build with all provided libraries and skip any external dependencies, to make complete repeatable build.
457 lines
14 KiB
Text
457 lines
14 KiB
Text
diff -ruN src/gcc.orig/gcc/graphite-clast-to-gimple.c src/gcc/gcc/graphite-clast-to-gimple.c
|
|
--- src/gcc.orig/gcc/graphite-clast-to-gimple.c 2014-07-08 14:47:19.000000000 +0400
|
|
+++ src/gcc/gcc/graphite-clast-to-gimple.c 2014-07-08 14:49:57.000000000 +0400
|
|
@@ -28,6 +28,8 @@
|
|
#include <isl/constraint.h>
|
|
#include <isl/ilp.h>
|
|
#include <isl/aff.h>
|
|
+#include <isl/val.h>
|
|
+#include <isl/val_gmp.h>
|
|
#include <cloog/cloog.h>
|
|
#include <cloog/isl/domain.h>
|
|
#endif
|
|
@@ -851,18 +853,18 @@
|
|
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);
|
|
}
|
|
|
|
@@ -881,8 +883,7 @@
|
|
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));
|
|
@@ -891,17 +892,12 @@
|
|
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 -ruN src/gcc.orig/gcc/graphite-interchange.c src/gcc/gcc/graphite-interchange.c
|
|
--- src/gcc.orig/gcc/graphite-interchange.c 2014-07-08 14:47:20.000000000 +0400
|
|
+++ src/gcc/gcc/graphite-interchange.c 2014-07-08 14:49:57.000000000 +0400
|
|
@@ -29,6 +29,8 @@
|
|
#include <isl/map.h>
|
|
#include <isl/union_map.h>
|
|
#include <isl/ilp.h>
|
|
+#include <isl/val.h>
|
|
+#include <isl/val_gmp.h>
|
|
#include <cloog/cloog.h>
|
|
#include <cloog/isl/domain.h>
|
|
#endif
|
|
@@ -71,13 +73,13 @@
|
|
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 *ct;
|
|
+
|
|
+ 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);
|
|
+ ct = isl_local_space_get_ctx (ls);
|
|
+ size = isl_val_int_from_ui (ct, 1);
|
|
|
|
nsubs = isl_set_dim (pdr->extent, isl_dim_set);
|
|
/* -1 for the already included L dimension. */
|
|
@@ -90,18 +92,17 @@
|
|
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;
|
|
}
|
|
@@ -118,7 +119,7 @@
|
|
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;
|
|
@@ -231,10 +232,9 @@
|
|
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 -ruN src/gcc.orig/gcc/graphite-optimize-isl.c src/gcc/gcc/graphite-optimize-isl.c
|
|
--- src/gcc.orig/gcc/graphite-optimize-isl.c 2014-07-08 14:47:20.000000000 +0400
|
|
+++ src/gcc/gcc/graphite-optimize-isl.c 2014-07-08 14:49:57.000000000 +0400
|
|
@@ -252,6 +252,7 @@
|
|
DimToVectorize can be devided by VectorWidth. The default VectorWidth is
|
|
currently constant and not yet target specific. This function does not reason
|
|
about parallelism. */
|
|
+
|
|
static isl_map *
|
|
getPrevectorMap(isl_ctx *ctx, int DimToVectorize,
|
|
int ScheduleDimensions,
|
|
@@ -265,8 +266,9 @@
|
|
isl_aff *Aff;
|
|
int PointDimension; /* ip */
|
|
int TileDimension; /* it */
|
|
- isl_int VectorWidthMP;
|
|
+ isl_val *VectorWidthMP;
|
|
int i;
|
|
+ isl_ctx *ct;
|
|
|
|
/* assert (0 <= DimToVectorize && DimToVectorize < ScheduleDimensions);*/
|
|
|
|
@@ -296,10 +298,10 @@
|
|
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);
|
|
+
|
|
+ ct = isl_aff_get_ctx(Aff);
|
|
+ VectorWidthMP = isl_val_int_from_si(ct, 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);
|
|
|
|
@@ -365,7 +367,7 @@
|
|
{
|
|
for (i = ScheduleDimensions - 1 ; i >= 0 ; i--)
|
|
{
|
|
- if (isl_band_member_is_zero_distance(Band, i))
|
|
+ if (isl_band_member_is_coincident(Band, i))
|
|
{
|
|
isl_map *TileMap;
|
|
isl_union_map *TileUMap;
|
|
@@ -436,6 +438,7 @@
|
|
{
|
|
|
|
isl_schedule *schedule;
|
|
+ isl_schedule_constraints *schedule_constraints;
|
|
isl_union_set *domain;
|
|
isl_union_map *validity, *proximity, *dependences;
|
|
isl_union_map *schedule_map;
|
|
@@ -454,7 +457,14 @@
|
|
isl_options_set_schedule_maximize_band_depth(scop->ctx, 1);
|
|
isl_options_set_schedule_fuse(scop->ctx, ISL_SCHEDULE_FUSE_MIN);
|
|
isl_options_set_on_error(scop->ctx, ISL_ON_ERROR_CONTINUE);
|
|
- schedule = isl_union_set_compute_schedule (domain, validity, proximity);
|
|
+ schedule_constraints = isl_schedule_constraints_on_domain(domain);
|
|
+ schedule_constraints =
|
|
+ isl_schedule_constraints_set_proximity(schedule_constraints, proximity);
|
|
+ schedule_constraints = isl_schedule_constraints_set_validity(
|
|
+ schedule_constraints, isl_union_map_copy(validity));
|
|
+ schedule_constraints =
|
|
+ isl_schedule_constraints_set_coincidence(schedule_constraints, validity);
|
|
+ schedule = isl_schedule_constraints_compute_schedule(schedule_constraints);
|
|
isl_options_set_on_error(scop->ctx, ISL_ON_ERROR_ABORT);
|
|
|
|
if (!schedule)
|
|
diff -ruN src/gcc.orig/gcc/graphite-poly.c src/gcc/gcc/graphite-poly.c
|
|
--- src/gcc.orig/gcc/graphite-poly.c 2014-07-08 14:47:21.000000000 +0400
|
|
+++ src/gcc/gcc/graphite-poly.c 2014-07-08 14:49:57.000000000 +0400
|
|
@@ -28,6 +28,8 @@
|
|
#include <isl/constraint.h>
|
|
#include <isl/ilp.h>
|
|
#include <isl/aff.h>
|
|
+#include <isl/val.h>
|
|
+#include <isl/val_gmp.h>
|
|
#include <cloog/cloog.h>
|
|
#include <cloog/isl/domain.h>
|
|
#endif
|
|
@@ -1021,10 +1023,7 @@
|
|
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. */
|
|
@@ -1038,15 +1037,14 @@
|
|
|
|
/* 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 -ruN src/gcc.orig/gcc/graphite-sese-to-poly.c src/gcc/gcc/graphite-sese-to-poly.c
|
|
--- src/gcc.orig/gcc/graphite-sese-to-poly.c 2014-07-08 14:47:19.000000000 +0400
|
|
+++ src/gcc/gcc/graphite-sese-to-poly.c 2014-07-08 14:49:57.000000000 +0400
|
|
@@ -26,7 +26,8 @@
|
|
#include <isl/union_map.h>
|
|
#include <isl/constraint.h>
|
|
#include <isl/aff.h>
|
|
-#include <cloog/cloog.h>
|
|
+#include <isl/val.h>
|
|
+#include <isl/val_gmp.h>
|
|
#include <cloog/cloog.h>
|
|
#include <cloog/isl/domain.h>
|
|
#endif
|
|
@@ -46,7 +47,6 @@
|
|
#include "graphite-poly.h"
|
|
#include "graphite-sese-to-poly.h"
|
|
|
|
-
|
|
/* Assigns to RES the value of the INTEGER_CST T. */
|
|
|
|
static inline void
|
|
@@ -461,13 +461,11 @@
|
|
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);
|
|
@@ -481,12 +479,10 @@
|
|
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);
|
|
}
|
|
@@ -500,8 +496,6 @@
|
|
}
|
|
}
|
|
|
|
- isl_int_clear (val);
|
|
-
|
|
pbb->transformed = isl_map_copy (pbb->schedule);
|
|
}
|
|
|
|
@@ -681,12 +675,12 @@
|
|
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);
|
|
}
|
|
@@ -709,18 +703,16 @@
|
|
|
|
/* 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;
|
|
}
|
|
@@ -976,11 +968,10 @@
|
|
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);
|
|
@@ -998,8 +989,8 @@
|
|
(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);
|
|
}
|
|
|
|
@@ -1053,9 +1044,9 @@
|
|
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
|
|
@@ -1078,7 +1069,6 @@
|
|
|
|
isl_set_free (outer);
|
|
isl_space_free (space);
|
|
- isl_int_clear (v);
|
|
mpz_clear (g);
|
|
}
|
|
|
|
@@ -1342,17 +1332,15 @@
|
|
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);
|
|
@@ -1363,17 +1351,15 @@
|
|
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);
|