Commit 25e20d33 by Sebastian Pop Committed by Sebastian Pop

graphite-blocking.c (scop_do_block): New.

2009-11-18  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-blocking.c (scop_do_block): New.
	* graphite-poly.c (apply_poly_transforms): Call scop_do_block.
	* graphite-poly.h (scop_do_block): Declared.

From-SVN: r154638
parent e3bde9f4
2009-11-18 Sebastian Pop <sebastian.pop@amd.com>
* graphite-blocking.c (scop_do_block): New.
* graphite-poly.c (apply_poly_transforms): Call scop_do_block.
* graphite-poly.h (scop_do_block): Declared.
2009-11-18 Sebastian Pop <sebastian.pop@amd.com>
* graphite-blocking.c (pbb_strip_mine_profitable_p): The parameter
depth is the loop nesting depth in the LST. Call psct_dynamic_dim
to transform depth into the time_depth before calling
......
......@@ -255,7 +255,6 @@ lst_do_strip_mine (lst_p lst)
return res;
}
/* Strip mines all the loops in SCOP. Nothing profitable in all this:
this is just a driver function. */
......@@ -280,4 +279,31 @@ scop_do_strip_mine (scop_p scop)
return transform_done;
}
/* Loop blocks all the loops in SCOP. Returns true when we manage to
block some loops. */
bool
scop_do_block (scop_p scop)
{
bool transform_done = false;
store_scattering (scop);
lst_do_strip_mine (SCOP_TRANSFORMED_SCHEDULE (scop));
transform_done = scop_do_interchange (scop);
/* If we don't interchange loops, then the strip mine is not
profitable, and the transform is not a loop blocking. */
if (!transform_done
|| !graphite_legal_transform (scop))
{
restore_scattering (scop);
return false;
}
else if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "SCoP will be loop blocked.\n");
return transform_done;
}
#endif
......@@ -250,10 +250,7 @@ apply_poly_transforms (scop_p scop)
transform_done = true;
if (flag_loop_block)
{
transform_done |= scop_do_strip_mine (scop);
transform_done |= scop_do_interchange (scop);
}
transform_done |= scop_do_block (scop);
else
{
if (flag_loop_strip_mine)
......
......@@ -358,6 +358,7 @@ extern void debug_iteration_domain (poly_bb_p);
extern void debug_iteration_domains (scop_p);
extern bool scop_do_interchange (scop_p);
extern bool scop_do_strip_mine (scop_p);
extern bool scop_do_block (scop_p);
extern void pbb_number_of_iterations (poly_bb_p, graphite_dim_t, Value);
extern void pbb_number_of_iterations_at_time (poly_bb_p, graphite_dim_t, Value);
extern void pbb_remove_duplicate_pdrs (poly_bb_p);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment