summaryrefslogtreecommitdiffstats
path: root/polly/lib/Pluto.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/Pluto.cpp')
-rw-r--r--polly/lib/Pluto.cpp73
1 files changed, 31 insertions, 42 deletions
diff --git a/polly/lib/Pluto.cpp b/polly/lib/Pluto.cpp
index 0ed1c1b4eaa..2c2004ff20c 100644
--- a/polly/lib/Pluto.cpp
+++ b/polly/lib/Pluto.cpp
@@ -27,51 +27,45 @@
#include "pluto/libpluto.h"
#include "isl/map.h"
-
using namespace llvm;
using namespace polly;
-static cl::opt<bool>
-EnableTiling("polly-pluto-tile",
- cl::desc("Enable tiling"),
- cl::Hidden, cl::init(false));
+static cl::opt<bool> EnableTiling("polly-pluto-tile", cl::desc("Enable tiling"),
+ cl::Hidden, cl::init(false));
namespace {
/// Convert an int into a string.
-static std::string convertInt(int number)
-{
+static std::string convertInt(int number) {
if (number == 0)
return "0";
std::string temp = "";
std::string returnvalue = "";
- while (number > 0)
- {
+ while (number > 0) {
temp += number % 10 + 48;
number /= 10;
}
for (unsigned i = 0; i < temp.length(); i++)
- returnvalue+=temp[temp.length() - i - 1];
+ returnvalue += temp[temp.length() - i - 1];
return returnvalue;
}
+class PlutoOptimizer : public ScopPass {
- class PlutoOptimizer : public ScopPass {
-
- public:
- static char ID;
- explicit PlutoOptimizer() : ScopPass(ID) {}
+public:
+ static char ID;
+ explicit PlutoOptimizer() : ScopPass(ID) {}
- virtual bool runOnScop(Scop &S);
- void printScop(llvm::raw_ostream &OS) const;
- void getAnalysisUsage(AnalysisUsage &AU) const;
- static void extendScattering(Scop &S, unsigned NewDimensions);
- };
+ virtual bool runOnScop(Scop &S);
+ void printScop(llvm::raw_ostream &OS) const;
+ void getAnalysisUsage(AnalysisUsage &AU) const;
+ static void extendScattering(Scop &S, unsigned NewDimensions);
+};
}
char PlutoOptimizer::ID = 0;
static int getSingleMap(__isl_take isl_map *map, void *user) {
- isl_map **singleMap = (isl_map **) user;
+ isl_map **singleMap = (isl_map **)user;
*singleMap = map;
return 0;
@@ -93,7 +87,6 @@ void PlutoOptimizer::extendScattering(Scop &S, unsigned NewDimensions) {
for (unsigned i = OldDimensions; i < NewDimensions; i++)
Map = isl_map_fix_si(Map, isl_dim_out, i, 0);
-
Map = isl_map_align_params(Map, S.getParamSpace());
New = isl_map_apply_range(Stmt->getScattering(), Map);
Stmt->setScattering(New);
@@ -107,8 +100,8 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
Dependences *D = &getAnalysis<Dependences>();
- int DependencesKinds = Dependences::TYPE_RAW | Dependences::TYPE_WAR
- | Dependences::TYPE_WAW;
+ int DependencesKinds =
+ Dependences::TYPE_RAW | Dependences::TYPE_WAR | Dependences::TYPE_WAW;
Deps = D->getDependences(DependencesKinds);
Domain = S.getDomains();
@@ -119,7 +112,7 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
ScopStmt *Stmt = *SI;
std::string Name = "S_" + convertInt(counter);
isl_map *Identity = isl_map_identity(isl_space_map_from_domain_and_range(
- Stmt->getDomainSpace(), Stmt->getDomainSpace()));
+ Stmt->getDomainSpace(), Stmt->getDomainSpace()));
Identity = isl_map_set_tuple_name(Identity, isl_dim_out, Name.c_str());
ToPlutoNames = isl_union_map_add_map(ToPlutoNames, Identity);
counter++;
@@ -133,10 +126,8 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
Options->fuse = 0;
Options->tile = EnableTiling;
- DEBUG(
- dbgs() << "Domain: " << stringFromIslObj(Domain) << "\n";
- dbgs() << "Dependences: " << stringFromIslObj(Deps) << "\n";
- );
+ DEBUG(dbgs() << "Domain: " << stringFromIslObj(Domain) << "\n";
+ dbgs() << "Dependences: " << stringFromIslObj(Deps) << "\n";);
Schedule = pluto_schedule(Domain, Deps, Options);
pluto_options_free(Options);
@@ -146,15 +137,15 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
if (!Schedule)
return false;
- Schedule = isl_union_map_apply_domain(Schedule,
- isl_union_map_reverse(ToPlutoNames));
+ Schedule =
+ isl_union_map_apply_domain(Schedule, isl_union_map_reverse(ToPlutoNames));
for (Scop::iterator SI = S.begin(), SE = S.end(); SI != SE; ++SI) {
ScopStmt *Stmt = *SI;
isl_set *Domain = Stmt->getDomain();
isl_union_map *StmtBand;
StmtBand = isl_union_map_intersect_domain(isl_union_map_copy(Schedule),
- isl_union_set_from_set(Domain));
+ isl_union_set_from_set(Domain));
isl_map *StmtSchedule;
isl_union_map_foreach_map(StmtBand, getSingleMap, &StmtSchedule);
Stmt->setScattering(StmtSchedule);
@@ -172,23 +163,21 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
return false;
}
-void PlutoOptimizer::printScop(raw_ostream &OS) const {
-}
+void PlutoOptimizer::printScop(raw_ostream &OS) const {}
void PlutoOptimizer::getAnalysisUsage(AnalysisUsage &AU) const {
ScopPass::getAnalysisUsage(AU);
AU.addRequired<Dependences>();
}
+Pass *polly::createPlutoOptimizerPass() { return new PlutoOptimizer(); }
+
INITIALIZE_PASS_BEGIN(PlutoOptimizer, "polly-opt-pluto",
- "Polly - Optimize schedule of SCoP (Pluto)", false, false)
-INITIALIZE_PASS_DEPENDENCY(Dependences)
-INITIALIZE_PASS_DEPENDENCY(ScopInfo)
+ "Polly - Optimize schedule of SCoP (Pluto)", false,
+ false);
+INITIALIZE_PASS_DEPENDENCY(Dependences);
+INITIALIZE_PASS_DEPENDENCY(ScopInfo);
INITIALIZE_PASS_END(PlutoOptimizer, "polly-opt-pluto",
- "Polly - Optimize schedule of SCoP (Pluto)", false, false)
-
-Pass* polly::createPlutoOptimizerPass() {
- return new PlutoOptimizer();
-}
+ "Polly - Optimize schedule of SCoP (Pluto)", false, false)
#endif // PLUTO_FOUND
OpenPOWER on IntegriCloud