diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2008-06-01 01:23:53 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2008-06-01 01:23:53 +0000 |
commit | 37fe9369efa0df642c937ea5fb9a03e1a3cbcd81 (patch) | |
tree | 5072ee52168548c11c400e4ab639def7cbd20618 | |
parent | 93201259dd4df8aef4a32f642583d4cd132433ed (diff) |
2008-05-31 Sebastian Pop <sebastian.pop@amd.com>
Jan Sjodin <jan.sjodin@amd.com>
* graphite.c (scan_tree_for_params, setup_cloog_loop): Compute the offset
of the last loop.
(setup_cloog_loop): Copy the entire outer constraint matrix.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/graphite@136250 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.graphite | 7 | ||||
-rw-r--r-- | gcc/graphite.c | 76 |
2 files changed, 33 insertions, 50 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 69ba09305b4..064baf321a6 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,6 +1,13 @@ 2008-05-31 Sebastian Pop <sebastian.pop@amd.com> Jan Sjodin <jan.sjodin@amd.com> + * graphite.c (scan_tree_for_params, setup_cloog_loop): Compute the offset + of the last loop. + (setup_cloog_loop): Copy the entire outer constraint matrix. + +2008-05-31 Sebastian Pop <sebastian.pop@amd.com> + Jan Sjodin <jan.sjodin@amd.com> + * graphite.c (stmt_in_scop_p, function_parameter_p, invariant_in_scop_p): Removed. (scan_tree_for_params): Can be used with no constraint diff --git a/gcc/graphite.c b/gcc/graphite.c index 814eefa6ea4..087c4821d64 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -1197,9 +1197,6 @@ build_scop_canonical_schedules (scop_p scop) lambda_vector_copy (SCOP_STATIC_SCHEDULE (scop), GBB_STATIC_SCHEDULE (gb), nb); - if (0) - debug_gbb (gb, 3); - ++SCOP_STATIC_SCHEDULE (scop)[offset]; } } @@ -1230,7 +1227,7 @@ param_index (tree var, scop_p scop) the number of columns for loop iterators in C. */ static void -scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) +scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, Value k) { unsigned cst_col, param_col; @@ -1255,7 +1252,7 @@ scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) switch (TREE_CODE (left)) { case POLYNOMIAL_CHREC: - scan_tree_for_params (s, left, c, r, n, k); + scan_tree_for_params (s, left, c, r, k); return; case INTEGER_CST: @@ -1270,7 +1267,7 @@ scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) default: { - scan_tree_for_params (s, left, c, r, n, k); + scan_tree_for_params (s, left, c, r, k); return; } } @@ -1288,7 +1285,7 @@ scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) value_set_si (val, int_cst_value (TREE_OPERAND (e, 1))); value_multiply (k, k, val); value_clear (val); - scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, k); } else { @@ -1300,23 +1297,23 @@ scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) value_set_si (val, int_cst_value (TREE_OPERAND (e, 0))); value_multiply (k, k, val); value_clear (val); - scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, k); } break; case PLUS_EXPR: - scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, n, k); - scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, k); + scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, k); break; case MINUS_EXPR: - scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, k); value_oppose (k, k); - scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 1), c, r, k); break; case SSA_NAME: - param_col = 1 + n + param_index (e, s); + param_col = 1 + scop_nb_loops (s) + param_index (e, s); if (c) { @@ -1338,7 +1335,7 @@ scan_tree_for_params (scop_p s, tree e, CloogMatrix *c, int r, int n, Value k) case NOP_EXPR: case CONVERT_EXPR: case NON_LVALUE_EXPR: - scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, n, k); + scan_tree_for_params (s, TREE_OPERAND (e, 0), c, r, k); break; default: @@ -1379,7 +1376,7 @@ idx_record_params (tree base, tree *idx, void *dta) value_init (one); value_set_si (one, 1); - scan_tree_for_params (scop, scev, NULL, 0, 0, one); + scan_tree_for_params (scop, scev, NULL, 0, one); value_clear (one); } } @@ -1504,7 +1501,7 @@ find_scop_parameters (scop_p scop) Value one; value_init (one); value_set_si (one, 1); - scan_tree_for_params (scop, nb_iters, NULL, 0, 0, one); + scan_tree_for_params (scop, nb_iters, NULL, 0, one); value_clear (one); } } @@ -1628,13 +1625,11 @@ loop_body_to_cloog_stmts (struct loop *loop, scop_p scop, CloogMatrix *cstr) return res; } -/* Converts LOOP in SCOP to cloog's format. NB_OUTER_LOOPS is the - number of loops surrounding LOOP in SCOP. OUTER_CSTR gives the +/* Converts LOOP in SCOP to cloog's format. OUTER_CSTR gives the constraints matrix for the surrounding loops. */ static CloogLoop * -setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, - int nb_outer_loops) +setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr) { unsigned i, j, row; CloogStatement *stmt; @@ -1651,7 +1646,7 @@ setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, /* The column for the current loop is just after the columns of other outer loops. */ - unsigned loop_col = nb_outer_loops + 1; + unsigned loop_col = scop_loop_index (scop, loop) + 1; tree nb_iters = number_of_latch_executions (loop); @@ -1666,27 +1661,11 @@ setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, /* Copy the outer constraints. */ for (i = 0; i < outer_cstr->NbRows; i++) - { - /* Copy the eq/ineq and loops columns. */ - for (j = 0; j < loop_col; j++) - { - value_init (cstr->p[i][j]); - value_assign (cstr->p[i][j], outer_cstr->p[i][j]); - } - - /* Leave an empty column in CSTR for the current loop, and then - copy the parameter columns. */ - for (j = loop_col; j < outer_cstr->NbColumns - 1; j++) - { - value_init (cstr->p[i][j + 1]); - value_assign (cstr->p[i][j + 1], outer_cstr->p[i][j]); - } - - /* Copy the constant column. */ - value_init (cstr->p[i][cst_col]); - value_assign (cstr->p[i][cst_col], - outer_cstr->p[i][outer_cstr->NbColumns - 1]); - } + for (j = 0; j < outer_cstr->NbColumns; j++) + { + value_init (cstr->p[i][j]); + value_assign (cstr->p[i][j], outer_cstr->p[i][j]); + } /* 0 <= loop_i */ row = outer_cstr->NbRows; @@ -1725,7 +1704,7 @@ setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, nb_iters); value_init (one); value_set_si (one, 1); - scan_tree_for_params (scop, nb_iters, cstr, row, loop_col, one); + scan_tree_for_params (scop, nb_iters, cstr, row, one); value_clear (one); } @@ -1741,7 +1720,7 @@ setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, res->inner for representing inner loops: this information is contained in the scattering matrix. */ if (loop->inner && loop_in_scop_p (loop->inner, scop)) - res->next = setup_cloog_loop (scop, loop->inner, cstr, nb_outer_loops + 1); + res->next = setup_cloog_loop (scop, loop->inner, cstr); if (loop->next && loop_in_scop_p (loop->next, scop)) { @@ -1751,12 +1730,12 @@ setup_cloog_loop (scop_p scop, struct loop *loop, CloogMatrix *outer_cstr, while (l->next) l = l->next; - l->next = setup_cloog_loop (scop, loop->next, outer_cstr, nb_outer_loops); + l->next = setup_cloog_loop (scop, loop->next, outer_cstr); } stmt = loop_body_to_cloog_stmts (loop, scop, cstr); - res->block = cloog_block_alloc (stmt, NULL, 0, NULL, nb_outer_loops + 1); + res->block = cloog_block_alloc (stmt, NULL, 0, NULL, loop_col); return res; } @@ -1852,7 +1831,7 @@ build_scop_iteration_domain (scop_p scop) - last column: a constant - nb_params_in_scop columns for the parameters used in the scop. */ outer_cstr = cloog_matrix_alloc (0, scop_dim_domain (scop) + 1); - SCOP_PROG (scop)->loop = setup_cloog_loop (scop, loop, outer_cstr, 0); + SCOP_PROG (scop)->loop = setup_cloog_loop (scop, loop, outer_cstr); return true; } @@ -2283,9 +2262,6 @@ build_cloog_prog (scop_p scop) new_scattering->domain = cloog_domain_matrix2domain (block->scattering); scattering = new_scattering; } - - if (0) - debug_gbb (gbb, 3); } prog->loop = loop_list; |