[llvm] 9f449c3 - [SLP] NFC. Use TreeEntry::getOperand if setOperandsInOrder is called (#92727)
via llvm-commits
llvm-commits at lists.llvm.org
Mon May 20 03:46:33 PDT 2024
Author: Han-Kuan Chen
Date: 2024-05-20T18:46:30+08:00
New Revision: 9f449c34278191193f2f2cbc96c333548ad20238
URL: https://github.com/llvm/llvm-project/commit/9f449c34278191193f2f2cbc96c333548ad20238
DIFF: https://github.com/llvm/llvm-project/commit/9f449c34278191193f2f2cbc96c333548ad20238.diff
LOG: [SLP] NFC. Use TreeEntry::getOperand if setOperandsInOrder is called (#92727)
already.
Added:
Modified:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index d21b5e1cc0417..140a1b1ffbafe 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -6916,15 +6916,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
std::nullopt, CurrentOrder);
LLVM_DEBUG(dbgs() << "SLP: added inserts bundle.\n");
- constexpr int NumOps = 2;
- ValueList VectorOperands[NumOps];
- for (int I = 0; I < NumOps; ++I) {
- for (Value *V : VL)
- VectorOperands[I].push_back(cast<Instruction>(V)->getOperand(I));
-
- TE->setOperand(I, VectorOperands[I]);
- }
- buildTree_rec(VectorOperands[NumOps - 1], Depth + 1, {TE, NumOps - 1});
+ TE->setOperandsInOrder();
+ buildTree_rec(TE->getOperand(1), Depth + 1, {TE, 1});
return;
}
case Instruction::Load: {
@@ -7024,14 +7017,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
LLVM_DEBUG(dbgs() << "SLP: added a vector of casts.\n");
TE->setOperandsInOrder();
- for (unsigned I : seq<unsigned>(0, VL0->getNumOperands())) {
- ValueList Operands;
- // Prepare the operand vector.
- for (Value *V : VL)
- Operands.push_back(cast<Instruction>(V)->getOperand(I));
-
- buildTree_rec(Operands, Depth + 1, {TE, I});
- }
+ for (unsigned I : seq<unsigned>(0, VL0->getNumOperands()))
+ buildTree_rec(TE->getOperand(I), Depth + 1, {TE, I});
return;
}
case Instruction::ICmp:
@@ -7116,14 +7103,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
}
TE->setOperandsInOrder();
- for (unsigned I : seq<unsigned>(0, VL0->getNumOperands())) {
- ValueList Operands;
- // Prepare the operand vector.
- for (Value *V : VL)
- Operands.push_back(cast<Instruction>(V)->getOperand(I));
-
- buildTree_rec(Operands, Depth + 1, {TE, I});
- }
+ for (unsigned I : seq<unsigned>(0, VL0->getNumOperands()))
+ buildTree_rec(TE->getOperand(I), Depth + 1, {TE, I});
return;
}
case Instruction::GetElementPtr: {
@@ -7182,30 +7163,17 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
return;
}
case Instruction::Store: {
- // Check if the stores are consecutive or if we need to swizzle them.
- ValueList Operands(VL.size());
- auto *OIter = Operands.begin();
- for (Value *V : VL) {
- auto *SI = cast<StoreInst>(V);
- *OIter = SI->getValueOperand();
- ++OIter;
- }
- // Check that the sorted pointer operands are consecutive.
- if (CurrentOrder.empty()) {
- // Original stores are consecutive and does not require reordering.
- TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
- ReuseShuffleIndices);
- TE->setOperandsInOrder();
- buildTree_rec(Operands, Depth + 1, {TE, 0});
- LLVM_DEBUG(dbgs() << "SLP: added a vector of stores.\n");
- } else {
+ bool Consecutive = CurrentOrder.empty();
+ if (!Consecutive)
fixupOrderingIndices(CurrentOrder);
- TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
- ReuseShuffleIndices, CurrentOrder);
- TE->setOperandsInOrder();
- buildTree_rec(Operands, Depth + 1, {TE, 0});
+ TreeEntry *TE = newTreeEntry(VL, Bundle /*vectorized*/, S, UserTreeIdx,
+ ReuseShuffleIndices, CurrentOrder);
+ TE->setOperandsInOrder();
+ buildTree_rec(TE->getOperand(0), Depth + 1, {TE, 0});
+ if (Consecutive)
+ LLVM_DEBUG(dbgs() << "SLP: added a vector of stores.\n");
+ else
LLVM_DEBUG(dbgs() << "SLP: added a vector of jumbled stores.\n");
- }
return;
}
case Instruction::Call: {
@@ -7305,14 +7273,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,
}
TE->setOperandsInOrder();
- for (unsigned I : seq<unsigned>(0, VL0->getNumOperands())) {
- ValueList Operands;
- // Prepare the operand vector.
- for (Value *V : VL)
- Operands.push_back(cast<Instruction>(V)->getOperand(I));
-
- buildTree_rec(Operands, Depth + 1, {TE, I});
- }
+ for (unsigned I : seq<unsigned>(0, VL0->getNumOperands()))
+ buildTree_rec(TE->getOperand(I), Depth + 1, {TE, I});
return;
}
default:
More information about the llvm-commits
mailing list