mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-13 07:50:41 +00:00
[LV] Remove redundant basic block split
This patch is part of D28975's breakdown. Genreating the control-flow to guard predicated instructions modified to only use SplitBlockAndInsertIfThen() for producing the if-then construct. Differential Revision: https://reviews.llvm.org/D32224 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301293 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42e83493f6
commit
e9d7fd8bfe
@ -4516,14 +4516,15 @@ void InnerLoopVectorizer::predicateInstructions() {
|
||||
for (auto KV : PredicatedInstructions) {
|
||||
BasicBlock::iterator I(KV.first);
|
||||
BasicBlock *Head = I->getParent();
|
||||
auto *BB = SplitBlock(Head, &*std::next(I), DT, LI);
|
||||
auto *T = SplitBlockAndInsertIfThen(KV.second, &*I, /*Unreachable=*/false,
|
||||
/*BranchWeights=*/nullptr, DT, LI);
|
||||
I->moveBefore(T);
|
||||
sinkScalarOperands(&*I);
|
||||
|
||||
I->getParent()->setName(Twine("pred.") + I->getOpcodeName() + ".if");
|
||||
BB->setName(Twine("pred.") + I->getOpcodeName() + ".continue");
|
||||
BasicBlock *PredicatedBlock = I->getParent();
|
||||
Twine BBNamePrefix = Twine("pred.") + I->getOpcodeName();
|
||||
PredicatedBlock->setName(BBNamePrefix + ".if");
|
||||
PredicatedBlock->getSingleSuccessor()->setName(BBNamePrefix + ".continue");
|
||||
|
||||
// If the instruction is non-void create a Phi node at reconvergence point.
|
||||
if (!I->getType()->isVoidTy()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user