summaryrefslogtreecommitdiffstats
path: root/polly/lib/Transform/ScheduleOptimizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Transform/ScheduleOptimizer.cpp')
-rw-r--r--polly/lib/Transform/ScheduleOptimizer.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/polly/lib/Transform/ScheduleOptimizer.cpp b/polly/lib/Transform/ScheduleOptimizer.cpp
index 6702c53afe3..b5178796d9e 100644
--- a/polly/lib/Transform/ScheduleOptimizer.cpp
+++ b/polly/lib/Transform/ScheduleOptimizer.cpp
@@ -102,6 +102,12 @@ static cl::opt<std::string>
cl::desc("Maximize the band depth (yes/no)"), cl::Hidden,
cl::init("yes"), cl::ZeroOrMore, cl::cat(PollyCategory));
+static cl::opt<std::string> OuterCoincidence(
+ "polly-opt-outer-coincidence",
+ cl::desc("Try to construct schedules where the outer member of each band "
+ "satisfies the coincidence constraints (yes/no)"),
+ cl::Hidden, cl::init("no"), cl::ZeroOrMore, cl::cat(PollyCategory));
+
static cl::opt<int> PrevectorWidth(
"polly-prevect-width",
cl::desc(
@@ -543,6 +549,20 @@ bool IslScheduleOptimizer::runOnScop(Scop &S) {
IslMaximizeBands = 1;
}
+ int IslOuterCoincidence;
+
+ if (OuterCoincidence == "yes") {
+ IslOuterCoincidence = 1;
+ } else if (OuterCoincidence == "no") {
+ IslOuterCoincidence = 0;
+ } else {
+ errs() << "warning: Option -polly-opt-outer-coincidence should either be "
+ "'yes' or 'no'. Falling back to default: 'no'\n";
+ IslOuterCoincidence = 0;
+ }
+
+ isl_options_set_schedule_outer_coincidence(S.getIslCtx(),
+ IslOuterCoincidence);
isl_options_set_schedule_serialize_sccs(S.getIslCtx(), IslSerializeSCCs);
isl_options_set_schedule_maximize_band_depth(S.getIslCtx(), IslMaximizeBands);
isl_options_set_schedule_max_constant_term(S.getIslCtx(), MaxConstantTerm);
OpenPOWER on IntegriCloud