forked from OSchip/llvm-project
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:
parent
00383a75b8
commit
1deda29598
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue