diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2011-01-25 06:45:54 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2011-01-25 06:45:54 +0000 |
commit | 1d16e689830329236ab6db700c9c9528aa7af93e (patch) | |
tree | 5ce48fdbb4456d22a075cc1e7ccfc54d01248063 /gcc/graphite-dependences.c | |
parent | db4b13f5a855b6b2a733e83d68a1ad0d627adf2e (diff) |
Use PIP to determine the integer feasibility of a constraint system.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
* graphite-dependences.c (new_poly_dr): Call ppl_powerset_is_empty.
(build_lexicographical_constraint): Same.
(dependence_polyhedron_1): Same.
(graphite_legal_transform_dr): Same.
(graphite_carried_dependence_level_k): Same.
* graphite-ppl.c (ppl_powerset_is_empty): New.
* graphite-ppl.h (ppl_powerset_is_empty): Declared.
* tree-data-ref.c (dump_data_reference): Print the basic block index.
* gcc.dg/graphite/block-0.c: Add documentation.
* gcc.dg/graphite/block-4.c: Same.
* gcc.dg/graphite/block-7.c: Same.
* gcc.dg/graphite/block-8.c: New.
* gcc.dg/graphite/interchange-1.c: Un-XFAILed.
* gcc.dg/graphite/interchange-11.c: Un-XFAILed.
* gcc.dg/graphite/interchange-12.c: Add documentation.
* gcc.dg/graphite/interchange-13.c: New.
* gcc.dg/graphite/interchange-14.c: New.
* gcc.dg/graphite/interchange-15.c: New.
* gcc.dg/graphite/interchange-8.c: Add documentation.
* gcc.dg/graphite/interchange-mvt.c: Same.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@169205 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-dependences.c')
-rw-r--r-- | gcc/graphite-dependences.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index 0164129d38e..d1e7d69912c 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -53,7 +53,9 @@ new_poly_ddr (poly_dr_p source, poly_dr_p sink, PDDR_DDP (pddr) = ddp; PDDR_ORIGINAL_SCATTERING_P (pddr) = original_scattering_p; - if (!ddp || ppl_Pointset_Powerset_C_Polyhedron_is_empty (ddp)) + if (!ddp + || ppl_powerset_is_empty (ddp, + scop_nb_params (PBB_SCOP (PDR_PBB (source))))) PDDR_KIND (pddr) = no_dependence; else PDDR_KIND (pddr) = has_dependence; @@ -394,13 +396,14 @@ build_pairwise_scheduling (graphite_dim_t dim, the BAG polyhedron: T1|I1|T2|I2|S1|S2|G. When DIRECTION is set to 1, compute the direct dependence from PDR1 to PDR2, and when DIRECTION is -1, compute the reversed dependence relation, from - PDR2 to PDR1. */ + PDR2 to PDR1. GDIM is the number of parameters in the scop. */ static ppl_Pointset_Powerset_C_Polyhedron_t build_lexicographical_constraint (ppl_Pointset_Powerset_C_Polyhedron_t bag, graphite_dim_t dim, graphite_dim_t tdim, graphite_dim_t offset, + graphite_dim_t gdim, int direction) { graphite_dim_t i; @@ -411,7 +414,7 @@ build_lexicographical_constraint (ppl_Pointset_Powerset_C_Polyhedron_t bag, lex = build_pairwise_scheduling (dim, 0, offset, direction); ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag); - if (!ppl_Pointset_Powerset_C_Polyhedron_is_empty (lex)) + if (!ppl_powerset_is_empty (lex, gdim)) ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex); ppl_delete_Pointset_Powerset_C_Polyhedron (lex); @@ -424,13 +427,13 @@ build_lexicographical_constraint (ppl_Pointset_Powerset_C_Polyhedron_t bag, ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (bag, sceq); ppl_delete_Pointset_Powerset_C_Polyhedron (sceq); - if (ppl_Pointset_Powerset_C_Polyhedron_is_empty (bag)) + if (ppl_powerset_is_empty (bag, gdim)) break; lex = build_pairwise_scheduling (dim, i + 1, offset, direction); ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (lex, bag); - if (!ppl_Pointset_Powerset_C_Polyhedron_is_empty (lex)) + if (!ppl_powerset_is_empty (lex, gdim)) ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (res, lex); ppl_delete_Pointset_Powerset_C_Polyhedron (lex); @@ -509,11 +512,11 @@ dependence_polyhedron_1 (poly_dr_p pdr1, poly_dr_p pdr2, ppl_delete_Pointset_Powerset_C_Polyhedron (idr2); ppl_delete_Pointset_Powerset_C_Polyhedron (dreq); - if (!ppl_Pointset_Powerset_C_Polyhedron_is_empty (res)) + if (!ppl_powerset_is_empty (res, gdim)) { ppl_Pointset_Powerset_C_Polyhedron_t lex = build_lexicographical_constraint (res, dim, MIN (tdim1, tdim2), - tdim1 + ddim1, direction); + tdim1 + ddim1, gdim, direction); ppl_delete_Pointset_Powerset_C_Polyhedron (res); res = lex; } @@ -682,7 +685,8 @@ graphite_legal_transform_dr (poly_dr_p pdr1, poly_dr_p pdr2) ppl_insert_dimensions_pointset (pt, otdim1 + ttdim1 + ddim1, otdim2); ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (po_temp, pt); - is_empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (po_temp); + is_empty_p = ppl_powerset_is_empty (po_temp, + scop_nb_params (PBB_SCOP (pbb1))); ppl_delete_Pointset_Powerset_C_Polyhedron (po_temp); free_poly_ddr (tpddr); @@ -783,7 +787,8 @@ graphite_carried_dependence_level_k (poly_dr_p pdr1, poly_dr_p pdr2, eqpp = build_pairwise_scheduling (dim, level, tdim1 + ddim1, 1); ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (eqpp, po); - empty_p = ppl_Pointset_Powerset_C_Polyhedron_is_empty (eqpp); + empty_p = ppl_powerset_is_empty + (eqpp, scop_nb_params (PBB_SCOP (PDR_PBB (pdr1)))); ppl_delete_Pointset_Powerset_C_Polyhedron (eqpp); free_poly_ddr (pddr); |