summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polly/lib/Transform/Pluto.cpp94
1 files changed, 92 insertions, 2 deletions
diff --git a/polly/lib/Transform/Pluto.cpp b/polly/lib/Transform/Pluto.cpp
index 9c73c162c2d..8bf713718ed 100644
--- a/polly/lib/Transform/Pluto.cpp
+++ b/polly/lib/Transform/Pluto.cpp
@@ -31,9 +31,84 @@ using namespace llvm;
using namespace polly;
static cl::opt<bool> EnableTiling("polly-pluto-tile", cl::desc("Enable tiling"),
- cl::Hidden, cl::init(false),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
cl::cat(PollyCategory));
+static cl::opt<bool> EnableIntraTiling("polly-pluto-intratileopt",
+ cl::desc("Enable intratiling"),
+ cl::Hidden, cl::init(true),
+ cl::ZeroOrMore, cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoDebug("polly-pluto-debug",
+ cl::desc("Enable pluto debug"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoMoreDebug("polly-pluto-moredebug",
+ cl::desc("Enable more pluto debugging"),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoParallel("polly-pluto-parallel",
+ cl::desc("Enable pluto parallel transforms"),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool>
+PlutoInnerParallel("polly-pluto-innerpara",
+ cl::desc("Enable inner parallelism instead of piped."),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool>
+PlutoIdentity("polly-pluto-identity",
+ cl::desc("Enable pluto identity transformation"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoUnroll("polly-pluto-unroll",
+ cl::desc("Enable pluto unrolling"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoRar("polly-pluto-rar",
+ cl::desc("Enable pluto rar deps"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoParaPipe("polly-pluto-multipipe",
+ cl::desc("Enable multipipe parallelism"),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoL2Tile("polly-pluto-l2tile",
+ cl::desc("Enable L2 tiling"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoPollyUnroll("polly-pluto-pollyunroll",
+ cl::desc("Enable pluto polly unrolling"),
+ cl::Hidden, cl::init(false),
+ cl::ZeroOrMore, cl::cat(PollyCategory));
+
+static cl::opt<bool>
+PlutoIslDep("polly-pluto-isldep",
+ cl::desc("Enable pluto isl dependency scanning"), cl::Hidden,
+ cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoIslDepCompact(
+ "polly-pluto-isldepcom", cl::desc("Enable pluto isl dependency compaction"),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoIslSolve("polly-pluto-islsolve",
+ cl::desc("Enable pluto isl solver"),
+ cl::Hidden, cl::init(false), cl::ZeroOrMore,
+ cl::cat(PollyCategory));
+
+static cl::opt<bool> PlutoLastWriter("polly-pluto-lastwriter",
+ cl::desc("Enable pluto lastwriter"),
+ cl::Hidden, cl::init(false),
+ cl::ZeroOrMore, cl::cat(PollyCategory));
+
namespace {
/// Convert an int into a string.
static std::string convertInt(int number) {
@@ -124,8 +199,23 @@ bool PlutoOptimizer::runOnScop(Scop &S) {
Domain = isl_union_set_apply(Domain, isl_union_map_copy(ToPlutoNames));
Options = pluto_options_alloc();
- Options->fuse = 0;
+ Options->debug = PlutoDebug;
+ Options->fuse = 2;
+ Options->identity = PlutoIdentity;
+ Options->innerpar = PlutoInnerParallel;
+ Options->intratileopt = EnableIntraTiling;
+ Options->isldep = PlutoIslDep;
+ Options->isldepcompact = PlutoIslDepCompact;
+ Options->islsolve = PlutoIslSolve;
+ Options->l2tile = PlutoL2Tile;
+ Options->lastwriter = PlutoLastWriter;
+ Options->moredebug = PlutoMoreDebug;
+ Options->multipipe = PlutoParaPipe;
+ Options->parallel = PlutoParallel;
+ Options->polyunroll = PlutoPollyUnroll;
+ Options->rar = PlutoRar;
Options->tile = EnableTiling;
+ Options->unroll = PlutoUnroll;
DEBUG(dbgs() << "Domain: " << stringFromIslObj(Domain) << "\n";
dbgs() << "Dependences: " << stringFromIslObj(Deps) << "\n";);
OpenPOWER on IntegriCloud