[Mlir-commits] [mlir] 37bad56 - Revert "[MLIR][Presburger] Use `SmallVector` instead of `std::vector` in `getLocalRepr`"
Prashant Kumar
llvmlistbot at llvm.org
Fri Feb 4 09:54:16 PST 2022
Author: Prashant Kumar
Date: 2022-02-04T23:24:08+05:30
New Revision: 37bad565bf616d755cb44a267c8d61ea34fe9817
URL: https://github.com/llvm/llvm-project/commit/37bad565bf616d755cb44a267c8d61ea34fe9817
DIFF: https://github.com/llvm/llvm-project/commit/37bad565bf616d755cb44a267c8d61ea34fe9817.diff
LOG: Revert "[MLIR][Presburger] Use `SmallVector` instead of `std::vector` in `getLocalRepr`"
This reverts commit 3cc544772848682bc77ff63db659a5aa4b3d4e6b.
SmallVector inside SmallVector are not optimized.
Reviewed By: arjunp
Differential Revision: https://reviews.llvm.org/D119005
Added:
Modified:
mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h
mlir/include/mlir/Analysis/Presburger/Utils.h
mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp
mlir/lib/Analysis/Presburger/PresburgerSet.cpp
mlir/lib/Analysis/Presburger/Utils.cpp
mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h b/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h
index 42e274305a079..8156b7b71f3a2 100644
--- a/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h
+++ b/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h
@@ -285,14 +285,12 @@ class IntegerPolyhedron {
/// and the denominators in `denominators`. If no explicit representation
/// could be found for the `i^th` local identifier, `denominators[i]` is set
/// to 0.
- void
- getLocalReprs(SmallVectorImpl<SmallVector<int64_t, 8>> ÷nds,
- SmallVectorImpl<unsigned> &denominators,
- SmallVectorImpl<presburger_utils::MaybeLocalRepr> &repr) const;
- void
- getLocalReprs(SmallVectorImpl<presburger_utils::MaybeLocalRepr> &repr) const;
- void getLocalReprs(SmallVectorImpl<SmallVector<int64_t, 8>> ÷nds,
- SmallVectorImpl<unsigned> &denominators) const;
+ void getLocalReprs(std::vector<SmallVector<int64_t, 8>> ÷nds,
+ SmallVector<unsigned, 4> &denominators,
+ std::vector<presburger_utils::MaybeLocalRepr> &repr) const;
+ void getLocalReprs(std::vector<presburger_utils::MaybeLocalRepr> &repr) const;
+ void getLocalReprs(std::vector<SmallVector<int64_t, 8>> ÷nds,
+ SmallVector<unsigned, 4> &denominators) const;
/// The type of bound: equal, lower bound or upper bound.
enum BoundType { EQ, LB, UB };
diff --git a/mlir/include/mlir/Analysis/Presburger/Utils.h b/mlir/include/mlir/Analysis/Presburger/Utils.h
index 9e5edc0c64362..8e57ac151d258 100644
--- a/mlir/include/mlir/Analysis/Presburger/Utils.h
+++ b/mlir/include/mlir/Analysis/Presburger/Utils.h
@@ -65,7 +65,7 @@ MaybeLocalRepr computeSingleVarRepr(const IntegerPolyhedron &cst,
/// the divisions are not merged. `merge` can also do side effects, For example
/// it can merge the local identifiers in IntegerPolyhedron.
void removeDuplicateDivs(
- SmallVectorImpl<SmallVector<int64_t, 8>> &divs,
+ std::vector<SmallVector<int64_t, 8>> &divs,
SmallVectorImpl<unsigned> &denoms, unsigned localOffset,
llvm::function_ref<bool(unsigned i, unsigned j)> merge);
diff --git a/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp b/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp
index 4ebf674bc5201..578f854729707 100644
--- a/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp
+++ b/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp
@@ -829,24 +829,23 @@ bool IntegerPolyhedron::containsPoint(ArrayRef<int64_t> point) const {
return true;
}
-void IntegerPolyhedron::getLocalReprs(
- SmallVectorImpl<MaybeLocalRepr> &repr) const {
- SmallVector<SmallVector<int64_t, 8>> dividends(getNumLocalIds());
+void IntegerPolyhedron::getLocalReprs(std::vector<MaybeLocalRepr> &repr) const {
+ std::vector<SmallVector<int64_t, 8>> dividends(getNumLocalIds());
SmallVector<unsigned, 4> denominators(getNumLocalIds());
getLocalReprs(dividends, denominators, repr);
}
void IntegerPolyhedron::getLocalReprs(
- SmallVectorImpl<SmallVector<int64_t, 8>> ÷nds,
- SmallVectorImpl<unsigned> &denominators) const {
- SmallVector<MaybeLocalRepr> repr(getNumLocalIds());
+ std::vector<SmallVector<int64_t, 8>> ÷nds,
+ SmallVector<unsigned, 4> &denominators) const {
+ std::vector<MaybeLocalRepr> repr(getNumLocalIds());
getLocalReprs(dividends, denominators, repr);
}
void IntegerPolyhedron::getLocalReprs(
- SmallVectorImpl<SmallVector<int64_t, 8>> ÷nds,
- SmallVectorImpl<unsigned> &denominators,
- SmallVectorImpl<MaybeLocalRepr> &repr) const {
+ std::vector<SmallVector<int64_t, 8>> ÷nds,
+ SmallVector<unsigned, 4> &denominators,
+ std::vector<MaybeLocalRepr> &repr) const {
repr.resize(getNumLocalIds());
dividends.resize(getNumLocalIds());
@@ -1104,7 +1103,7 @@ void IntegerPolyhedron::mergeLocalIds(IntegerPolyhedron &other) {
polyB.insertLocalId(0, initLocals);
// Get division representations from each poly.
- SmallVector<SmallVector<int64_t, 8>> divsA, divsB;
+ std::vector<SmallVector<int64_t, 8>> divsA, divsB;
SmallVector<unsigned, 4> denomsA, denomsB;
polyA.getLocalReprs(divsA, denomsA);
polyB.getLocalReprs(divsB, denomsB);
diff --git a/mlir/lib/Analysis/Presburger/PresburgerSet.cpp b/mlir/lib/Analysis/Presburger/PresburgerSet.cpp
index 981bd563e1172..3a7be6efa5bbb 100644
--- a/mlir/lib/Analysis/Presburger/PresburgerSet.cpp
+++ b/mlir/lib/Analysis/Presburger/PresburgerSet.cpp
@@ -213,7 +213,7 @@ static void subtractRecursively(IntegerPolyhedron &b, Simplex &simplex,
// Find out which inequalities of sI correspond to division inequalities for
// the local variables of sI.
- SmallVector<MaybeLocalRepr> repr(sI.getNumLocalIds());
+ std::vector<MaybeLocalRepr> repr(sI.getNumLocalIds());
sI.getLocalReprs(repr);
// Add sI's locals to b, after b's locals. Also add b's locals to sI, before
diff --git a/mlir/lib/Analysis/Presburger/Utils.cpp b/mlir/lib/Analysis/Presburger/Utils.cpp
index a06304b1a266b..7dc7a26e0b5c5 100644
--- a/mlir/lib/Analysis/Presburger/Utils.cpp
+++ b/mlir/lib/Analysis/Presburger/Utils.cpp
@@ -160,14 +160,14 @@ static LogicalResult getDivRepr(const IntegerPolyhedron &cst, unsigned pos,
// Extract divisor, the divisor can be negative and hence its sign information
// is stored in `signDiv` to reverse the sign of dividend's coefficients.
- // Equality must involve the pos-th variable and hence `tempDiv` != 0.
- int64_t tempDiv = cst.atEq(eqInd, pos);
- if (tempDiv == 0)
+ // Equality must involve the pos-th variable and hence `temp_div` != 0.
+ int64_t temp_div = cst.atEq(eqInd, pos);
+ if (temp_div == 0)
return failure();
- int64_t signDiv = tempDiv < 0 ? -1 : 1;
+ int64_t signDiv = temp_div < 0 ? -1 : 1;
// The divisor is always a positive integer.
- divisor = tempDiv * signDiv;
+ divisor = temp_div * signDiv;
expr.resize(cst.getNumCols(), 0);
for (unsigned i = 0, e = cst.getNumIds(); i < e; ++i)
@@ -254,7 +254,7 @@ MaybeLocalRepr presburger_utils::computeSingleVarRepr(
}
void presburger_utils::removeDuplicateDivs(
- SmallVectorImpl<SmallVector<int64_t, 8>> &divs,
+ std::vector<SmallVector<int64_t, 8>> &divs,
SmallVectorImpl<unsigned> &denoms, unsigned localOffset,
llvm::function_ref<bool(unsigned i, unsigned j)> merge) {
diff --git a/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp b/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp
index 365d6dbe317c3..ccb8f3ea043d1 100644
--- a/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp
+++ b/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp
@@ -624,7 +624,7 @@ static void checkDivisionRepresentation(
const std::vector<SmallVector<int64_t, 8>> &expectedDividends,
const SmallVectorImpl<unsigned> &expectedDenominators) {
- SmallVector<SmallVector<int64_t, 8>> dividends;
+ std::vector<SmallVector<int64_t, 8>> dividends;
SmallVector<unsigned, 4> denominators;
poly.getLocalReprs(dividends, denominators);
More information about the Mlir-commits
mailing list