[polly] r222101 - Switch default code generation backend to isl
Tobias Grosser
tobias at grosser.es
Sun Nov 16 09:02:11 PST 2014
Author: grosser
Date: Sun Nov 16 11:02:11 2014
New Revision: 222101
URL: http://llvm.org/viewvc/llvm-project?rev=222101&view=rev
Log:
Switch default code generation backend to isl
The isl based backend has been tested since a long time and with the recently
commited OpenMP support the last missing piece of functionality was ported from
the CLooG backend.
The isl based backend gives us interesting new functionality:
- Run-time alias checks (enabled by default)
Optimize scops that contain possibly aliasing pointers. This feature has
largely increased the number of loop nests we consider for optimization.
Thanks Johannes!
- Delinearization (not yet enabled by default)
Model accesses to multi-dimensional arrays precisely. This will allow us to
understand kernels with multi-dimensional VLAs written in Julia, boost::ublas,
coremark or C99.
Thanks Sebastian!
- Generation of higher quality code
Sven and me spent a long time to optimize the quality of the generated code. A
major focus were expressions as they result from modulos/divisions or
piecewise affine expressions (a ? b : c).
- Full/Partial tile separation, polyhedral unrolling
The isl code generation provides functionality to generate specialized code
for core and cleanup loops and to specialize code using polyhedral context
information while unrolling statements.
(not yet exploited in Polly)
- Modifieable access functions
We can now use standard isl functionality to remap memory accesses to new
data locations. A standard use case is the use of shared memory, where
accesses to a larger region in global memory need to be mapped to a smaller
shared memory region using a modulo mapping.
(not yet exploited in Polly)
The cloog based code generation is still available for comparision, but is
scheduled for removal.
Modified:
polly/trunk/lib/Support/RegisterPasses.cpp
polly/trunk/test/Isl/CodeGen/MemAccess/simple_analyze.ll
Modified: polly/trunk/lib/Support/RegisterPasses.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Support/RegisterPasses.cpp?rev=222101&r1=222100&r2=222101&view=diff
==============================================================================
--- polly/trunk/lib/Support/RegisterPasses.cpp (original)
+++ polly/trunk/lib/Support/RegisterPasses.cpp Sun Nov 16 11:02:11 2014
@@ -67,7 +67,7 @@ static cl::opt<OptimizerChoice> Optimize
cl::cat(PollyCategory));
#ifdef CLOOG_FOUND
-enum CodeGenChoice DefaultCodeGen = CODEGEN_CLOOG;
+enum CodeGenChoice DefaultCodeGen = CODEGEN_ISL;
#else
enum CodeGenChoice DefaultCodeGen = CODEGEN_ISL;
#endif
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/simple_analyze.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/simple_analyze.ll?rev=222101&r1=222100&r2=222101&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/simple_analyze.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/simple_analyze.ll Sun Nov 16 11:02:11 2014
@@ -24,6 +24,7 @@ for.inc:
br label %for.cond
for.end: ; preds = %for.cond
+ fence seq_cst
br label %for.cond4
for.cond4: ; preds = %for.inc11, %for.end
More information about the llvm-commits
mailing list