mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-01 01:30:36 +00:00
Remove the use of LPPassManager. We can remove LPM because we dont need to run any additional loop passes on the new vector loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169016 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1e5cbcb10a
commit
f735a7f88d
@ -114,9 +114,8 @@ public:
|
|||||||
/// Ctor.
|
/// Ctor.
|
||||||
SingleBlockLoopVectorizer(Loop *Orig, ScalarEvolution *Se, LoopInfo *Li,
|
SingleBlockLoopVectorizer(Loop *Orig, ScalarEvolution *Se, LoopInfo *Li,
|
||||||
DominatorTree *Dt, DataLayout *Dl,
|
DominatorTree *Dt, DataLayout *Dl,
|
||||||
LPPassManager *Lpm,
|
|
||||||
unsigned VecWidth):
|
unsigned VecWidth):
|
||||||
OrigLoop(Orig), SE(Se), LI(Li), DT(Dt), DL(Dl), LPM(Lpm), VF(VecWidth),
|
OrigLoop(Orig), SE(Se), LI(Li), DT(Dt), DL(Dl), VF(VecWidth),
|
||||||
Builder(Se->getContext()), Induction(0), OldInduction(0) { }
|
Builder(Se->getContext()), Induction(0), OldInduction(0) { }
|
||||||
|
|
||||||
// Perform the actual loop widening (vectorization).
|
// Perform the actual loop widening (vectorization).
|
||||||
@ -181,8 +180,6 @@ private:
|
|||||||
DominatorTree *DT;
|
DominatorTree *DT;
|
||||||
// Data Layout.
|
// Data Layout.
|
||||||
DataLayout *DL;
|
DataLayout *DL;
|
||||||
// Loop Pass Manager;
|
|
||||||
LPPassManager *LPM;
|
|
||||||
// The vectorization factor to use.
|
// The vectorization factor to use.
|
||||||
unsigned VF;
|
unsigned VF;
|
||||||
|
|
||||||
@ -491,7 +488,7 @@ struct LoopVectorize : public LoopPass {
|
|||||||
"\n");
|
"\n");
|
||||||
|
|
||||||
// If we decided that it is *legal* to vectorizer the loop then do it.
|
// If we decided that it is *legal* to vectorizer the loop then do it.
|
||||||
SingleBlockLoopVectorizer LB(L, SE, LI, DT, DL, &LPM, VF);
|
SingleBlockLoopVectorizer LB(L, SE, LI, DT, DL, VF);
|
||||||
LB.vectorize(&LVL);
|
LB.vectorize(&LVL);
|
||||||
|
|
||||||
DEBUG(verifyFunction(*L->getHeader()->getParent()));
|
DEBUG(verifyFunction(*L->getHeader()->getParent()));
|
||||||
@ -969,19 +966,22 @@ SingleBlockLoopVectorizer::createEmptyLoop(LoopVectorizationLegality *Legal) {
|
|||||||
// Get ready to start creating new instructions into the vectorized body.
|
// Get ready to start creating new instructions into the vectorized body.
|
||||||
Builder.SetInsertPoint(VecBody->getFirstInsertionPt());
|
Builder.SetInsertPoint(VecBody->getFirstInsertionPt());
|
||||||
|
|
||||||
// Register the new loop.
|
// Create and register the new vector loop.
|
||||||
Loop* Lp = new Loop();
|
Loop* Lp = new Loop();
|
||||||
LPM->insertLoop(Lp, OrigLoop->getParentLoop());
|
|
||||||
|
|
||||||
Lp->addBasicBlockToLoop(VecBody, LI->getBase());
|
|
||||||
|
|
||||||
Loop *ParentLoop = OrigLoop->getParentLoop();
|
Loop *ParentLoop = OrigLoop->getParentLoop();
|
||||||
|
|
||||||
|
// Insert the new loop into the loop nest and register the new basic blocks.
|
||||||
if (ParentLoop) {
|
if (ParentLoop) {
|
||||||
|
ParentLoop->addChildLoop(Lp);
|
||||||
ParentLoop->addBasicBlockToLoop(ScalarPH, LI->getBase());
|
ParentLoop->addBasicBlockToLoop(ScalarPH, LI->getBase());
|
||||||
ParentLoop->addBasicBlockToLoop(VectorPH, LI->getBase());
|
ParentLoop->addBasicBlockToLoop(VectorPH, LI->getBase());
|
||||||
ParentLoop->addBasicBlockToLoop(MiddleBlock, LI->getBase());
|
ParentLoop->addBasicBlockToLoop(MiddleBlock, LI->getBase());
|
||||||
|
} else {
|
||||||
|
LI->addTopLevelLoop(Lp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Lp->addBasicBlockToLoop(VecBody, LI->getBase());
|
||||||
|
|
||||||
// Save the state.
|
// Save the state.
|
||||||
LoopVectorPreHeader = VectorPH;
|
LoopVectorPreHeader = VectorPH;
|
||||||
LoopScalarPreHeader = ScalarPH;
|
LoopScalarPreHeader = ScalarPH;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user