[llvm] 062276c - [SLP] clean up code in gather(); NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 22 06:26:50 PDT 2020
Author: Sanjay Patel
Date: 2020-09-22T09:21:20-04:00
New Revision: 062276c691099f977e69c101f21c1a9ac549f283
URL: https://github.com/llvm/llvm-project/commit/062276c691099f977e69c101f21c1a9ac549f283
DIFF: https://github.com/llvm/llvm-project/commit/062276c691099f977e69c101f21c1a9ac549f283.diff
LOG: [SLP] clean up code in gather(); NFC
1. Use range for-loop to avoid repeatedly accessing end index.
2. Better variable names.
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 8f73d5ccc472..da3342fa8eb7 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -4138,24 +4138,25 @@ Value *BoUpSLP::gather(ArrayRef<Value *> VL) {
isa<StoreInst>(VL[0]) ? cast<StoreInst>(VL[0])->getValueOperand() : VL[0];
FixedVectorType *VecTy = FixedVectorType::get(Val0->getType(), VL.size());
Value *Vec = UndefValue::get(VecTy);
- for (unsigned i = 0; i < VecTy->getNumElements(); ++i) {
- Vec = Builder.CreateInsertElement(Vec, VL[i], Builder.getInt32(i));
- if (auto *Insrt = dyn_cast<InsertElementInst>(Vec)) {
- GatherSeq.insert(Insrt);
- CSEBlocks.insert(Insrt->getParent());
-
- // Add to our 'need-to-extract' list.
- if (TreeEntry *E = getTreeEntry(VL[i])) {
- // Find which lane we need to extract.
- unsigned FoundLane =
- std::distance(E->Scalars.begin(), find(E->Scalars, VL[i]));
- assert(FoundLane < E->Scalars.size() && "Could not find extract lane");
- if (!E->ReuseShuffleIndices.empty()) {
- FoundLane = std::distance(E->ReuseShuffleIndices.begin(),
- find(E->ReuseShuffleIndices, FoundLane));
- }
- ExternalUses.push_back(ExternalUser(VL[i], Insrt, FoundLane));
+ unsigned InsIndex = 0;
+ for (Value *Val : VL) {
+ Vec = Builder.CreateInsertElement(Vec, Val, Builder.getInt32(InsIndex++));
+ auto *InsElt = dyn_cast<InsertElementInst>(Vec);
+ if (!InsElt)
+ continue;
+ GatherSeq.insert(InsElt);
+ CSEBlocks.insert(InsElt->getParent());
+ // Add to our 'need-to-extract' list.
+ if (TreeEntry *Entry = getTreeEntry(Val)) {
+ // Find which lane we need to extract.
+ unsigned FoundLane = std::distance(Entry->Scalars.begin(),
+ find(Entry->Scalars, Val));
+ assert(FoundLane < Entry->Scalars.size() && "Couldn't find extract lane");
+ if (!Entry->ReuseShuffleIndices.empty()) {
+ FoundLane = std::distance(Entry->ReuseShuffleIndices.begin(),
+ find(Entry->ReuseShuffleIndices, FoundLane));
}
+ ExternalUses.push_back(ExternalUser(Val, InsElt, FoundLane));
}
}
More information about the llvm-commits
mailing list