Add scalar and phi code generation
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>
Fri, 22 May 2015 23:43:58 +0000 (23:43 +0000)
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>
Fri, 22 May 2015 23:43:58 +0000 (23:43 +0000)
commitecff11dcfb495f257b72bab2a53c83da9f9d4afe
treea320a03176b7bdbe746e1b658c6c8c84b4e94bca
parent755d58a463e0f11897470b21e9071661f590c867
Add scalar and phi code generation

  To reduce compile time and to allow more and better quality SCoPs in
  the long run we introduced scalar dependences and PHI-modeling. This
  patch will now allow us to generate code if one or both of those
  options are set. While the principle of demoting scalars as well as
  PHIs to memory in order to communicate their value stays the same,
  this allows to delay the demotion till the very end (the actual code
  generation). Consequently:
    - We __almost__ do not modify the code if we do not generate code
      for an optimized SCoP in the end. Thus, the early exit as well as
      the unprofitable option will now actually preven us from
      introducing regressions in case we will probably not get better
      code.
    - Polly can be used as a "pure" analyzer tool as long as the code
      generator is set to none.
    - The original SCoP is almost not touched when the optimized version
      is placed next to it. Runtime regressions if the runtime checks
      chooses the original are not to be expected and later
      optimizations do not need to revert the demotion for that part.
    - We will generate direct accesses to the demoted values, thus there
      are no "trivial GEPs" that select the first element of a scalar we
      demoted and treated as an array.

Differential Revision: http://reviews.llvm.org/D7513

llvm-svn: 238070
13 files changed:
polly/include/polly/CodeGen/BlockGenerators.h
polly/include/polly/CodeGen/IslNodeBuilder.h
polly/include/polly/ScopInfo.h
polly/lib/Analysis/ScopInfo.cpp
polly/lib/CodeGen/BlockGenerators.cpp
polly/lib/CodeGen/CodeGeneration.cpp
polly/test/Isl/CodeGen/phi_condition_modeling_1.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_condition_modeling_2.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_conditional_simple_1.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_loop_carried_float.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_loop_carried_float_escape.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_scalar_simple_1.ll [new file with mode: 0644]
polly/test/Isl/CodeGen/phi_scalar_simple_2.ll [new file with mode: 0644]