forked from OSchip/llvm-project
10a898b3ec
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 |
||
---|---|---|
.. | ||
Presburger | ||
AffineAnalysis.cpp | ||
AffineStructures.cpp | ||
CMakeLists.txt | ||
CallGraph.cpp | ||
Liveness.cpp | ||
LoopAnalysis.cpp | ||
NestedMatcher.cpp | ||
SliceAnalysis.cpp | ||
Utils.cpp |