Switch default code generation backend to isl
authorTobias Grosser <tobias@grosser.es>
Sun, 16 Nov 2014 17:02:11 +0000 (17:02 +0000)
committerTobias Grosser <tobias@grosser.es>
Sun, 16 Nov 2014 17:02:11 +0000 (17:02 +0000)
commitb05b038b818ae671b4f87ad6d703e6f76fbb6750
tree7fb6794008301b167f2612e657a194b79d2d3086
parent0fa125a77d4c960837c36c30ce8cecf8262f35e9
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.

llvm-svn: 222101
polly/lib/Support/RegisterPasses.cpp
polly/test/Isl/CodeGen/MemAccess/simple_analyze.ll