[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