MLIR  16.0.0git
Namespaces | Typedefs | Functions
LoopAnalysis.h File Reference
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Optional.h"
+ Include dependency graph for LoopAnalysis.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 mlir
 Include the generated interface declarations.
 

Typedefs

using mlir::VectorizableLoopFun = std::function< bool(AffineForOp)>
 

Functions

void mlir::getTripCountMapAndOperands (AffineForOp forOp, AffineMap *map, SmallVectorImpl< Value > *operands)
 Returns the trip count of the loop as an affine map with its corresponding operands if the latter is expressible as an affine expression, and nullptr otherwise. More...
 
Optional< uint64_t > mlir::getConstantTripCount (AffineForOp forOp)
 Returns the trip count of the loop if it's a constant, None otherwise. More...
 
uint64_t mlir::getLargestDivisorOfTripCount (AffineForOp forOp)
 Returns the greatest known integral divisor of the trip count. More...
 
DenseSet< Value, DenseMapInfo< Value > > mlir::getInvariantAccesses (Value iv, ArrayRef< Value > indices)
 Given an induction variable iv of type AffineForOp and indices of type IndexType, returns the set of indices that are independent of iv. More...
 
bool mlir::isVectorizableLoopBody (AffineForOp loop, NestedPattern &vectorTransferMatcher)
 Checks whether the loop is structurally vectorizable; i.e. More...
 
bool mlir::isVectorizableLoopBody (AffineForOp loop, int *memRefDim, NestedPattern &vectorTransferMatcher)
 Checks whether the loop is structurally vectorizable and that all the LoadOp and StoreOp matched have access indexing functions that are are either: More...
 
bool mlir::isOpwiseShiftValid (AffineForOp forOp, ArrayRef< uint64_t > shifts)
 Checks where SSA dominance would be violated if a for op's body operations are shifted by the specified shifts. More...