#include "mlir/Analysis/Presburger/PWMAFunction.h"
#include "mlir/Analysis/Presburger/IntegerRelation.h"
#include "mlir/Analysis/Presburger/PresburgerRelation.h"
#include "mlir/Analysis/Presburger/PresburgerSpace.h"
#include "mlir/Analysis/Presburger/Utils.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/STLFunctionalExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <optional>
usingnamespacemlir;
usingnamespacepresburger;
void MultiAffineFunction::assertIsConsistent() const { … }
static SmallVector<DynamicAPInt, 8> subtractExprs(ArrayRef<DynamicAPInt> vecA,
ArrayRef<DynamicAPInt> vecB) { … }
PresburgerSet PWMAFunction::getDomain() const { … }
void MultiAffineFunction::print(raw_ostream &os) const { … }
SmallVector<DynamicAPInt, 8>
MultiAffineFunction::valueAt(ArrayRef<DynamicAPInt> point) const { … }
bool MultiAffineFunction::isEqual(const MultiAffineFunction &other) const { … }
bool MultiAffineFunction::isEqual(const MultiAffineFunction &other,
const IntegerPolyhedron &domain) const { … }
bool MultiAffineFunction::isEqual(const MultiAffineFunction &other,
const PresburgerSet &domain) const { … }
void MultiAffineFunction::removeOutputs(unsigned start, unsigned end) { … }
void MultiAffineFunction::mergeDivs(MultiAffineFunction &other) { … }
PresburgerSet
MultiAffineFunction::getLexSet(OrderingKind comp,
const MultiAffineFunction &other) const { … }
bool PWMAFunction::isEqual(const PWMAFunction &other) const { … }
void PWMAFunction::addPiece(const Piece &piece) { … }
void PWMAFunction::print(raw_ostream &os) const { … }
void PWMAFunction::dump() const { … }
PWMAFunction PWMAFunction::unionFunction(
const PWMAFunction &func,
llvm::function_ref<PresburgerSet(Piece maf1, Piece maf2)> tiebreak) const { … }
template <OrderingKind comp>
static PresburgerSet tiebreakLex(const PWMAFunction::Piece &pieceA,
const PWMAFunction::Piece &pieceB) { … }
PWMAFunction PWMAFunction::unionLexMin(const PWMAFunction &func) { … }
PWMAFunction PWMAFunction::unionLexMax(const PWMAFunction &func) { … }
void MultiAffineFunction::subtract(const MultiAffineFunction &other) { … }
static void addDivisionConstraints(IntegerRelation &rel,
const DivisionRepr &divs) { … }
IntegerRelation MultiAffineFunction::getAsRelation() const { … }
void PWMAFunction::removeOutputs(unsigned start, unsigned end) { … }
std::optional<SmallVector<DynamicAPInt, 8>>
PWMAFunction::valueAt(ArrayRef<DynamicAPInt> point) const { … }