15 #ifndef MLIR_TRANSFORMS_LOOP_UTILS_H 16 #define MLIR_TRANSFORMS_LOOP_UTILS_H 57 uint64_t unrollJamFactor);
62 uint64_t unrollJamFactor);
86 LogicalResult
instBodySkew(AffineForOp forOp, ArrayRef<uint64_t> shifts,
87 bool unrollPrologueEpilogue =
false);
92 LogicalResult
tileCodeGen(MutableArrayRef<AffineForOp> band,
93 ArrayRef<unsigned> tileSizes);
103 ArrayRef<unsigned> loopPermMap);
109 ArrayRef<unsigned> loopPermMap);
120 void sinkLoop(AffineForOp forOp,
unsigned loopDepth);
225 #endif // MLIR_TRANSFORMS_LOOP_UTILS_H Definition: InferTypeOpInterface.cpp:20
std::pair< Loops, Loops > TileLoops
Definition: LoopUtils.h:128
LLVM_NODISCARD LogicalResult tileCodeGen(MutableArrayRef< AffineForOp > band, ArrayRef< unsigned > tileSizes)
Definition: LoopTiling.cpp:177
Definition: Attributes.h:129
void mapLoopToProcessorIds(loop::ForOp forOp, ArrayRef< Value > processorId, ArrayRef< Value > numProcessors)
Definition: LoopUtils.cpp:1097
void getCleanupLoopLowerBound(AffineForOp forOp, unsigned unrollFactor, AffineMap *map, SmallVectorImpl< Value > *operands, OpBuilder &builder)
Definition: LoopUtils.cpp:44
void sinkLoop(AffineForOp forOp, unsigned loopDepth)
Definition: LoopUtils.cpp:647
LogicalResult promoteIfSingleIteration(AffineForOp forOp)
Definition: LoopUtils.cpp:111
bool generateDma
Definition: LoopUtils.h:154
void coalesceLoops(MutableArrayRef< loop::ForOp > loops)
Definition: LoopUtils.cpp:1042
LogicalResult loopUnrollJamUpToFactor(AffineForOp forOp, uint64_t unrollJamFactor)
Definition: LoopUnrollAndJam.cpp:105
uint64_t affineDataCopyGenerate(Block::iterator begin, Block::iterator end, const AffineCopyOptions ©Options, DenseSet< Operation *> ©Nests)
Definition: LoopUtils.cpp:1596
Loops tilePerfectlyNested(loop::ForOp rootForOp, ArrayRef< Value > sizes)
Definition: LoopUtils.cpp:820
LogicalResult loopUnrollFull(AffineForOp forOp)
Unrolls this loop completely.
Definition: LoopUtils.cpp:385
OpListType::iterator iterator
Definition: Block.h:107
LLVM_NODISCARD LogicalResult instBodySkew(AffineForOp forOp, ArrayRef< uint64_t > shifts, bool unrollPrologueEpilogue=false)
Definition: LoopUtils.cpp:230
unsigned tagMemorySpace
Definition: LoopUtils.h:160
SmallVector< SmallVector< AffineForOp, 8 >, 8 > tile(ArrayRef< AffineForOp > forOps, ArrayRef< uint64_t > sizes, ArrayRef< AffineForOp > targets)
Definition: LoopUtils.cpp:787
auto map(Fn fun, IterType begin, IterType end) -> SmallVector< typename std::result_of< Fn(decltype(*begin))>::type, 8 >
Map with iterators.
Definition: Functional.h:28
void getPerfectlyNestedLoops(SmallVectorImpl< AffineForOp > &nestedLoops, AffineForOp root)
Definition: LoopUtils.cpp:374
AffineForOp sinkSequentialLoops(AffineForOp forOp)
Definition: LoopUtils.cpp:593
LogicalResult loopUnrollUpToFactor(AffineForOp forOp, uint64_t unrollFactor)
Definition: LoopUtils.cpp:399
uint64_t fastMemCapacityBytes
Definition: LoopUtils.h:162
TileLoops extractFixedOuterLoops(loop::ForOp rootFOrOp, ArrayRef< int64_t > sizes)
Definition: LoopUtils.cpp:924
LogicalResult loopUnrollByFactor(AffineForOp forOp, uint64_t unrollFactor)
Definition: LoopUtils.cpp:411
Explicit copy / DMA generation options for mlir::affineDataCopyGenerate.
Definition: LoopUtils.h:152
void interchangeLoops(AffineForOp forOpA, AffineForOp forOpB)
Definition: LoopUtils.cpp:500
LogicalResult loopUnrollJamByFactor(AffineForOp forOp, uint64_t unrollJamFactor)
Unrolls and jams this loop by the specified factor.
Definition: LoopUnrollAndJam.cpp:116
SmallVector< loop::ForOp, 8 > Loops
Definition: LoopUtils.h:127
void promoteSingleIterationLoops(FuncOp f)
Definition: LoopUtils.cpp:155
bool isValidLoopInterchangePermutation(ArrayRef< AffineForOp > loops, ArrayRef< unsigned > loopPermMap)
Definition: LoopUtils.cpp:560
unsigned slowMemorySpace
Definition: LoopUtils.h:156
unsigned fastMemorySpace
Definition: LoopUtils.h:158