Lines Matching full:polly

1 //===------ RegisterPasses.cpp - Add the Polly Passes to default passes  --===//
9 // This file composes the individual LLVM-IR passes provided by Polly to a
11 // made available to LLVM based compilers by loading the Polly shared library
14 // The Polly optimizer is made available by executing a static constructor that
15 // registers the individual Polly passes in the LLVM pass manager builder. The
17 // changed, but that the flag '-polly' provided at optimization level '-O3'
21 #include "polly/RegisterPasses.h"
22 #include "polly/Canonicalization.h"
23 #include "polly/CodeGen/CodeGeneration.h"
24 #include "polly/CodeGen/IslAst.h"
25 #include "polly/CodePreparation.h"
26 #include "polly/DeLICM.h"
27 #include "polly/DeadCodeElimination.h"
28 #include "polly/DependenceInfo.h"
29 #include "polly/ForwardOpTree.h"
30 #include "polly/JSONExporter.h"
31 #include "polly/LinkAllPasses.h"
32 #include "polly/MaximalStaticExpansion.h"
33 #include "polly/PolyhedralInfo.h"
34 #include "polly/PruneUnprofitable.h"
35 #include "polly/ScheduleOptimizer.h"
36 #include "polly/ScopDetection.h"
37 #include "polly/ScopGraphPrinter.h"
38 #include "polly/ScopInfo.h"
39 #include "polly/Simplify.h"
40 #include "polly/Support/DumpFunctionPass.h"
41 #include "polly/Support/DumpModulePass.h"
60 cl::OptionCategory PollyCategory("Polly Options",
61 "Configure the polly loop optimizer");
63 namespace polly {
65 PollyEnabled("polly",
66 cl::desc("Enable the polly optimizer (with -O1, -O2 or -O3)"),
70 "polly-only-scop-detection",
79 "polly-position", cl::desc("Where to run polly in the pass pipeline"),
86 Optimizer("polly-optimizer", cl::desc("Select the scheduling optimizer"),
94 "polly-code-generation", cl::desc("How much code-generation to perform"),
103 "polly-vectorizer", cl::desc("Select the vectorization strategy"),
113 "polly-import",
118 "polly-enable-mse",
123 "polly-export",
127 static cl::opt<bool> DeadCodeElim("polly-run-dce",
132 "polly-show",
138 "polly-show-only",
144 PollyPrinter("polly-dot", cl::desc("Enable the Polly DOT printer in -O3"),
145 cl::Hidden, cl::value_desc("Run the Polly DOT printer at -O3"),
149 "polly-dot-only",
150 cl::desc("Enable the Polly DOT printer in -O3 (no BB content)"), cl::Hidden,
151 cl::value_desc("Run the Polly DOT printer at -O3 (no BB content"),
155 CFGPrinter("polly-view-cfg",
156 cl::desc("Show the Polly CFG right after code generation"),
160 EnableForwardOpTree("polly-enable-optree",
165 DumpBefore("polly-dump-before",
166 cl::desc("Dump module before Polly transformations into a file "
171 "polly-dump-before-file",
172 cl::desc("Dump module before Polly transformations to the given file"),
176 DumpAfter("polly-dump-after",
177 cl::desc("Dump module after Polly transformations into a file "
182 "polly-dump-after-file",
183 cl::desc("Dump module after Polly transformations to the given file"),
187 EnableDeLICM("polly-enable-delicm",
192 EnableSimplify("polly-enable-simplify",
197 "polly-enable-prune-unprofitable",
203 /// Initialize Polly passes when library is loaded.
206 /// different Polly passes right after the Polly library is loaded. This ensures
207 /// that the Polly passes are available e.g. in the 'opt' tool.
211 polly::initializePollyPasses(Registry);
268 /// Register Polly passes such that they form a polyhedral optimizer.
270 /// The individual Polly passes are registered in the pass manager such that
281 /// a graphical view of the scops (Polly[Only]Viewer, Polly[Only]Printer), that
285 /// For certain parts of the Polly optimizer, several alternatives are provided:
289 /// It is also possible to run Polly with no optimizer. This mode is mainly
293 /// Polly supports the isl internal code generator.
295 /// Add the pass sequence required for Polly to the New Pass Manager.
298 /// @param Level The optimization level. Used for the cleanup of Polly's
300 /// @param EnableForOpt Whether to add Polly IR transformations. If False, only
301 /// the analysis passes are added, skipping Polly itself.
425 "Option -polly-dump-before-file at -polly-position=late "
435 "Option -polly-dump-after-file at -polly-position=late "
471 "polly-scop-analyses", Name, FPM))
568 /// Register Polly to be available as an optimizer
571 /// We can currently run Polly at two different points int the pass manager.
574 /// The default is currently a), to register Polly such that it runs as early as
579 /// As nothing is run before Polly, it is necessary to run a set of preparing
580 /// transformations before Polly to canonicalize the LLVM-IR and to allow
581 /// Polly to detect and understand the code.
583 /// 2) We get the full -O3 optimization sequence after Polly
585 /// The LLVM-IR that is generated by Polly has been optimized on a high level,
587 /// Polly before all other passes, we have the full sequence of -O3
591 /// We are currently evaluating the benefit or running Polly at b). b) is nice
620 } // namespace polly
623 return {LLVM_PLUGIN_API_VERSION, "Polly", LLVM_VERSION_STRING,
624 polly::registerPollyPasses};