ScheduleOpt: Allow to configure for which dependences to optimize

We can either optimize for RAW dependences or for all dependences.
For the moment, I do not see a big difference here.

llvm-svn: 150484
This commit is contained in:
Tobias Grosser 2012-02-14 14:02:48 +00:00
parent 00383a75b8
commit 1deda29598
2 changed files with 24 additions and 3 deletions

View File

@ -418,7 +418,9 @@ isl_union_map *Dependences::getDependences(int type) {
dependences = isl_union_map_union(dependences,
isl_union_map_copy(waw_dep));
return isl_union_map_coalesce(dependences);
dependences = isl_union_map_coalesce(dependences);
dependences = isl_union_map_detect_equalities(dependences);
return dependences;
}
void Dependences::getAnalysisUsage(AnalysisUsage &AU) const {

View File

@ -47,6 +47,11 @@ DisableTiling("polly-no-tiling",
cl::desc("Disable tiling in the scheduler"), cl::Hidden,
cl::location(polly::DisablePollyTiling), cl::init(false));
static cl::opt<std::string>
OptimizeDeps("polly-opt-optimize-only",
cl::desc("Only a certain kind of dependences (all/raw)"),
cl::Hidden, cl::init("all"));
static cl::opt<std::string>
SimplifyDeps("polly-opt-simplify-deps",
cl::desc("Dependences should be simplified (yes/no)"),
@ -420,8 +425,22 @@ bool IslScheduleOptimizer::runOnScop(Scop &S) {
// Build input data.
int ValidityKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
| Dependences::TYPE_WAW;
int ProximityKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
| Dependences::TYPE_WAW;
int ProximityKinds;
if (OptimizeDeps == "all")
ProximityKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
| Dependences::TYPE_WAW;
else if (OptimizeDeps == "raw")
ProximityKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
| Dependences::TYPE_WAW;
else {
errs() << "Do not know how to optimize for '" << OptimizeDeps << "'"
<< " Falling back to optimizing all dependences.\n";
ProximityKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
| Dependences::TYPE_WAW;
}
isl_union_map *Validity = D->getDependences(ValidityKinds);
isl_union_map *Proximity = D->getDependences(ProximityKinds);