[llvm] 1c7126d - [VPlan] Combine LiveIns fields into MapVector (NFC) (#170220)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 9 23:09:25 PST 2025
Author: Ramkumar Ramachandra
Date: 2025-12-10T07:09:21Z
New Revision: 1c7126d8dbeb542ec158665198c8106b8aaad180
URL: https://github.com/llvm/llvm-project/commit/1c7126d8dbeb542ec158665198c8106b8aaad180
DIFF: https://github.com/llvm/llvm-project/commit/1c7126d8dbeb542ec158665198c8106b8aaad180.diff
LOG: [VPlan] Combine LiveIns fields into MapVector (NFC) (#170220)
Combine Value2VPValue and VPLiveIns into a single MapVector LiveIns
field, simplifying users.
Added:
Modified:
llvm/lib/Transforms/Vectorize/VPlan.h
llvm/lib/Transforms/Vectorize/VPlanValue.h
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h
index afb654ed882f4..2ef7b5405668d 100644
--- a/llvm/lib/Transforms/Vectorize/VPlan.h
+++ b/llvm/lib/Transforms/Vectorize/VPlan.h
@@ -25,7 +25,7 @@
#define LLVM_TRANSFORMS_VECTORIZE_VPLAN_H
#include "VPlanValue.h"
-#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Twine.h"
@@ -4325,13 +4325,9 @@ class VPlan {
/// Represents the loop-invariant VF * UF of the vector loop region.
VPValue VFxUF;
- /// Holds a mapping between Values and their corresponding VPValue inside
- /// VPlan.
- Value2VPValueTy Value2VPValue;
-
- /// Contains all the external definitions created for this VPlan. External
- /// definitions are VPValues that hold a pointer to their underlying IR.
- SmallVector<VPValue *, 16> VPLiveIns;
+ /// Contains all the external definitions created for this VPlan, as a mapping
+ /// from IR Values to VPValues.
+ SmallMapVector<Value *, VPValue *, 16> LiveIns;
/// Blocks allocated and owned by the VPlan. They will be deleted once the
/// VPlan is destroyed.
@@ -4528,10 +4524,9 @@ class VPlan {
/// yet) for \p V.
VPValue *getOrAddLiveIn(Value *V) {
assert(V && "Trying to get or add the VPValue of a null Value");
- auto [It, Inserted] = Value2VPValue.try_emplace(V);
+ auto [It, Inserted] = LiveIns.try_emplace(V);
if (Inserted) {
VPValue *VPV = new VPValue(V);
- VPLiveIns.push_back(VPV);
assert(VPV->isLiveIn() && "VPV must be a live-in.");
It->second = VPV;
}
@@ -4563,17 +4558,10 @@ class VPlan {
}
/// Return the live-in VPValue for \p V, if there is one or nullptr otherwise.
- VPValue *getLiveIn(Value *V) const { return Value2VPValue.lookup(V); }
+ VPValue *getLiveIn(Value *V) const { return LiveIns.lookup(V); }
/// Return the list of live-in VPValues available in the VPlan.
- ArrayRef<VPValue *> getLiveIns() const {
- assert(all_of(Value2VPValue,
- [this](const auto &P) {
- return is_contained(VPLiveIns, P.second);
- }) &&
- "all VPValues in Value2VPValue must also be in VPLiveIns");
- return VPLiveIns;
- }
+ auto getLiveIns() const { return LiveIns.values(); }
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
/// Print the live-ins of this VPlan to \p O.
diff --git a/llvm/lib/Transforms/Vectorize/VPlanValue.h b/llvm/lib/Transforms/Vectorize/VPlanValue.h
index b9f5847ec731c..8849ccc6184fc 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanValue.h
+++ b/llvm/lib/Transforms/Vectorize/VPlanValue.h
@@ -20,10 +20,8 @@
#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H
#define LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H
-#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/Compiler.h"
@@ -196,9 +194,6 @@ class LLVM_ABI_FOR_TEST VPValue {
}
};
-typedef DenseMap<Value *, VPValue *> Value2VPValueTy;
-typedef DenseMap<VPValue *, Value *> VPValue2ValueTy;
-
LLVM_ABI_FOR_TEST raw_ostream &operator<<(raw_ostream &OS,
const VPRecipeBase &R);
More information about the llvm-commits
mailing list