#include "graphite.h"
#include "graphite-poly.h"
-/* Return in RES the maximum of the linear expression LE on polyhedron PS. */
-
-static void
-ppl_max_for_le (ppl_Pointset_Powerset_C_Polyhedron_t ps,
- ppl_Linear_Expression_t le, Value res)
-{
- ppl_Coefficient_t num, denom;
- Value dv, nv;
- int maximum;
-
- value_init (nv);
- value_init (dv);
- ppl_new_Coefficient (&num);
- ppl_new_Coefficient (&denom);
- ppl_Pointset_Powerset_C_Polyhedron_maximize (ps, le, num, denom, &maximum);
-
- if (maximum)
- {
- ppl_Coefficient_to_mpz_t (num, nv);
- ppl_Coefficient_to_mpz_t (denom, dv);
- value_division (res, nv, dv);
- }
-
- value_clear (nv);
- value_clear (dv);
- ppl_delete_Coefficient (num);
- ppl_delete_Coefficient (denom);
-}
-
/* Builds a linear expression, of dimension DIM, representing PDR's
memory access:
ppl_new_Linear_Expression_with_dimension (&le, dim);
ppl_set_coef (le, i, 1);
- ppl_max_for_le (PDR_ACCESSES (pdr), le, sub_size);
+ ppl_max_for_le_pointset (PDR_ACCESSES (pdr), le, sub_size);
value_multiply (size, size, sub_size);
ppl_delete_Linear_Expression (le);
}
ppl_new_Linear_Expression_with_dimension (&le, new_dim);
ppl_set_coef (le, dim_L2, 1);
ppl_set_coef (le, dim_L1, -1);
- ppl_max_for_le (p1, le, stride);
+ ppl_max_for_le_pointset (p1, le, stride);
ppl_delete_Linear_Expression (le);
}
{
int i;
poly_dr_p pdr;
- Value d1, d2, s;
+ Value d1, d2, s, n;
bool res;
gcc_assert (depth1 < depth2);
value_init (d2);
value_set_si (d2, 0);
value_init (s);
+ value_init (n);
for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb), i, pdr); i++)
{
+ value_set_si (n, PDR_NB_REFS (pdr));
+
memory_stride_in_loop (s, depth1, pdr);
+ value_multiply (s, s, n);
value_addto (d1, d1, s);
memory_stride_in_loop (s, depth2, pdr);
+ value_multiply (s, s, n);
value_addto (d2, d2, s);
}
value_clear (d1);
value_clear (d2);
value_clear (s);
+ value_clear (n);
return res;
}