llvm-project/mlir/lib/Analysis
Arjun P 10a898b3ec [MLIR] Exact integer emptiness checks for FlatAffineConstraints
This patch adds the capability to perform exact integer emptiness checks for FlatAffineConstraints using the General Basis Reduction algorithm (GBR). Previously, only a heuristic was available for emptiness checks, which was not guaranteed to always give a conclusive result.

This patch adds a `Simplex` class, which can be constructed using a `FlatAffineConstraints`, and can find an integer sample point (if one exists) using the GBR algorithm. Additionally, it adds two classes `Matrix` and `Fraction`, which are used by `Simplex`.

The integer emptiness check functionality can be accessed through the new `FlatAffineConstraints::isIntegerEmpty()` function, which runs the existing heuristic first and, if that proves to be inconclusive, runs the GBR algorithm to produce a conclusive result.

Differential Revision: https://reviews.llvm.org/D80860
2020-07-02 19:53:27 +05:30
..
Presburger [MLIR] Exact integer emptiness checks for FlatAffineConstraints 2020-07-02 19:53:27 +05:30
AffineAnalysis.cpp [MLIR][NFC] Adopt variadic isa<> 2020-06-24 17:02:44 -07:00
AffineStructures.cpp [MLIR] Exact integer emptiness checks for FlatAffineConstraints 2020-07-02 19:53:27 +05:30
CMakeLists.txt [MLIR] Exact integer emptiness checks for FlatAffineConstraints 2020-07-02 19:53:27 +05:30
CallGraph.cpp [mlir] Add NamedAttrList 2020-05-07 12:33:36 -07:00
Liveness.cpp [mlir] Fixed warning related to unused variable in Liveness. 2020-04-27 14:02:33 +02:00
LoopAnalysis.cpp [MLIR][NFC] Adopt variadic isa<> 2020-06-24 17:02:44 -07:00
NestedMatcher.cpp [MLIR][NFC] Adopt variadic isa<> 2020-06-24 17:02:44 -07:00
SliceAnalysis.cpp [MLIR][NFC] Adopt variadic isa<> 2020-06-24 17:02:44 -07:00
Utils.cpp [MLIR] Add variadic isa<> for Type, Value, and Attribute 2020-06-29 15:04:48 -07:00