Re: Replacement of isl_int by isl_val

2014-08-06 Thread Mircea Namolaru


 On 08/03/14 17:44, Mircea Namolaru wrote:
  2014-08-03  Mircea Namolarumircea.namol...@inria.fr
 
  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 ils_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
  (add_param_constraints): likewise
 This is good.  Please install if you haven't already.
 
 jeff
 

I don't have maintainer (write) permissions. 

Many thanks, Mircea


Re: Replacement of isl_int by isl_val

2014-08-05 Thread Jeff Law

On 08/03/14 17:44, Mircea Namolaru wrote:

2014-08-03  Mircea Namolarumircea.namol...@inria.fr

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 ils_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
(add_param_constraints): likewise

This is good.  Please install if you haven't already.

jeff



Re: Replacement of isl_int by isl_val

2014-08-04 Thread Tobias Grosser

LGTM.

Cheers,
Tobias


Replacement of isl_int by isl_val

2014-08-03 Thread Mircea Namolaru
Hello,

In the isl library used by Graphite, isl_val replaces isl_int (that become 
obsolete).

This patch implements the required changes in Graphite.

No regressions for c/c++/fortran on x86-64 Linux.

Mircea


Index: gcc/graphite-poly.c
===
--- gcc/graphite-poly.c (revision 213515)
+++ gcc/graphite-poly.c (working copy)
@@ -28,6 +28,14 @@
 #include isl/constraint.h
 #include isl/ilp.h
 #include isl/aff.h
+#include isl/val.h
+#if defined(__cplusplus)
+extern C {
+#endif
+#include isl/val_gmp.h
+#if defined(__cplusplus)
+}
+#endif
 #include cloog/cloog.h
 #include cloog/isl/domain.h
 #endif
@@ -1029,11 +1037,8 @@
   isl_set *transdomain;
   isl_space *dc;
   isl_aff *aff;
-  isl_int isllb, islub;
+  isl_val *isllb, *islub;
 
-  isl_int_init (isllb);
-  isl_int_init (islub);
-
   /* Map the iteration domain through the current scatter, and work
  on the resulting set.  */
   transdomain = isl_set_apply (isl_set_copy (pbb-domain),
@@ -1046,15 +1051,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);
 }
Index: gcc/graphite-interchange.c
===
--- gcc/graphite-interchange.c  (revision 213515)
+++ gcc/graphite-interchange.c  (working copy)
@@ -29,6 +29,14 @@
 #include isl/map.h
 #include isl/union_map.h
 #include isl/ilp.h
+#include isl/val.h
+#if defined(__cplusplus)
+extern C {
+#endif
+#include isl/val_gmp.h
+#if defined(__cplusplus)
+}
+#endif
 #include cloog/cloog.h
 #include cloog/isl/domain.h
 #endif
@@ -79,13 +87,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 *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 @@
   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 @@
   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 @@
   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);
 
Index: gcc/graphite-clast-to-gimple.c
===
--- gcc/graphite-clast-to-gimple.c  (revision 213515)
+++ gcc/graphite-clast-to-gimple.c  (working copy)
@@ -28,6 +28,14 @@
 #include isl/constraint.h
 #include isl/ilp.h
 #include isl/aff.h
+#include isl/val.h
+#if defined(__cplusplus)
+extern C {
+#endif
+#include isl/val_gmp.h
+#if defined(__cplusplus)
+}
+#endif
 #include cloog/cloog.h
 #include cloog/isl/domain.h
 #endif
@@ -871,18 +879,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);

Re: [GRAPHITE] Replacement of isl_int by isl_val

2014-07-07 Thread Tobias Grosser

On 07/07/2014 00:16, Mircea Namolaru wrote:

Hello,

In the isl library used by Graphite, isl_val replaced isl_val (that become 
obsolete).

This patch implements the required changes in Graphite.

No regressions for c/c++/fortran on x86-64 Linux.


Hi Mircea,

the patch looks good and the direction is correct.

One question remains: what is the minimal isl version this code works 
with? Do we need to adjust configure similar to how Rainer Orth adjusted 
it in reaction of the Roman's use of isl_ast_build?


Cheers,
Tobias


[GRAPHITE] Replacement of isl_int by isl_val

2014-07-06 Thread Mircea Namolaru
Hello, 

In the isl library used by Graphite, isl_val replaced isl_val (that become 
obsolete). 

This patch implements the required changes in Graphite. 

No regressions for c/c++/fortran on x86-64 Linux. 

Mircea 

Index: gcc/graphite-interchange.c 
=== 
--- gcc/graphite-interchange.c (revision 212311) 
+++ gcc/graphite-interchange.c (working copy) 
@@ -29,6 +29,18 @@ 
#include isl/map.h 
#include isl/union_map.h 
#include isl/ilp.h 
+#include isl/val.h 
+/* 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 isl/val_gmp.h 
+#if defined(__cplusplus) 
+} 
+#endif 
#include cloog/cloog.h 
#include cloog/isl/domain.h 
#endif 
@@ -79,13 +91,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 *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 +110,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; 
} 
@@ -126,7 +137,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; 
@@ -239,10 +250,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); 

Index: gcc/graphite-poly.c 
=== 
--- gcc/graphite-poly.c (revision 212311) 
+++ gcc/graphite-poly.c (working copy) 
@@ -28,6 +28,18 @@ 
#include isl/constraint.h 
#include isl/ilp.h 
#include isl/aff.h 
+#include isl/val.h 
+/* 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 isl/val_gmp.h 
+#if defined(__cplusplus) 
+} 
+#endif 
#include cloog/cloog.h 
#include cloog/isl/domain.h 
#endif 
@@ -1029,11 +1041,8 @@ 
isl_set *transdomain; 
isl_space *dc; 
isl_aff *aff; 
- isl_int isllb, islub; 
+ isl_val *isllb, *islub; 

- isl_int_init (isllb); 
- isl_int_init (islub); 
- 
/* Map the iteration domain through the current scatter, and work 
on the resulting set. */ 
transdomain = isl_set_apply (isl_set_copy (pbb-domain), 
@@ -1046,15 +1055,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); 
} 
Index: gcc/graphite-optimize-isl.c 
=== 
--- gcc/graphite-optimize-isl.c (revision 212311) 
+++ gcc/graphite-optimize-isl.c (working copy) 
@@ -273,7 +273,7 @@ 
isl_aff *Aff; 
int PointDimension; /* ip */ 
int TileDimension; /* it */ 
- isl_int VectorWidthMP; 
+ isl_val *VectorWidthMP; 
int i; 

/* assert (0 = DimToVectorize  DimToVectorize  ScheduleDimensions);*/ 
@@ -304,10 +304,9 @@ 
Aff = isl_aff_zero_on_domain (LocalSpaceRange); 
Aff = isl_aff_set_constant_si (Aff, VectorWidth); 
Aff = 

Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-10 Thread Richard Biener
On Sun, Feb 9, 2014 at 9:19 PM, Tobias Grosser tob...@grosser.es wrote:
 On 02/09/2014 04:47 PM, Mircea Namolaru wrote:

Patch for replacement of the isl_int (obsolete) by isl_val.

No regressions for c/c++/fortran on x86-64 Linux.


 Hi Mircae,

 thanks a lot for looking into this.

 Just for people not aware of the idea of this patch. Cloog recently upgraded
 to the latest version of isl (isl-0.12.2) and with this
 release isl deprecated the isl_int interface in favor of the isl_val
 interface.

It seems that neither ISL 0.10 nor 0.11 or 0.11.1 has isl_val though, so
this patch would need to adjust the ISL version check in the toplevel
configure.

Which also makes this patch not suitable for this stage but it has to
wait for stage1.

Btw, Mircea - do you have a copyright assignment on file with the FSF
covering work on GCC?

Thanks,
Richard.

 Both are interfaces for arbitrary precision numbers. However,
 the old isl_int interface was mostly a proxy to gmp, whereas the new
 interface hides the implementation and will later allow optimizations for
 the common use case of small integers.

 We really want to get to the latest version of isl as the newer releases
 (and development branches) provide very useful features
 including the possibility to bound the amount of computation before
 we fall back to a more conservative solution. This feature should help us to
 fix some of the newer bugs.

 I have doubts if we can still push this patch to graphite at this stage of
 trunk, but at the very least we should have it ready for stage-1.

 Regarding your patch. It looks generally very nice. Just a couple of smaller
 comments:

 - Can you adapt configure to only allow isl/cloog versions that actually
 support the new interface?

 - Can you updated the documentation that lists the supported isl/cloog
   versions.

 Besides some inline comments:


 Index: gcc/graphite-optimize-isl.c
 ===
 --- gcc/graphite-optimize-isl.c (revision 207298)
 +++ gcc/graphite-optimize-isl.c (working copy)
 @@ -260,6 +260,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.  */
 +


 This change looks unrelated. Can you submit a separate fix?

   static isl_map *
   getPrevectorMap (isl_ctx *ctx, int DimToVectorize,
  int ScheduleDimensions,
 @@ -273,8 +274,9 @@
 isl_aff *Aff;
 int PointDimension; /* ip */
 int TileDimension;  /* it */
 -  isl_int VectorWidthMP;
 +  isl_val *VectorWidthMP;
 int i;
 +  isl_ctx *ct;


 We normally use 'ctx' as abbreviation for context.


 /* assert (0 = DimToVectorize  DimToVectorize 
 ScheduleDimensions);*/

 @@ -304,10 +306,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);

 Index: gcc/graphite-sese-to-poly.c
 ===
 --- gcc/graphite-sese-to-poly.c (revision 207298)
 +++ gcc/graphite-sese-to-poly.c (working copy)
 @@ -26,8 +26,15 @@
   #include isl/union_map.h
   #include isl/constraint.h
   #include isl/aff.h
 +#include isl/val.h
 +#if defined(__cplusplus)
 +extern C {
 +#endif
 +#include isl/val_gmp.h
 +#if defined(__cplusplus)
 +}


 We should put a comment why this is extern C is necessary. Or better, we
 should check if Sven can get release us an isl 0.12.3 that includes the
 extern C in the relevant header

 +#endif
   #include cloog/cloog.h
 -#include cloog/cloog.h


 This seems to be an unrelated fix. Can you submit a separate patch?

   #include cloog/isl/domain.h
   #endif

 @@ -67,7 +74,6 @@
   #include graphite-poly.h
   #include graphite-sese-to-poly.h

 -


 This change looks unrelated. Can you submit a separate fix?

   /* Assigns to RES the value of the INTEGER_CST T.  */

   static inline void
 @@ -481,13 +487,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);
 @@ -501,12 +505,10 @@
   isl_constraint *c = 

Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-10 Thread Tobias Grosser

On 02/10/2014 04:12 AM, Richard Biener wrote:

On Sun, Feb 9, 2014 at 9:19 PM, Tobias Grosser tob...@grosser.es wrote:

On 02/09/2014 04:47 PM, Mircea Namolaru wrote:


Patch for replacement of the isl_int (obsolete) by isl_val.

No regressions for c/c++/fortran on x86-64 Linux.



Hi Mircae,

thanks a lot for looking into this.

Just for people not aware of the idea of this patch. Cloog recently upgraded
to the latest version of isl (isl-0.12.2) and with this
release isl deprecated the isl_int interface in favor of the isl_val
interface.


It seems that neither ISL 0.10 nor 0.11 or 0.11.1 has isl_val though, so
this patch would need to adjust the ISL version check in the toplevel
configure.

Which also makes this patch not suitable for this stage but it has to
wait for stage1.


That's what I thought. Thanks for clarifying.


Btw, Mircea - do you have a copyright assignment on file with the FSF
covering work on GCC?


Good point. I will be verifying this with Mircae.

Cheers,
Tobias



Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-10 Thread Albert Cohen
Le 10/02/2014 10:12, Richard Biener a écrit :
 Btw, Mircea - do you have a copyright assignment on file with the FSF
 covering work on GCC?

Yes, Mircea is covered by an INRIA-wide copyright assignment, signed on
May 15, 2007 by T. Brown.

Thanks,
Albert


Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-10 Thread Albert Cohen
Le 10/02/2014 16:48, Albert Cohen a écrit :
 Le 10/02/2014 10:12, Richard Biener a écrit :
 Btw, Mircea - do you have a copyright assignment on file with the FSF
 covering work on GCC?
 
 Yes, Mircea is covered by an INRIA-wide copyright assignment, signed on
 May 15, 2007 by T. Brown.

After double-checking, I have to say that the assignment is *not*
INRIA-wide, but it covers the research team Mircea is working in.

Albert




Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-09 Thread Tobias Grosser

On 02/09/2014 04:47 PM, Mircea Namolaru wrote:

   Patch for replacement of the isl_int (obsolete) by isl_val.

   No regressions for c/c++/fortran on x86-64 Linux.


Hi Mircae,

thanks a lot for looking into this.

Just for people not aware of the idea of this patch. Cloog recently 
upgraded to the latest version of isl (isl-0.12.2) and with this

release isl deprecated the isl_int interface in favor of the isl_val
interface. Both are interfaces for arbitrary precision numbers. However,
the old isl_int interface was mostly a proxy to gmp, whereas the new 
interface hides the implementation and will later allow optimizations 
for the common use case of small integers.


We really want to get to the latest version of isl as the newer releases 
(and development branches) provide very useful features

including the possibility to bound the amount of computation before
we fall back to a more conservative solution. This feature should help 
us to fix some of the newer bugs.


I have doubts if we can still push this patch to graphite at this stage 
of trunk, but at the very least we should have it ready for stage-1.


Regarding your patch. It looks generally very nice. Just a couple of 
smaller comments:


- Can you adapt configure to only allow isl/cloog versions that actually 
support the new interface?


- Can you updated the documentation that lists the supported isl/cloog
  versions.

Besides some inline comments:



Index: gcc/graphite-optimize-isl.c
===
--- gcc/graphite-optimize-isl.c (revision 207298)
+++ gcc/graphite-optimize-isl.c (working copy)
@@ -260,6 +260,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.  */
+


This change looks unrelated. Can you submit a separate fix?


  static isl_map *
  getPrevectorMap (isl_ctx *ctx, int DimToVectorize,
 int ScheduleDimensions,
@@ -273,8 +274,9 @@
isl_aff *Aff;
int PointDimension; /* ip */
int TileDimension;  /* it */
-  isl_int VectorWidthMP;
+  isl_val *VectorWidthMP;
int i;
+  isl_ctx *ct;


We normally use 'ctx' as abbreviation for context.



/* assert (0 = DimToVectorize  DimToVectorize  ScheduleDimensions);*/

@@ -304,10 +306,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);

Index: gcc/graphite-sese-to-poly.c
===
--- gcc/graphite-sese-to-poly.c (revision 207298)
+++ gcc/graphite-sese-to-poly.c (working copy)
@@ -26,8 +26,15 @@
  #include isl/union_map.h
  #include isl/constraint.h
  #include isl/aff.h
+#include isl/val.h
+#if defined(__cplusplus)
+extern C {
+#endif
+#include isl/val_gmp.h
+#if defined(__cplusplus)
+}


We should put a comment why this is extern C is necessary. Or better, 
we should check if Sven can get release us an isl 0.12.3 that includes 
the extern C in the relevant header



+#endif
  #include cloog/cloog.h
-#include cloog/cloog.h


This seems to be an unrelated fix. Can you submit a separate patch?


  #include cloog/isl/domain.h
  #endif

@@ -67,7 +74,6 @@
  #include graphite-poly.h
  #include graphite-sese-to-poly.h

-


This change looks unrelated. Can you submit a separate fix?


  /* Assigns to RES the value of the INTEGER_CST T.  */

  static inline void
@@ -481,13 +487,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);
@@ -501,12 +505,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 = 

Re: {GRAPHITE] Replacement of isl_int by isl_val

2014-02-09 Thread Tobias Burnus

Tobias Grosser wrote:

On 02/09/2014 04:47 PM, Mircea Namolaru wrote:

   Patch for replacement of the isl_int (obsolete) by isl_val.


Just for people not aware of the idea of this patch. Cloog recently
upgraded to the latest version of isl (isl-0.12.2) and with this
release isl deprecated the isl_int interface in favor of the isl_val
interface.


Is isl_int already in ISL 0.10 and/or in ISL 0.11.1? 0.10 is still 
supported by configure and 0.11.1 is *the* version listed in 
prerequisites. Cf. http://gcc.gnu.org/ml/gcc/2014-01/msg00288.html


If it is only in 0.11.1, I think configure can be simply updated without 
further ado.


Tobias

PS: I think we should apply the following patch:

--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -386 +386 @@ installed but it is not in your default library search 
path, the

-@item ISL Library version 0.11.1
+@item ISL Library version 0.11.1 (or later)