Use schedule trees to perform post-scheduling transformations
authorTobias Grosser <tobias@grosser.es>
Sun, 22 Mar 2015 12:06:39 +0000 (12:06 +0000)
committerTobias Grosser <tobias@grosser.es>
Sun, 22 Mar 2015 12:06:39 +0000 (12:06 +0000)
commitbbb4cec2e87164c355b5b8509315530ab6a402fd
tree82e12973881b57e5bc2e91200276eec3f758c8bf
parenteefb2e270327d4cc0497d5574863e25b5c0cbc82
Use schedule trees to perform post-scheduling transformations

Replacing the old band_tree based code with code that is based on the new
schedule tree [1] interface makes applying complex schedule transformations a lot
more straightforward. We now do not need to reason about the meaning of flat
schedules, but can use a more straightforward tree structure. We do not yet
exploit this a lot in the current code, but hopefully we will be able to do so
soon.

This change also allows us to drop some code, as isl now provides some higher
level interfaces to apply loop transformations such as tiling.

This change causes some small test case changes as isl uses a slightly different
way to perform loop tiling, but no significant functional changes are intended.

[1] http://impact.gforge.inria.fr/impact2014/papers/impact2014-verdoolaege.pdf

llvm-svn: 232911
polly/lib/Transform/ScheduleOptimizer.cpp
polly/test/ScheduleOptimizer/line-tiling-2.ll
polly/test/ScheduleOptimizer/line-tiling.ll
polly/test/ScheduleOptimizer/one-dimensional-band.ll [new file with mode: 0644]
polly/test/ScheduleOptimizer/prevectorization.ll
polly/test/ScheduleOptimizer/rectangular-tiling.ll