diff options
author | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2016-07-24 07:24:54 +0000 |
---|---|---|
committer | Elena Demikhovsky <elena.demikhovsky@intel.com> | 2016-07-24 07:24:54 +0000 |
commit | 376a18bd92be99385d3f9b2c159775b22603fd6f (patch) | |
tree | 8a614e329fe0f00624605a3574bd8327de9b60d6 /llvm/lib/Transforms/Scalar/LoopInterchange.cpp | |
parent | 93ea19b9a63f6c3f5d60d211b518051e2c714803 (diff) | |
download | llvm-376a18bd92be99385d3f9b2c159775b22603fd6f.zip llvm-376a18bd92be99385d3f9b2c159775b22603fd6f.tar.gz llvm-376a18bd92be99385d3f9b2c159775b22603fd6f.tar.bz2 |
[Loop Vectorizer] Handling loops FP induction variables.
Allowed loop vectorization with secondary FP IVs. Like this:
float *A;
float x = init;
for (int i=0; i < N; ++i) {
A[i] = x;
x -= fp_inc;
}
The auto-vectorization is possible when the induction binary operator is "fast" or the function has "unsafe" attribute.
Differential Revision: https://reviews.llvm.org/D21330
llvm-svn: 276554
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopInterchange.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/LoopInterchange.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp index 9241ec3..70d014f 100644 --- a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp +++ b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp @@ -703,7 +703,7 @@ bool LoopInterchangeLegality::findInductionAndReductions( RecurrenceDescriptor RD; InductionDescriptor ID; PHINode *PHI = cast<PHINode>(I); - if (InductionDescriptor::isInductionPHI(PHI, SE, ID)) + if (InductionDescriptor::isInductionPHI(PHI, L, SE, ID)) Inductions.push_back(PHI); else if (RecurrenceDescriptor::isReductionPHI(PHI, L, RD)) Reductions.push_back(PHI); |