FreeTensor
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Macros | Functions
presburger.h File Reference
#include <cstddef>
#include <iostream>
#include <isl/id_type.h>
#include <string>
#include <unordered_set>
#include <vector>
#include <isl/aff.h>
#include <isl/ctx.h>
#include <isl/id.h>
#include <isl/ilp.h>
#include <isl/map.h>
#include <isl/options.h>
#include <isl/set.h>
#include <isl/space.h>
#include <isl/space_type.h>
#include <isl/val.h>
#include <debug.h>
#include <debug/profile.h>
#include <except.h>
#include <ref.h>
#include <serialize/to_string.h>
#include <timeout.h>
Include dependency graph for presburger.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  freetensor::PBCtx
 
class  freetensor::PBMap
 
class  freetensor::PBMap::Serialized
 
class  freetensor::PBVal
 
class  freetensor::PBSet
 
class  freetensor::PBSet::Serialized
 
class  freetensor::PBSpace
 
class  freetensor::PBSingleFunc
 
class  freetensor::PBSingleFunc::Serialized
 
class  freetensor::PBFunc
 
class  freetensor::PBFunc::Serialized
 
class  freetensor::PBPoint
 
class  freetensor::PBBuildExpr
 
class  freetensor::PBBuilder
 
class  freetensor::PBMapBuilder
 
class  freetensor::PBSetBuilder
 

Namespaces

namespace  freetensor
 

Concepts

concept  freetensor::PBMapRef
 
concept  freetensor::PBValRef
 
concept  freetensor::PBSetRef
 
concept  freetensor::PBSpaceRef
 
concept  freetensor::PBFuncRef
 
concept  freetensor::PBSingleFuncRef
 

Macros

#define COPY_ISL_PTR(ptr, type)   _COPY_ISL_PTR(ptr, isl_##type##_copy)
 

Functions

template<class T >
T * freetensor::GET_ISL_PTR (T *ptr)
 
template<class T >
T * freetensor::_COPY_ISL_PTR (const T *ptr, T *(copy)(T *))
 
template<class T >
T * freetensor::MOVE_ISL_PTR (T *&ptr)
 
template<typename T >
auto freetensor::PBRefTake (std::remove_reference_t< T > &t)
 
template<typename T >
auto freetensor::PBRefTake (std::remove_reference_t< T > &&t)
 
Ref< PBCtx > freetensor::commonCtx (const auto &lhs, const auto &rhs)
 
template<PBSetRef T>
PBSet freetensor::projectOutAllParams (T &&set)
 
template<PBMapRef T>
PBMap freetensor::projectOutAllParams (T &&map)
 
template<PBSetRef T>
PBSet freetensor::projectOutParamById (T &&set, const std::string &name)
 
template<PBSetRef T>
PBSet freetensor::projectOutParamDims (T &&set, unsigned first, unsigned n)
 
template<PBSetRef T>
PBSet freetensor::projectOutDims (T &&set, unsigned first, unsigned n)
 
template<PBMapRef T>
PBMap freetensor::projectOutParamById (T &&map, const std::string &name)
 
template<PBMapRef T>
PBMap freetensor::projectOutParamDims (T &&map, unsigned first, unsigned n)
 
template<PBMapRef T>
PBMap freetensor::projectOutInputDims (T &&map, unsigned first, unsigned n)
 
template<PBMapRef T>
PBMap freetensor::projectOutOutputDims (T &&map, unsigned first, unsigned n)
 
template<PBSetRef T>
PBSet freetensor::insertDims (T &&set, unsigned first, unsigned n)
 
template<PBMapRef T>
PBMap freetensor::insertInputDims (T &&map, unsigned first, unsigned n)
 
template<PBMapRef T>
PBMap freetensor::insertOutputDims (T &&map, unsigned first, unsigned n)
 
template<PBSetRef T>
PBSet freetensor::fixDim (T &&set, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::fixInputDim (T &&map, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::fixOutputDim (T &&map, unsigned pos, int x)
 
template<PBSetRef T>
PBSet freetensor::lowerBoundDim (T &&set, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::lowerBoundInputDim (T &&map, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::lowerBoundOutputDim (T &&map, unsigned pos, int x)
 
template<PBSetRef T>
PBSet freetensor::upperBoundDim (T &&set, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::upperBoundInputDim (T &&map, unsigned pos, int x)
 
template<PBMapRef T>
PBMap freetensor::upperBoundOutputDim (T &&map, unsigned pos, int x)
 
template<PBSetRef T>
PBMap freetensor::newDomainOnlyMap (T &&set)
 
template<PBSetRef T>
PBMap freetensor::newRangeOnlyMap (T &&set)
 
template<PBMapRef T>
PBMap freetensor::moveDimsInputToOutput (T &&map, unsigned first, unsigned n, unsigned target)
 
template<PBMapRef T>
PBMap freetensor::moveDimsOutputToInput (T &&map, unsigned first, unsigned n, unsigned target)
 
template<PBMapRef T>
PBMap freetensor::moveDimsParamToInput (T &&map, unsigned first, unsigned n, unsigned target)
 
template<PBMapRef T>
PBMap freetensor::moveDimsParamToOutput (T &&map, unsigned first, unsigned n, unsigned target)
 
template<PBSetRef T>
PBSet freetensor::moveDimsSetToParam (T &&set, unsigned first, unsigned n, unsigned target)
 
template<PBSetRef T>
PBSet freetensor::moveDimsParamToSet (T &&set, unsigned first, unsigned n, unsigned target)
 
template<PBSetRef T, PBSetRef U>
std::pair< PBSet, PBSet > freetensor::padToSameDims (T &&lhs, U &&rhs)
 
template<PBSetRef T>
PBSet freetensor::complement (T &&set)
 
template<PBMapRef T>
PBMap freetensor::complement (T &&map)
 
template<PBMapRef T>
PBMap freetensor::reverse (T &&map)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::subtract (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::subtract (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::intersect (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::intersect (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBSetRef U>
PBMap freetensor::intersectDomain (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBSetRef U>
PBMap freetensor::intersectRange (T &&lhs, U &&rhs)
 
template<PBSingleFuncRef T, PBSetRef U>
PBSingleFunc freetensor::intersectDomain (T &&lhs, U &&rhs)
 
template<PBFuncRef T, PBSetRef U>
PBFunc freetensor::intersectDomain (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::intersectParams (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBSetRef U>
PBMap freetensor::intersectParams (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::uni (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::uni (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBMapRef U>
PBSet freetensor::apply (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::applyDomain (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::applyRange (T &&lhs, U &&rhs)
 
template<PBMapRef T, PBMapRef U>
PBMap freetensor::sum (T &&lhs, U &&rhs)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::sum (T &&lhs, U &&rhs)
 
template<PBMapRef T>
PBMap freetensor::neg (T &&map)
 
template<PBSetRef T>
PBSet freetensor::neg (T &&set)
 
template<PBMapRef T>
PBMap freetensor::lexmax (T &&map)
 
template<PBMapRef T>
PBMap freetensor::lexmin (T &&map)
 
template<PBSetRef T>
PBSet freetensor::lexmax (T &&set)
 
template<PBSetRef T>
PBSet freetensor::lexmin (T &&set)
 
template<PBSpaceRef T>
PBMap freetensor::identity (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::lexGE (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::lexGT (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::lexLE (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::lexLT (T &&space)
 
PBSpace freetensor::spaceAlloc (const Ref< PBCtx > &ctx, unsigned nparam, unsigned nIn, unsigned nOut)
 
PBSpace freetensor::spaceSetAlloc (const Ref< PBCtx > &ctx, unsigned nparam, unsigned dim)
 
template<PBSpaceRef T>
PBSet freetensor::emptySet (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::emptyMap (T &&space)
 
template<PBSpaceRef T>
PBSet freetensor::universeSet (T &&space)
 
template<PBSpaceRef T>
PBMap freetensor::universeMap (T &&space)
 
template<PBMapRef T>
PBSet freetensor::domain (T &&map)
 
template<PBMapRef T>
PBSet freetensor::range (T &&map)
 
template<PBSetRef T>
PBSet freetensor::params (T &&set)
 
template<PBSetRef T>
PBSet freetensor::coalesce (T &&set)
 
template<PBMapRef T>
PBMap freetensor::coalesce (T &&map)
 
template<PBSetRef T, PBSetRef U>
PBSet freetensor::cartesianProduct (T &&lhs, U &&rhs)
 
template<PBSetRef T>
PBVal freetensor::dimMaxVal (T &&set, int pos)
 
template<PBSetRef T>
PBVal freetensor::dimMinVal (T &&set, int pos)
 
PBVal freetensor::dimFixVal (const PBSet &set, int pos)
 
template<PBSpaceRef T>
PBSpace freetensor::spaceMapFromSet (T &&space)
 
template<PBMapRef T>
PBSet freetensor::wrap (T &&map)
 
template<PBSetRef T>
PBMap freetensor::unwrap (T &&set)
 
template<PBSetRef T>
PBSet freetensor::flatten (T &&set)
 
template<PBMapRef T>
PBMap freetensor::flattenDomain (T &&map)
 
template<PBMapRef T>
PBMap freetensor::flattenRange (T &&map)
 
template<PBMapRef T>
PBSet freetensor::flattenMapToSet (T &&map)
 
template<PBSetRef T>
PBPoint freetensor::sample (T &&set)
 
template<PBSingleFuncRef T, PBSingleFuncRef U>
PBSingleFunc freetensor::min (T &&lhs, U &&rhs)
 
template<PBSingleFuncRef T, PBSingleFuncRef U>
PBSingleFunc freetensor::max (T &&lhs, U &&rhs)
 
template<PBSetRef T>
PBSet freetensor::coefficients (T &&set, int64_t c=0)
 
bool freetensor::isSubset (const PBSet &small, const PBSet &big)
 
bool freetensor::isSubset (const PBMap &small, const PBMap &big)
 
bool freetensor::operator== (const PBSet &lhs, const PBSet &rhs)
 
bool freetensor::operator== (const PBMap &lhs, const PBMap &rhs)
 
bool freetensor::operator== (const PBSingleFunc &lhs, const PBSingleFunc &rhs)
 
bool freetensor::operator== (const PBFunc &lhs, const PBFunc &rhs)
 
auto freetensor::pbFuncWithTimeout (const auto &func, int seconds, const auto &...args) -> std::optional< decltype(func(args...))>
 
template<PBMapRef T>
PBMap freetensor::moveDimsInputToParam (T &&map, unsigned first, unsigned n, unsigned target)
 
template<PBMapRef T>
PBMap freetensor::moveDimsOutputToParam (T &&map, unsigned first, unsigned n, unsigned target)
 

Macro Definition Documentation

◆ COPY_ISL_PTR

#define COPY_ISL_PTR (   ptr,
  type 
)    _COPY_ISL_PTR(ptr, isl_##type##_copy)