MLIR  19.0.0git
Classes | Namespaces | Enumerations | Functions
AffineExpr.h File Reference
#include "mlir/IR/Visitors.h"
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Casting.h"
#include <functional>
#include <type_traits>

Go to the source code of this file.

Classes

class  mlir::AffineExpr
 Base type for affine expression. More...
 
class  mlir::AffineBinaryOpExpr
 Affine binary operation expression. More...
 
class  mlir::AffineDimExpr
 A dimensional identifier appearing in an affine expression. More...
 
class  mlir::AffineSymbolExpr
 A symbolic identifier appearing in an affine expression. More...
 
class  mlir::AffineConstantExpr
 An integer constant appearing in affine expression. More...
 
struct  llvm::DenseMapInfo< mlir::AffineExpr >
 
struct  llvm::CastInfo< To, From, std::enable_if_t< std::is_same_v< mlir::AffineExpr, std::remove_const_t< From > >||std::is_base_of_v< mlir::AffineExpr, From > > >
 Add support for llvm style casts. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::detail
 Detect if any of the given parameter types has a sub-element handler.
 
 llvm
 Include the generated interface declarations.
 

Enumerations

enum class  mlir::AffineExprKind {
  mlir::Add , mlir::Mul , mlir::Mod , mlir::FloorDiv ,
  mlir::CeilDiv , mlir::LAST_AFFINE_BINARY_OP = CeilDiv , mlir::Constant , mlir::DimId ,
  mlir::SymbolId
}
 

Functions

inline ::llvm::hash_code mlir::hash_value (AffineExpr arg)
 Make AffineExpr hashable. More...
 
AffineExpr mlir::operator+ (int64_t val, AffineExpr expr)
 
AffineExpr mlir::operator* (int64_t val, AffineExpr expr)
 
AffineExpr mlir::operator- (int64_t val, AffineExpr expr)
 
AffineExpr mlir::getAffineDimExpr (unsigned position, MLIRContext *context)
 These free functions allow clients of the API to not use classes in detail. More...
 
AffineExpr mlir::getAffineSymbolExpr (unsigned position, MLIRContext *context)
 
AffineExpr mlir::getAffineConstantExpr (int64_t constant, MLIRContext *context)
 
SmallVector< AffineExprmlir::getAffineConstantExprs (ArrayRef< int64_t > constants, MLIRContext *context)
 
AffineExpr mlir::getAffineBinaryOpExpr (AffineExprKind kind, AffineExpr lhs, AffineExpr rhs)
 
AffineExpr mlir::getAffineExprFromFlatForm (ArrayRef< int64_t > flatExprs, unsigned numDims, unsigned numSymbols, ArrayRef< AffineExpr > localExprs, MLIRContext *context)
 Constructs an affine expression from a flat ArrayRef. More...
 
raw_ostream & mlir::operator<< (raw_ostream &os, AffineExpr expr)
 
AffineExpr mlir::simplifyAffineExpr (AffineExpr expr, unsigned numDims, unsigned numSymbols)
 Simplify an affine expression by flattening and some amount of simple analysis. More...
 
template<int N>
void mlir::detail::bindDims (MLIRContext *ctx)
 
template<int N, typename AffineExprTy , typename... AffineExprTy2>
void mlir::detail::bindDims (MLIRContext *ctx, AffineExprTy &e, AffineExprTy2 &...exprs)
 
template<int N>
void mlir::detail::bindSymbols (MLIRContext *ctx)
 
template<int N, typename AffineExprTy , typename... AffineExprTy2>
void mlir::detail::bindSymbols (MLIRContext *ctx, AffineExprTy &e, AffineExprTy2 &...exprs)
 
template<typename... AffineExprTy>
void mlir::bindDims (MLIRContext *ctx, AffineExprTy &...exprs)
 Bind a list of AffineExpr references to DimExpr at positions: [0 . More...
 
template<typename AffineExprTy >
void mlir::bindDimsList (MLIRContext *ctx, MutableArrayRef< AffineExprTy > exprs)
 
template<typename... AffineExprTy>
void mlir::bindSymbols (MLIRContext *ctx, AffineExprTy &...exprs)
 Bind a list of AffineExpr references to SymbolExpr at positions: [0 . More...
 
template<typename AffineExprTy >
void mlir::bindSymbolsList (MLIRContext *ctx, MutableArrayRef< AffineExprTy > exprs)
 
std::optional< int64_t > mlir::getBoundForAffineExpr (AffineExpr expr, unsigned numDims, unsigned numSymbols, ArrayRef< std::optional< int64_t >> constLowerBounds, ArrayRef< std::optional< int64_t >> constUpperBounds, bool isUpper)
 Get a lower or upper (depending on isUpper) bound for expr while using the constant lower and upper bounds for its inputs provided in constLowerBounds and constUpperBounds. More...