From: Prashant Kumar Date: Tue, 1 Feb 2022 20:07:53 +0000 (+0530) Subject: [MLIR][Presburger] Use `SmallVector` instead of `std::vector` in `getLocalRepr` X-Git-Tag: upstream/15.0.7~18094 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3cc544772848682bc77ff63db659a5aa4b3d4e6b;p=platform%2Fupstream%2Fllvm.git [MLIR][Presburger] Use `SmallVector` instead of `std::vector` in `getLocalRepr` Use `SmallVector` instead of `std::vector` in `getLocalRepr` function. Also, fix the casing of a variable. Reviewed By: arjunp Differential Revision: https://reviews.llvm.org/D118722 --- diff --git a/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h b/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h index 8156b7b..42e2743 100644 --- a/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h +++ b/mlir/include/mlir/Analysis/Presburger/IntegerPolyhedron.h @@ -285,12 +285,14 @@ public: /// 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(std::vector> ÷nds, - SmallVector &denominators, - std::vector &repr) const; - void getLocalReprs(std::vector &repr) const; - void getLocalReprs(std::vector> ÷nds, - SmallVector &denominators) const; + void + getLocalReprs(SmallVectorImpl> ÷nds, + SmallVectorImpl &denominators, + SmallVectorImpl &repr) const; + void + getLocalReprs(SmallVectorImpl &repr) const; + void getLocalReprs(SmallVectorImpl> ÷nds, + SmallVectorImpl &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 8e57ac1..9e5edc0 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( - std::vector> &divs, + SmallVectorImpl> &divs, SmallVectorImpl &denoms, unsigned localOffset, llvm::function_ref merge); diff --git a/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp b/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp index 578f854..4ebf674 100644 --- a/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp +++ b/mlir/lib/Analysis/Presburger/IntegerPolyhedron.cpp @@ -829,23 +829,24 @@ bool IntegerPolyhedron::containsPoint(ArrayRef point) const { return true; } -void IntegerPolyhedron::getLocalReprs(std::vector &repr) const { - std::vector> dividends(getNumLocalIds()); +void IntegerPolyhedron::getLocalReprs( + SmallVectorImpl &repr) const { + SmallVector> dividends(getNumLocalIds()); SmallVector denominators(getNumLocalIds()); getLocalReprs(dividends, denominators, repr); } void IntegerPolyhedron::getLocalReprs( - std::vector> ÷nds, - SmallVector &denominators) const { - std::vector repr(getNumLocalIds()); + SmallVectorImpl> ÷nds, + SmallVectorImpl &denominators) const { + SmallVector repr(getNumLocalIds()); getLocalReprs(dividends, denominators, repr); } void IntegerPolyhedron::getLocalReprs( - std::vector> ÷nds, - SmallVector &denominators, - std::vector &repr) const { + SmallVectorImpl> ÷nds, + SmallVectorImpl &denominators, + SmallVectorImpl &repr) const { repr.resize(getNumLocalIds()); dividends.resize(getNumLocalIds()); @@ -1103,7 +1104,7 @@ void IntegerPolyhedron::mergeLocalIds(IntegerPolyhedron &other) { polyB.insertLocalId(0, initLocals); // Get division representations from each poly. - std::vector> divsA, divsB; + SmallVector> divsA, divsB; SmallVector 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 3a7be6e..981bd56 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. - std::vector repr(sI.getNumLocalIds()); + SmallVector 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 63ba4ec..c42e653 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 `temp_div` != 0. - int64_t temp_div = cst.atEq(eqInd, pos); - if (temp_div == 0) + // Equality must involve the pos-th variable and hence `tempDiv` != 0. + int64_t tempDiv = cst.atEq(eqInd, pos); + if (tempDiv == 0) return failure(); - int64_t signDiv = temp_div < 0 ? -1 : 1; + int64_t signDiv = tempDiv < 0 ? -1 : 1; // The divisor is always a positive integer. - divisor = temp_div * signDiv; + divisor = tempDiv * 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( - std::vector> &divs, + SmallVectorImpl> &divs, SmallVectorImpl &denoms, unsigned localOffset, llvm::function_ref merge) { diff --git a/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp b/mlir/unittests/Analysis/Presburger/IntegerPolyhedronTest.cpp index ccb8f3e..365d6db 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> &expectedDividends, const SmallVectorImpl &expectedDenominators) { - std::vector> dividends; + SmallVector> dividends; SmallVector denominators; poly.getLocalReprs(dividends, denominators);