|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
c2fcaf84 |
| 01-Jul-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Simplex: refactor (symbolic)lex to support specifying multiple varKinds as symbols
This is also required to support lexmin for relations.
Reviewed By: Groverkss
Differential Rev
[MLIR][Presburger] Simplex: refactor (symbolic)lex to support specifying multiple varKinds as symbols
This is also required to support lexmin for relations.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D128931
show more ...
|
| #
d95140a5 |
| 28-Jun-2022 |
Groverkss <[email protected]> |
[MLIR][Presburger] Rename variable/identifier -> variable
Currently, in the Presburger library, we use the words "variables" and "identifiers" interchangeably. This patch changes this to only use "v
[MLIR][Presburger] Rename variable/identifier -> variable
Currently, in the Presburger library, we use the words "variables" and "identifiers" interchangeably. This patch changes this to only use "variables" to refer to the variables of PresburgerSpace.
The reasoning behind this change is that the current usage of the word "identifier" is misleading. variables do not "identify" anything. The information attached to them is the actual "identifier" for the variable. The word "identifier", will later be used to refer to the information attached to each variable in space.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D128585
show more ...
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
5413bf1b |
| 20-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
30c67587 |
| 19-Jun-2022 |
Kazu Hirata <[email protected]> |
Use value_or instead of getValueOr (NFC)
|
|
Revision tags: llvmorg-14.0.5 |
|
| #
4bf9cbc4 |
| 08-Jun-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] subtract: improve redundant constraint detection
When constraints in the two operands make each other redundant, prefer constraints of the second because this affects the number o
[MLIR][Presburger] subtract: improve redundant constraint detection
When constraints in the two operands make each other redundant, prefer constraints of the second because this affects the number of sets in the output at each level; reducing these can help prevent exponential blowup.
This is accomplished by adding extra overloads to Simplex::detectRedundant that only scan a subrange of the constraints for redundancy.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D127237
show more ...
|
| #
8bc2cff9 |
| 02-Jun-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Simplex: remove redundant member vars nRow, nCol
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D126790
|
| #
8f99cdd2 |
| 31-May-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Simplex: remove redundant zeroing out of row
This fillRow(..., 0) is redundant because when the size of the tableau is consistent, the resize always creates a new row, which is ze
[MLIR][Presburger] Simplex: remove redundant zeroing out of row
This fillRow(..., 0) is redundant because when the size of the tableau is consistent, the resize always creates a new row, which is zero-initialized.
Also added asserts throughout to ensure the dimensions of the tableau remain consistent.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D126709
show more ...
|
| #
18a06d4f |
| 25-May-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Simplex::computeOptimum: slightly simplify code (NFC)
|
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
ef8b2a7c |
| 12-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] addSymbolicCut: fix the integral symbols heuristic to match the docs
Previously this checked if the entire symbolic numerator was divisible by the denominator, which is never the
[MLIR][Presburger] addSymbolicCut: fix the integral symbols heuristic to match the docs
Previously this checked if the entire symbolic numerator was divisible by the denominator, which is never the case when this function is called. Fixed this to check only the non-const coefficients in the numerator, which was what was intended and documented.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D123592
show more ...
|
| #
69c1a354 |
| 12-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger][Simplex] moveRowUnknownToColumn: support the row sample value being zero
When the sample value is zero, everything is the same except that failure to pivot does not imply emptines
[MLIR][Presburger][Simplex] moveRowUnknownToColumn: support the row sample value being zero
When the sample value is zero, everything is the same except that failure to pivot does not imply emptiness. So, leave it to the user to mark as empty if necessary, if they know the sample value is strictly negative. This is needed for an upcoming symbolic lexmin heuristic.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D123604
show more ...
|
| #
094ad066 |
| 14-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] change some `push_back`s to `emplace_back`s
|
| #
ef95a6e8 |
| 14-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] change some post-increments/decrements to pre-increments/decrements
|
|
Revision tags: llvmorg-14.0.1 |
|
| #
4aeb2a57 |
| 11-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger][Simplex] addSymbolicCut: don't add symbol div if denom is 1
This is unncessary, so we remove it as an optimization.
Reviewed By: Groverkss
Differential Revision: https://reviews
[MLIR][Presburger][Simplex] addSymbolicCut: don't add symbol div if denom is 1
This is unncessary, so we remove it as an optimization.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D123540
show more ...
|
| #
aafb4282 |
| 10-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger][Simplex] symbolic lexmin: add some normalization heuristics
Normalize some of the division and inequality expressions used, which can improve performance. Also deduplicate some of
[MLIR][Presburger][Simplex] symbolic lexmin: add some normalization heuristics
Normalize some of the division and inequality expressions used, which can improve performance. Also deduplicate some of the normalization functionality throughout the Presburger library.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D123314
show more ...
|
| #
497f87bb |
| 08-Apr-2022 |
Stella Laurenzo <[email protected]> |
NFC: Silence unused function 'scaleAndAdd' in release build.
Differential Revision: https://reviews.llvm.org/D123354
|
| #
79ad5fb2 |
| 04-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] IntegerPolyhedron: add support for symbolic integer lexmin
Add support for computing the symbolic integer lexmin of a polyhedron. This finds, for every assignment to the symbols,
[MLIR][Presburger] IntegerPolyhedron: add support for symbolic integer lexmin
Add support for computing the symbolic integer lexmin of a polyhedron. This finds, for every assignment to the symbols, the lexicographically minimum value attained by the dimensions. For example, the symbolic lexmin of the set
`(x, y)[a, b, c] : (a <= x, b <= x, x <= c)`
can be written as
``` x = a if b <= a, a <= c x = b if a < b, b <= c ```
This also finds the set of assignments to the symbols that make the lexmin unbounded.
This was previously landed in da92f92621e28a56fe8ad79d82eb60e436bf1d39 and reverted in b238c252e8b1bbebc7ed79c08e06c23514d0dfb4 due to a build failure in the code. Re-landing now with a fixed build.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122985
show more ...
|
| #
b238c252 |
| 04-Apr-2022 |
Arjun P <[email protected]> |
Revert "[MLIR][Presburger] IntegerPolyhedron: add support for symbolic integer lexmin"
This reverts commit da92f92621e28a56fe8ad79d82eb60e436bf1d39.
|
| #
da92f926 |
| 04-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] IntegerPolyhedron: add support for symbolic integer lexmin
Add support for computing the symbolic integer lexmin of a polyhedron. This finds, for every assignment to the symbols,
[MLIR][Presburger] IntegerPolyhedron: add support for symbolic integer lexmin
Add support for computing the symbolic integer lexmin of a polyhedron. This finds, for every assignment to the symbols, the lexicographically minimum value attained by the dimensions. For example, the symbolic lexmin of the set
`(x, y)[a, b, c] : (a <= x, b <= x, x <= c)`
can be written as
``` x = a if b <= a, a <= c x = b if a < b, b <= c ```
This also finds the set of assignments to the symbols that make the lexmin unbounded.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122985
show more ...
|
| #
fbeb0db5 |
| 01-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] LexSimplex: support is{Redundant,Separate}Inequality
Add integer-exact checks for inequalities being separate and redundant in LexSimplex.
Reviewed By: Groverkss
Differential Re
[MLIR][Presburger] LexSimplex: support is{Redundant,Separate}Inequality
Add integer-exact checks for inequalities being separate and redundant in LexSimplex.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122921
show more ...
|
| #
acb378e2 |
| 01-Apr-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Factor out some functionality from LexSimplex into a LexSimplexBase
LexSimplex cannot be made to support symbols for symbolic lexmin; this requires a second class. In preparation
[MLIR][Presburger] Factor out some functionality from LexSimplex into a LexSimplexBase
LexSimplex cannot be made to support symbols for symbolic lexmin; this requires a second class. In preparation for upstreaming support for symbolic lexmin, keep the part of LexSimplex that are specific to non-symbolic lexmin in LexSimplex and move the parts that are required to a common class LexSimplexBase for both to inherit from.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122828
show more ...
|
| #
b97aa413 |
| 30-Mar-2022 |
Arjun P <[email protected]> |
Revert "[MLIR][Presburger] LexSimplex::addEquality: add equalities as fixed columns"
This reverts commit 5630143af33f7e6e0dabdf38982cc9800140bb75. The implementation in this commit was incorrect. Al
Revert "[MLIR][Presburger] LexSimplex::addEquality: add equalities as fixed columns"
This reverts commit 5630143af33f7e6e0dabdf38982cc9800140bb75. The implementation in this commit was incorrect. Also, handling this representation of equalities in the upcoming support for symbolic lexicographic minimization makes that patch much more complex. It will be easier to review that without this representaiton and then reintroduce the fixed column representation later, hence the revert rather than a bug fix.
show more ...
|
| #
ef6f7c4a |
| 29-Mar-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Simplify std::{all,any}_of -> llvm::{all,any}_of (NFC)
Also simplify [](const F &f){ return f.foo(); } -> std::mem_fn(&F::foo)
|
| #
5630143a |
| 23-Mar-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] LexSimplex::addEquality: add equalities as fixed columns
In LexSimplex, instead of adding equalities as a pair of inequalities, add them as a single row, move them into the basis,
[MLIR][Presburger] LexSimplex::addEquality: add equalities as fixed columns
In LexSimplex, instead of adding equalities as a pair of inequalities, add them as a single row, move them into the basis, and keep them there.
There will always be a valid basis involving all non-redundant equalities. Such equalities will then be ignored in some other operations, such as when looking for pivot columns. This speeds them up a little bit.
More importantly, this is an important precursor patch to adding support for symbolic integer lexmin, as this heuristic can sometimes make a big difference there.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122165
show more ...
|
| #
08543a5a |
| 21-Mar-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] Introduce SimplexRollbackScopeExit to rollback on scope exit
This simplifies many places where we just want to do something in a "transient context" and return some value.
Review
[MLIR][Presburger] Introduce SimplexRollbackScopeExit to rollback on scope exit
This simplifies many places where we just want to do something in a "transient context" and return some value.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122172
show more ...
|
| #
ff447604 |
| 22-Mar-2022 |
Arjun P <[email protected]> |
[MLIR][Presburger] add Simplex:addDivisionVariable
This is a convenience function for adding new divisions to the Simplex given the numerator and denominator.
This will be needed for symbolic integ
[MLIR][Presburger] add Simplex:addDivisionVariable
This is a convenience function for adding new divisions to the Simplex given the numerator and denominator.
This will be needed for symbolic integer lexmin support.
Reviewed By: Groverkss
Differential Revision: https://reviews.llvm.org/D122159
show more ...
|