MLIR  20.0.0git
Classes | Namespaces | Functions
AffineAnalysis.h File Reference
#include "mlir/Analysis/Presburger/IntegerRelation.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/IR/Value.h"
#include "llvm/ADT/SmallVector.h"
#include <optional>

Go to the source code of this file.

Classes

struct  mlir::affine::LoopReduction
 A description of a (parallelizable) reduction in an affine loop. More...
 
struct  mlir::affine::MemRefAccess
 Encapsulates a memref load or store access information. More...
 
struct  mlir::affine::DependenceComponent
 
struct  mlir::affine::DependenceResult
 Checks whether two accesses to the same memref access the same element. More...
 

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::affine
 

Functions

void mlir::affine::getSupportedReductions (AffineForOp forOp, SmallVectorImpl< LoopReduction > &supportedReductions)
 Populate supportedReductions with descriptors of the supported reductions. More...
 
bool mlir::affine::isLoopParallel (AffineForOp forOp, SmallVectorImpl< LoopReduction > *parallelReductions=nullptr)
 Returns true if ‘forOp’ is a parallel loop. More...
 
bool mlir::affine::isLoopMemoryParallel (AffineForOp forOp)
 Returns true if ‘forOp’ doesn't have memory dependences preventing parallelization. More...
 
void mlir::affine::getReachableAffineApplyOps (ArrayRef< Value > operands, SmallVectorImpl< Operation * > &affineApplyOps)
 Returns in affineApplyOps, the sequence of those AffineApplyOp Operations that are reachable via a search starting from operands and ending at those operands that are not the result of an AffineApplyOp. More...
 
LogicalResult mlir::affine::getIndexSet (MutableArrayRef< Operation * > ops, FlatAffineValueConstraints *domain)
 Builds a system of constraints with dimensional variables corresponding to the loop IVs of the forOps and AffineIfOp's operands appearing in that order. More...
 
DependenceResult mlir::affine::checkMemrefAccessDependence (const MemRefAccess &srcAccess, const MemRefAccess &dstAccess, unsigned loopDepth, FlatAffineValueConstraints *dependenceConstraints=nullptr, SmallVector< DependenceComponent, 2 > *dependenceComponents=nullptr, bool allowRAR=false)
 
bool mlir::affine::hasDependence (DependenceResult result)
 Utility function that returns true if the provided DependenceResult corresponds to a dependence result. More...
 
bool mlir::affine::noDependence (DependenceResult result)
 Returns true if the provided DependenceResult corresponds to the absence of a dependence. More...
 
void mlir::affine::getDependenceComponents (AffineForOp forOp, unsigned maxLoopDepth, std::vector< SmallVector< DependenceComponent, 2 >> *depCompsVec)
 Returns in 'depCompsVec', dependence components for dependences between all load and store ops in loop nest rooted at 'forOp', at loop depths in range [1, maxLoopDepth]. More...