Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates
authorSilviu Baranga <silviu.baranga@arm.com>
Mon, 9 Nov 2015 13:26:09 +0000 (13:26 +0000)
committerSilviu Baranga <silviu.baranga@arm.com>
Mon, 9 Nov 2015 13:26:09 +0000 (13:26 +0000)
commit9517cbd9fb02691cba4e279b8bf0ced8697897f8
treef9cc1e3edb923ca8502f8f99333c068546d9967b
parent1e9e8c6572ab99f36e5aa3d1f3f127fcedbfea43
Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates

Summary:
LAA currently generates a set of SCEV predicates that must be checked by users.
In the case of Loop Distribute/Loop Load Elimination, no such predicates could have
been emitted, since we don't allow stride versioning. However, in the future there
could be SCEV predicates that will need to be checked.

This change adds support for SCEV predicate versioning in the Loop Distribute, Loop
Load Eliminate and the loop versioning infrastructure.

Reviewers: anemet

Subscribers: mssimpso, sanjoy, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252467 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ScalarEvolution.h
include/llvm/Transforms/Utils/LoopVersioning.h
lib/Transforms/Scalar/LoopDistribute.cpp
lib/Transforms/Scalar/LoopLoadElimination.cpp
lib/Transforms/Utils/LoopVersioning.cpp
test/Transforms/LoopDistribute/basic-with-memchecks.ll
test/Transforms/LoopLoadElim/forward.ll
test/Transforms/LoopLoadElim/memcheck.ll