MLIR  16.0.0git
Classes | Namespaces | Functions
AffineAnalysis.h File Reference
#include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
#include "mlir/IR/Value.h"
#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallVector.h"
+ Include dependency graph for AffineAnalysis.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


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


 Include the generated interface declarations.


void mlir::getSupportedReductions (AffineForOp forOp, SmallVectorImpl< LoopReduction > &supportedReductions)
 Populate supportedReductions with descriptors of the supported reductions. More...
bool mlir::isLoopParallel (AffineForOp forOp, SmallVectorImpl< LoopReduction > *parallelReductions=nullptr)
 Returns true if `forOp' is a parallel loop. More...
bool mlir::isLoopMemoryParallel (AffineForOp forOp)
 Returns true if `forOp' doesn't have memory dependences preventing parallelization. More...
void mlir::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::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::checkMemrefAccessDependence (const MemRefAccess &srcAccess, const MemRefAccess &dstAccess, unsigned loopDepth, FlatAffineValueConstraints *dependenceConstraints, SmallVector< DependenceComponent, 2 > *dependenceComponents, bool allowRAR=false)
bool mlir::hasDependence (DependenceResult result)
 Utility function that returns true if the provided DependenceResult corresponds to a dependence result. More...
void mlir::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...