X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fgraphite-poly.c;h=3dfdb819c8eff0a637523a9d1840b36b95180ea7;hb=d22380ccd26489674065a386af0c5c112d2ad8b0;hp=86ef48594ced3e731b73472b522783f259cb1a1f;hpb=7cf0dbf3e5eee1286c76c26a836622c9c9974736;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c index 86ef48594ce..3dfdb819c8e 100644 --- a/gcc/graphite-poly.c +++ b/gcc/graphite-poly.c @@ -80,11 +80,11 @@ extend_scattering (poly_bb_p pbb, int max_scattering) ppl_dimension_type nb_old_dims, nb_new_dims; int nb_added_dims, i; ppl_Coefficient_t coef; - Value one; + mpz_t one; nb_added_dims = max_scattering - pbb_nb_scattering_transform (pbb); - value_init (one); - value_set_si (one, 1); + mpz_init (one); + mpz_set_si (one, 1); ppl_new_Coefficient (&coef); ppl_assign_Coefficient_from_mpz_t (coef, one); @@ -113,7 +113,7 @@ extend_scattering (poly_bb_p pbb, int max_scattering) } ppl_delete_Coefficient (coef); - value_clear (one); + mpz_clear (one); } /* All scattering matrices in SCOP will have the same number of scattering @@ -148,8 +148,17 @@ print_scattering_function_1 (FILE *file, poly_bb_p pbb, int verbosity) fprintf (file, "# scattering bb_%d (\n", pbb_index (pbb)); fprintf (file, "# eq"); - for (i = 0; i < pbb_nb_scattering_transform (pbb); i++) - fprintf (file, " s%d", (int) i); + if (PBB_TRANSFORMED_SCATTERING (pbb) + || PBB_ORIGINAL_SCATTERING (pbb)) + fprintf (file, "# Scattering function is provided\n1\n"); + else + { + fprintf (file, "# Scattering function is not provided\n0\n"); + return; + } + + fprintf (file, "# scattering bb_%d (\n", pbb_index (pbb)); + fprintf (file, "# eq"); for (i = 0; i < pbb_nb_local_vars (pbb); i++) fprintf (file, " lv%d", (int) i); @@ -183,24 +192,14 @@ print_scattering_function (FILE *file, poly_bb_p pbb, int verbosity) if (!PBB_TRANSFORMED (pbb)) return; - if (PBB_TRANSFORMED_SCATTERING (pbb) - || PBB_ORIGINAL_SCATTERING (pbb)) - { - if (verbosity > 0) - fprintf (file, "# Scattering function is provided\n"); - - fprintf (file, "1\n"); - } - else - { - if (verbosity > 0) - fprintf (file, "# Scattering function is not provided\n"); - - fprintf (file, "0\n"); - return; - } + /* Number of disjunct components. Remove this when + PBB_TRANSFORMED_SCATTERING will be a pointset_powerset. */ + fprintf (file, "1\n"); + ppl_print_polyhedron_matrix (file, PBB_TRANSFORMED_SCATTERING (pbb) + ? PBB_TRANSFORMED_SCATTERING (pbb) + : PBB_ORIGINAL_SCATTERING (pbb)); - print_scattering_function_1 (file, pbb, verbosity); + fprintf (file, "#)\n"); } /* Prints to FILE the iteration domain of PBB, at some VERBOSITY @@ -455,7 +454,9 @@ print_pdr_access_layout (FILE *file, poly_dr_p pdr) void print_pdr (FILE *file, poly_dr_p pdr, int verbosity) { - if (verbosity > 1) + fprintf (file, "# pdr_%d (", PDR_ID (pdr)); + + switch (PDR_TYPE (pdr)) { fprintf (file, "# pdr_%d (", PDR_ID (pdr)); @@ -486,13 +487,12 @@ print_pdr (FILE *file, poly_dr_p pdr, int verbosity) print_pdr_access_layout (file, pdr); } + fprintf (file, "# data accesses (\n"); + print_pdr_access_layout (file, pdr); ppl_print_powerset_matrix (file, PDR_ACCESSES (pdr)); + fprintf (file, "#)\n"); - if (verbosity > 0) - fprintf (file, "#)\n"); - - if (verbosity > 1) - fprintf (file, "#)\n"); + fprintf (file, "#)\n"); } /* Prints to STDERR the polyhedral data reference PDR, at some @@ -558,10 +558,8 @@ print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity) if (!PBB_DOMAIN (pbb)) return; - if (verbosity > 0) - { - fprintf (file, "# Iteration domain of bb_%d (\n", GBB_BB (gbb)->index); - fprintf (file, "# eq"); + fprintf (file, "# Iteration domain of bb_%d (\n", GBB_BB (gbb)->index); + fprintf (file, "# eq"); for (i = 0; i < pbb_dim_iter_domain (pbb); i++) fprintf (file, " i%d", (int) i); @@ -577,8 +575,7 @@ print_pbb_domain (FILE *file, poly_bb_p pbb, int verbosity) else fprintf (file, "0\n"); - if (verbosity > 0) - fprintf (file, "#)\n"); + fprintf (file, "#)\n"); } /* Dump the cases of a graphite basic block GBB on FILE. */ @@ -648,18 +645,12 @@ print_pdrs (FILE *file, poly_bb_p pbb, int verbosity) if (VEC_length (poly_dr_p, PBB_DRS (pbb)) == 0) { - if (verbosity > 0) - fprintf (file, "# Access informations are not provided\n");\ - fprintf (file, "0\n"); + fprintf (file, "# Access informations are not provided\n0\n"); return; } - if (verbosity > 1) - fprintf (file, "# Data references (\n"); - - if (verbosity > 0) - fprintf (file, "# Access informations are provided\n"); - fprintf (file, "1\n"); + fprintf (file, "# Data references (\n"); + fprintf (file, "# Access informations are provided\n1\n"); for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb), i, pdr); i++) if (PDR_TYPE (pdr) == PDR_READ) @@ -667,36 +658,20 @@ print_pdrs (FILE *file, poly_bb_p pbb, int verbosity) else nb_writes++; - if (verbosity > 1) - fprintf (file, "# Read data references (\n"); - - if (verbosity > 0) - fprintf (file, "# Read access informations\n"); - fprintf (file, "%d\n", nb_reads); - + fprintf (file, "# Read data references (\n"); + fprintf (file, "# Read access informations\n%d\n", nb_reads); for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb), i, pdr); i++) if (PDR_TYPE (pdr) == PDR_READ) - print_pdr (file, pdr, verbosity); - - if (verbosity > 1) - fprintf (file, "#)\n"); - - if (verbosity > 1) - fprintf (file, "# Write data references (\n"); - - if (verbosity > 0) - fprintf (file, "# Write access informations\n"); - fprintf (file, "%d\n", nb_writes); + print_pdr (file, pdr); + fprintf (file, "#)\n"); + fprintf (file, "# Write data references (\n"); + fprintf (file, "# Write access informations\n%d\n", nb_writes); for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb), i, pdr); i++) if (PDR_TYPE (pdr) != PDR_READ) - print_pdr (file, pdr, verbosity); - - if (verbosity > 1) - fprintf (file, "#)\n"); - - if (verbosity > 1) - fprintf (file, "#)\n"); + print_pdr (file, pdr); + fprintf (file, "#)\n"); + fprintf (file, "#)\n"); } /* Print to STDERR all the data references of PBB. */ @@ -733,26 +708,34 @@ print_pbb_body (FILE *file, poly_bb_p pbb, int verbosity) fprintf (file, "#)\n"); } -/* Print to FILE the domain and scattering function of PBB, at some - VERBOSITY level. */ +/* Print to FILE the body of PBB. */ -void -print_pbb (FILE *file, poly_bb_p pbb, int verbosity) +static void +print_pbb_body (FILE *file, poly_bb_p pbb) { - if (verbosity > 1) - { - fprintf (file, "# pbb_%d (\n", pbb_index (pbb)); - dump_gbb_conditions (file, PBB_BLACK_BOX (pbb)); - dump_gbb_cases (file, PBB_BLACK_BOX (pbb)); - } + fprintf (file, "# Body (\n"); + fprintf (file, "# Statement body is provided\n1\n"); + fprintf (file, "# Original iterator names\n# Iterator names are not provided yet.\n"); + fprintf (file, "# Statement body\n"); + fprintf (file, "{\n"); + dump_bb (pbb_bb (pbb), file, 0); + fprintf (file, "}\n"); + fprintf (file, "#)\n"); +} - print_pbb_domain (file, pbb, verbosity); - print_scattering_function (file, pbb, verbosity); - print_pdrs (file, pbb, verbosity); - print_pbb_body (file, pbb, verbosity); +/* Print to FILE the domain and scattering function of PBB. */ - if (verbosity > 1) - fprintf (file, "#)\n"); +void +print_pbb (FILE *file, poly_bb_p pbb, int verbosity) +{ + fprintf (file, "# pbb_%d (\n", pbb_index (pbb)); + dump_gbb_conditions (file, PBB_BLACK_BOX (pbb)); + dump_gbb_cases (file, PBB_BLACK_BOX (pbb)); + print_pbb_domain (file, pbb); + print_scattering_function (file, pbb); + print_pdrs (file, pbb); + print_pbb_body (file, pbb); + fprintf (file, "#)\n"); } /* Print to FILE the parameters of SCOP, at some VERBOSITY level. */ @@ -763,36 +746,19 @@ print_scop_params (FILE *file, scop_p scop, int verbosity) int i; tree t; - if (verbosity > 1) - fprintf (file, "# parameters (\n"); + fprintf (file, "# parameters (\n"); if (VEC_length (tree, SESE_PARAMS (SCOP_REGION (scop)))) - { - if (verbosity > 0) - fprintf (file, "# Parameter names are provided\n"); - - fprintf (file, "1\n"); - - if (verbosity > 0) - fprintf (file, "# Parameter names\n"); - } + fprintf (file, "# Parameter names are provided\n1\n# Parameter names \n"); else - { - if (verbosity > 0) - fprintf (file, "# Parameter names are not provided\n"); - fprintf (file, "0\n"); - } + fprintf (file, "# Parameter names are not provided\n0\n"); for (i = 0; VEC_iterate (tree, SESE_PARAMS (SCOP_REGION (scop)), i, t); i++) { print_generic_expr (file, t, 0); - fprintf (file, " "); + fprintf (file, " # p_%d \n", i); } - - fprintf (file, "\n"); - - if (verbosity > 1) - fprintf (file, "#)\n"); + fprintf (file, "#)\n"); } /* Print to FILE the context of SCoP, at some VERBOSITY level. */ @@ -802,10 +768,8 @@ print_scop_context (FILE *file, scop_p scop, int verbosity) { graphite_dim_t i; - if (verbosity > 0) - { - fprintf (file, "# Context (\n"); - fprintf (file, "# eq"); + fprintf (file, "# Context (\n"); + fprintf (file, "# eq"); for (i = 0; i < scop_nb_params (scop); i++) fprintf (file, " p%d", (int) i); @@ -818,43 +782,7 @@ print_scop_context (FILE *file, scop_p scop, int verbosity) else fprintf (file, "0 %d\n", (int) scop_nb_params (scop) + 2); - if (verbosity > 0) - fprintf (file, "# )\n"); -} - -/* Print to FILE the SCOP, at some VERBOSITY level. */ - -void -print_scop (FILE *file, scop_p scop, int verbosity) -{ - int i; - poly_bb_p pbb; - - fprintf (file, "SCoP #(\n"); - fprintf (file, "# Language\nGimple\n"); - print_scop_context (file, scop, verbosity); - print_scop_params (file, scop, verbosity); - - if (verbosity > 0) - fprintf (file, "# Number of statements\n"); - - fprintf (file, "%d\n",VEC_length (poly_bb_p, SCOP_BBS (scop))); - - for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++) - print_pbb (file, pbb, verbosity); - - if (verbosity > 1) - { - fprintf (file, "# original_lst (\n"); - print_lst (file, SCOP_ORIGINAL_SCHEDULE (scop), 0); - fprintf (file, "\n#)\n"); - - fprintf (file, "# transformed_lst (\n"); - print_lst (file, SCOP_TRANSFORMED_SCHEDULE (scop), 0); - fprintf (file, "\n#)\n"); - } - - fprintf (file, "#)\n"); + fprintf (file, "# )\n"); } /* Print to FILE the input file that CLooG would expect as input, at @@ -866,47 +794,12 @@ print_cloog (FILE *file, scop_p scop, int verbosity) int i; poly_bb_p pbb; - fprintf (file, "# SCoP (generated by GCC/Graphite\n"); - if (verbosity > 0) - fprintf (file, "# CLooG output language\n"); - fprintf (file, "c\n"); - - print_scop_context (file, scop, verbosity); - print_scop_params (file, scop, verbosity); - - if (verbosity > 0) - fprintf (file, "# Number of statements\n"); - - fprintf (file, "%d\n", VEC_length (poly_bb_p, SCOP_BBS (scop))); - - for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++) - { - if (verbosity > 1) - fprintf (file, "# pbb_%d (\n", pbb_index (pbb)); - - print_pbb_domain (file, pbb, verbosity); - fprintf (file, "0 0 0"); - - if (verbosity > 0) - fprintf (file, "# For future CLooG options.\n"); - else - fprintf (file, "\n"); - - if (verbosity > 1) - fprintf (file, "#)\n"); - } - - fprintf (file, "0"); - if (verbosity > 0) - fprintf (file, "# Don't set the iterator names.\n"); - else - fprintf (file, "\n"); - - if (verbosity > 0) - fprintf (file, "# Number of scattering functions\n"); - - fprintf (file, "%d\n", VEC_length (poly_bb_p, SCOP_BBS (scop))); - unify_scattering_dimensions (scop); + fprintf (file, "SCoP #(\n"); + fprintf (file, "# Language\nGimple\n"); + print_scop_context (file, scop); + print_scop_params (file, scop); + fprintf (file, "# Number of statements\n%d\n", + VEC_length (poly_bb_p, SCOP_BBS (scop))); for (i = 0; VEC_iterate (poly_bb_p, SCOP_BBS (scop), i, pbb); i++) { @@ -918,29 +811,17 @@ print_cloog (FILE *file, scop_p scop, int verbosity) if (verbosity > 1) fprintf (file, "# pbb_%d (\n", pbb_index (pbb)); - print_scattering_function_1 (file, pbb, verbosity); + fprintf (file, "# original_lst (\n"); + print_lst (file, SCOP_ORIGINAL_SCHEDULE (scop), 0); + fprintf (file, "\n#)\n"); - if (verbosity > 1) - fprintf (file, "#)\n"); - } - - fprintf (file, "0"); - if (verbosity > 0) - fprintf (file, "# Don't set the scattering dimension names.\n"); - else - fprintf (file, "\n"); + fprintf (file, "# transformed_lst (\n"); + print_lst (file, SCOP_TRANSFORMED_SCHEDULE (scop), 0); + fprintf (file, "\n#)\n"); fprintf (file, "#)\n"); } -/* Print to STDERR the domain of PBB, at some VERBOSITY level. */ - -void -debug_pbb_domain (poly_bb_p pbb, int verbosity) -{ - print_pbb_domain (stderr, pbb, verbosity); -} - /* Print to FILE the domain and scattering function of PBB, at some VERBOSITY level. */ @@ -998,10 +879,10 @@ psct_scattering_dim_for_loop_depth (poly_bb_p pbb, graphite_dim_t loop_depth) ppl_dimension_type iter = psct_iterator_dim (pbb, loop_depth); ppl_Linear_Expression_t expr; ppl_Coefficient_t coef; - Value val; + mpz_t val; graphite_dim_t i; - value_init (val); + mpz_init (val); ppl_new_Coefficient (&coef); ppl_Polyhedron_get_constraints (ph, &pcs); ppl_new_Constraint_System_const_iterator (&cit); @@ -1017,7 +898,7 @@ psct_scattering_dim_for_loop_depth (poly_bb_p pbb, graphite_dim_t loop_depth) ppl_Linear_Expression_coefficient (expr, iter, coef); ppl_Coefficient_to_mpz_t (coef, val); - if (value_zero_p (val)) + if (mpz_sgn (val)) { ppl_delete_Linear_Expression (expr); continue; @@ -1032,7 +913,7 @@ psct_scattering_dim_for_loop_depth (poly_bb_p pbb, graphite_dim_t loop_depth) if (value_notzero_p (val)) { - value_clear (val); + mpz_clear (val); ppl_delete_Linear_Expression (expr); ppl_delete_Coefficient (coef); ppl_delete_Constraint_System_const_iterator (cit); @@ -1052,7 +933,7 @@ psct_scattering_dim_for_loop_depth (poly_bb_p pbb, graphite_dim_t loop_depth) void pbb_number_of_iterations (poly_bb_p pbb, graphite_dim_t loop_depth, - Value niter) + mpz_t niter) { ppl_Linear_Expression_t le; ppl_dimension_type dim; @@ -1060,7 +941,7 @@ pbb_number_of_iterations (poly_bb_p pbb, ppl_Pointset_Powerset_C_Polyhedron_space_dimension (PBB_DOMAIN (pbb), &dim); ppl_new_Linear_Expression_with_dimension (&le, dim); ppl_set_coef (le, pbb_iterator_dim (pbb, loop_depth), 1); - value_set_si (niter, -1); + mpz_set_si (niter, -1); ppl_max_for_le_pointset (PBB_DOMAIN (pbb), le, niter); ppl_delete_Linear_Expression (le); } @@ -1071,7 +952,7 @@ pbb_number_of_iterations (poly_bb_p pbb, void pbb_number_of_iterations_at_time (poly_bb_p pbb, graphite_dim_t time_depth, - Value niter) + mpz_t niter) { ppl_Pointset_Powerset_C_Polyhedron_t ext_domain, sctr; ppl_Linear_Expression_t le; @@ -1106,7 +987,7 @@ pbb_number_of_iterations_at_time (poly_bb_p pbb, ppl_Pointset_Powerset_C_Polyhedron_space_dimension (sctr, &dim); ppl_new_Linear_Expression_with_dimension (&le, dim); ppl_set_coef (le, time_depth, 1); - value_set_si (niter, -1); + mpz_set_si (niter, -1); ppl_max_for_le_pointset (sctr, le, niter); ppl_delete_Linear_Expression (le);