The original code would always try to maximize the number of scheduling
dimensions in a band, but this is not always desirable.
Make this heuristic configurable and turn it off by default.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
int schedule_parametric;
int schedule_outer_zero_distance;
int schedule_parametric;
int schedule_outer_zero_distance;
+ int schedule_maximize_band_depth;
int schedule_split_parallel;
};
int schedule_split_parallel;
};
"schedule-outer-zero-distance", 0,
"try to construct schedules with outer zero distances over "
"proximity dependences")
"schedule-outer-zero-distance", 0,
"try to construct schedules with outer zero distances over "
"proximity dependences")
+ISL_ARG_BOOL(struct isl_options, schedule_maximize_band_depth, 0,
+ "schedule-maximize-band-depth", 0,
+ "maximize the number of scheduling dimensions in a band")
ISL_ARG_BOOL(struct isl_options, schedule_split_parallel, 0,
"schedule-split-parallel", 1,
"split non-tilable bands with parallel schedules")
ISL_ARG_BOOL(struct isl_options, schedule_split_parallel, 0,
"schedule-split-parallel", 1,
"split non-tilable bands with parallel schedules")
return -1;
if (sol->size == 0) {
isl_vec_free(sol);
return -1;
if (sol->size == 0) {
isl_vec_free(sol);
+ if (!ctx->opt->schedule_maximize_band_depth &&
+ graph->n_total_row > graph->band_start)
+ return compute_next_band(ctx, graph);
if (graph->src_scc >= 0)
return compute_split_schedule(ctx, graph);
if (graph->n_total_row > graph->band_start)
if (graph->src_scc >= 0)
return compute_split_schedule(ctx, graph);
if (graph->n_total_row > graph->band_start)