[llvm] 6e0a333 - [LV] Use Builder.CreateVectorReverse directly. (NFC)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 2 11:12:15 PST 2022
Author: Florian Hahn
Date: 2022-01-02T19:09:30Z
New Revision: 6e0a333f7120cb2a327c62c3983d7fe9b6ffca92
URL: https://github.com/llvm/llvm-project/commit/6e0a333f7120cb2a327c62c3983d7fe9b6ffca92
DIFF: https://github.com/llvm/llvm-project/commit/6e0a333f7120cb2a327c62c3983d7fe9b6ffca92.diff
LOG: [LV] Use Builder.CreateVectorReverse directly. (NFC)
IRBuilder::CreateVectorReverse already handles all cases required by
LoopVectorize. It can be used directly instead of reverseVector.
Added:
Modified:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index e9db5042753ff..bb56918421116 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -633,9 +633,6 @@ class InnerLoopVectorizer {
/// Returns true if we should generate a scalar version of \p IV.
bool needsScalarInduction(Instruction *IV) const;
- /// Generate a shuffle sequence that will reverse the vector Vec.
- virtual Value *reverseVector(Value *Vec);
-
/// Returns (and creates if needed) the original loop trip count.
Value *getOrCreateTripCount(Loop *NewLoop);
@@ -849,7 +846,6 @@ class InnerLoopUnroller : public InnerLoopVectorizer {
private:
Value *getBroadcastInstrs(Value *V) override;
- Value *reverseVector(Value *Vec) override;
};
/// Encapsulate information regarding vectorization of a loop and its epilogue.
@@ -2701,11 +2697,6 @@ void InnerLoopVectorizer::packScalarIntoVectorValue(VPValue *Def,
State.set(Def, VectorValue, Instance.Part);
}
-Value *InnerLoopVectorizer::reverseVector(Value *Vec) {
- assert(Vec->getType()->isVectorTy() && "Invalid type");
- return Builder.CreateVectorReverse(Vec, "reverse");
-}
-
// Return whether we allow using masked interleave-groups (for dealing with
// strided loads/stores that reside in predicated blocks, or for dealing
// with gaps).
@@ -2868,7 +2859,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
}
if (Group->isReverse())
- StridedVec = reverseVector(StridedVec);
+ StridedVec = Builder.CreateVectorReverse(StridedVec, "reverse");
State.set(VPDefs[J], StridedVec, Part);
}
@@ -2904,7 +2895,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
Value *StoredVec = State.get(StoredValues[i], Part);
if (Group->isReverse())
- StoredVec = reverseVector(StoredVec);
+ StoredVec = Builder.CreateVectorReverse(StoredVec, "reverse");
// If this member has
diff erent type, cast it to a unified type.
@@ -8042,8 +8033,6 @@ void LoopVectorizationPlanner::collectTriviallyDeadInstructions(
}
}
-Value *InnerLoopUnroller::reverseVector(Value *Vec) { return Vec; }
-
Value *InnerLoopUnroller::getBroadcastInstrs(Value *V) { return V; }
static void AddRuntimeUnrollDisableMetaData(Loop *L) {
More information about the llvm-commits
mailing list