diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-02-06 17:41:03 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-02-06 17:41:03 +0000 |
commit | a7ed6c90a44ad420c4c71fdd088316a24c54d6e3 (patch) | |
tree | 1bb8f31179c871fe8e486743c89348635d9b66e9 /gcc | |
parent | e65a757989102018f314bc3d1548f10c104bd305 (diff) | |
download | gcc-a7ed6c90a44ad420c4c71fdd088316a24c54d6e3.zip gcc-a7ed6c90a44ad420c4c71fdd088316a24c54d6e3.tar.gz gcc-a7ed6c90a44ad420c4c71fdd088316a24c54d6e3.tar.bz2 |
Fix build_pddr.
2010-01-20 Sebastian Pop <sebastian.pop@amd.com>
* graphite-dependences.c (pddr_original_scattering): Renamed build_pddr.
(pddr_transformed_scattering): Removed.
(graphite_legal_transform_dr): Use build_pddr.
(dot_original_deps_stmt_1): Same.
(dot_transformed_deps_stmt_1): Same.
(dot_original_deps): Same.
(dot_transformed_deps): Same.
From-SVN: r156544
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog.graphite | 10 | ||||
-rw-r--r-- | gcc/graphite-dependences.c | 80 |
2 files changed, 42 insertions, 48 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 8d26291..8a5157a 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,15 @@ 2010-01-20 Sebastian Pop <sebastian.pop@amd.com> + * graphite-dependences.c (pddr_original_scattering): Renamed build_pddr. + (pddr_transformed_scattering): Removed. + (graphite_legal_transform_dr): Use build_pddr. + (dot_original_deps_stmt_1): Same. + (dot_transformed_deps_stmt_1): Same. + (dot_original_deps): Same. + (dot_transformed_deps): Same. + +2010-01-20 Sebastian Pop <sebastian.pop@amd.com> + * graphite-dependences.c (lexicographically_gt_p): Add comments. (build_lexicographically_gt_constraint): Same. (dependence_polyhedron_1): Same. diff --git a/gcc/graphite-dependences.c b/gcc/graphite-dependences.c index e096cba..3da2557 100644 --- a/gcc/graphite-dependences.c +++ b/gcc/graphite-dependences.c @@ -344,6 +344,8 @@ build_lexicographically_gt_constraint (ppl_Pointset_Powerset_C_Polyhedron_t *res | S1 and S2 the subscripts | G the global parameters. + D1 and D2 are the iteration domains of PDR1 and PDR2. + SCAT1 and SCAT2 are the scattering polyhedra for PDR1 and PDR2. When ORIGINAL_SCATTERING_P is true, then the scattering polyhedra SCAT1 and SCAT2 correspond to the original scattering of the @@ -430,6 +432,8 @@ dependence_polyhedron_1 (poly_bb_p pbb1, poly_bb_p pbb2, /* Build the dependence polyhedron for data references PDR1 and PDR2. If possible use already cached information. + D1 and D2 are the iteration domains of PDR1 and PDR2. + SCAT1 and SCAT2 are the scattering polyhedra for PDR1 and PDR2. When ORIGINAL_SCATTERING_P is true, then the scattering polyhedra SCAT1 and SCAT2 correspond to the original scattering of the @@ -472,64 +476,38 @@ dependence_polyhedron (poly_bb_p pbb1, poly_bb_p pbb2, return res; } -static bool -poly_drs_may_alias_p (poly_dr_p pdr1, poly_dr_p pdr2); - -/* Returns the PDDR corresponding to the original schedule, or NULL if - the dependence relation is empty or unknown (cannot judge dependency - under polyhedral model). */ +/* Returns the Polyhedral Data Dependence Relation (PDDR) between PDR1 + contained in PBB1 and PDR2 contained in PBB2. When + ORIGINAL_SCATTERING_P is true, return the PDDR corresponding to the + original scattering, or NULL if the dependence relation is empty. + When ORIGINAL_SCATTERING_P is false, return the PDDR corresponding + to the transformed scattering. */ static poly_ddr_p -pddr_original_scattering (poly_bb_p pbb1, poly_bb_p pbb2, - poly_dr_p pdr1, poly_dr_p pdr2) +build_pddr (poly_bb_p pbb1, poly_bb_p pbb2, poly_dr_p pdr1, poly_dr_p pdr2, + bool original_scattering_p) { poly_ddr_p pddr; ppl_Pointset_Powerset_C_Polyhedron_t d1 = PBB_DOMAIN (pbb1); ppl_Pointset_Powerset_C_Polyhedron_t d2 = PBB_DOMAIN (pbb2); - ppl_Polyhedron_t so1 = PBB_ORIGINAL_SCATTERING (pbb1); - ppl_Polyhedron_t so2 = PBB_ORIGINAL_SCATTERING (pbb2); + ppl_Polyhedron_t scat1 = original_scattering_p ? + PBB_ORIGINAL_SCATTERING (pbb1) : PBB_TRANSFORMED_SCATTERING (pbb1); + ppl_Polyhedron_t scat2 = original_scattering_p ? + PBB_ORIGINAL_SCATTERING (pbb2) : PBB_TRANSFORMED_SCATTERING (pbb2); if ((pdr_read_p (pdr1) && pdr_read_p (pdr2)) || PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2) || PDR_NB_SUBSCRIPTS (pdr1) != PDR_NB_SUBSCRIPTS (pdr2)) return NULL; - pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, so1, so2, - 1, true); + pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, scat1, scat2, + 1, original_scattering_p); if (pddr_is_empty (pddr)) return NULL; return pddr; } -/* Returns the PDDR corresponding to the transformed schedule, or NULL if - the dependence relation is empty or unknown (cannot judge dependency - under polyhedral model). */ - -static poly_ddr_p -pddr_transformed_scattering (poly_bb_p pbb1, poly_bb_p pbb2, - poly_dr_p pdr1, poly_dr_p pdr2) -{ - poly_ddr_p pddr; - ppl_Pointset_Powerset_C_Polyhedron_t d1 = PBB_DOMAIN (pbb1); - ppl_Pointset_Powerset_C_Polyhedron_t d2 = PBB_DOMAIN (pbb2); - ppl_Polyhedron_t st1 = PBB_ORIGINAL_SCATTERING (pbb1); - ppl_Polyhedron_t st2 = PBB_ORIGINAL_SCATTERING (pbb2); - - if ((pdr_read_p (pdr1) && pdr_read_p (pdr2)) - || PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2) - || PDR_NB_SUBSCRIPTS (pdr1) != PDR_NB_SUBSCRIPTS (pdr2)) - return NULL; - - pddr = dependence_polyhedron (pbb1, pbb2, d1, d2, pdr1, pdr2, st1, st2, - 1, false); - if (pddr_is_empty (pddr)) - return NULL; - - return pddr; -} - - /* Return true when the data dependence relation between the data references PDR1 belonging to PBB1 and PDR2 is part of a reduction. */ @@ -585,7 +563,7 @@ graphite_legal_transform_dr (poly_bb_p pbb1, poly_bb_p pbb2, if (reduction_dr_p (pbb1, pbb2, pdr1, pdr2)) return true; - pddr = pddr_original_scattering (pbb1, pbb2, pdr1, pdr2); + pddr = build_pddr (pbb1, pbb2, pdr1, pdr2, true); if (!pddr) return true; @@ -833,7 +811,7 @@ dot_original_deps_stmt_1 (FILE *file, scop_p scop) { for (k = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb1), k, pdr1); k++) for (l = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb2), l, pdr2); l++) - if (pddr_original_scattering (pbb1, pbb2, pdr1, pdr2)) + if (build_pddr (pbb1, pbb2, pdr1, pdr2, true)) { fprintf (file, "OS%d -> OS%d\n", pbb_index (pbb1), pbb_index (pbb2)); @@ -852,16 +830,18 @@ dot_transformed_deps_stmt_1 (FILE *file, scop_p scop) int i, j, k, l; poly_bb_p pbb1, pbb2; poly_dr_p pdr1, pdr2; + poly_ddr_p pddr; for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb1); i++) for (j = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), j, pbb2); j++) { for (k = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb1), k, pdr1); k++) for (l = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb2), l, pdr2); l++) - if (pddr_transformed_scattering (pbb1, pbb2, pdr1, pdr2)) + if ((pddr = build_pddr (pbb1, pbb2, pdr1, pdr2, false))) { fprintf (file, "TS%d -> TS%d\n", pbb_index (pbb1), pbb_index (pbb2)); + free_poly_ddr (pddr); goto done; } done:; @@ -897,7 +877,7 @@ dot_original_deps (FILE *file, scop_p scop) for (j = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), j, pbb2); j++) for (k = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb1), k, pdr1); k++) for (l = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb2), l, pdr2); l++) - if (pddr_original_scattering (pbb1, pbb2, pdr1, pdr2)) + if (build_pddr (pbb1, pbb2, pdr1, pdr2, true)) fprintf (file, "OS%d_D%d -> OS%d_D%d\n", pbb_index (pbb1), PDR_ID (pdr1), pbb_index (pbb2), PDR_ID (pdr2)); @@ -912,15 +892,19 @@ dot_transformed_deps (FILE *file, scop_p scop) int i, j, k, l; poly_bb_p pbb1, pbb2; poly_dr_p pdr1, pdr2; + poly_ddr_p pddr; for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb1); i++) for (j = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), j, pbb2); j++) for (k = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb1), k, pdr1); k++) for (l = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb2), l, pdr2); l++) - if (pddr_transformed_scattering (pbb1, pbb2, pdr1, pdr2)) - fprintf (file, "TS%d_D%d -> TS%d_D%d\n", - pbb_index (pbb1), PDR_ID (pdr1), - pbb_index (pbb2), PDR_ID (pdr2)); + if ((pddr = build_pddr (pbb1, pbb2, pdr1, pdr2, false))) + { + fprintf (file, "TS%d_D%d -> TS%d_D%d\n", + pbb_index (pbb1), PDR_ID (pdr1), + pbb_index (pbb2), PDR_ID (pdr2)); + free_poly_ddr (pddr); + } } /* Pretty print to FILE all the data dependences of SCoP in DOT |