13 #ifndef MLIR_DIALECT_AFFINE_ANALYSIS_LOOPANALYSIS_H 14 #define MLIR_DIALECT_AFFINE_ANALYSIS_LOOPANALYSIS_H 17 #include "llvm/ADT/ArrayRef.h" 18 #include "llvm/ADT/Optional.h" 38 SmallVectorImpl<Value> *operands);
59 DenseSet<Value, DenseMapInfo<Value>>
88 #endif // MLIR_DIALECT_AFFINE_ANALYSIS_LOOPANALYSIS_H Include the generated interface declarations.
void 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 ...
std::function< bool(AffineForOp)> VectorizableLoopFun
bool 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 specifi...
uint64_t getLargestDivisorOfTripCount(AffineForOp forOp)
Returns the greatest known integral divisor of the trip count.
Optional< uint64_t > getConstantTripCount(AffineForOp forOp)
Returns the trip count of the loop if it's a constant, None otherwise.
DenseSet< Value, DenseMapInfo< Value > > getInvariantAccesses(Value iv, ArrayRef< Value > indices)
Given an induction variable iv of type AffineForOp and indices of type IndexType, returns the set of ...
bool isVectorizableLoopBody(AffineForOp loop, NestedPattern &vectorTransferMatcher)
Checks whether the loop is structurally vectorizable; i.e.