diff options
Diffstat (limited to 'mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp')
| -rw-r--r-- | mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp | 41 |
1 files changed, 1 insertions, 40 deletions
diff --git a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp index 268050a30e00..605737542e9f 100644 --- a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp +++ b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp @@ -23,7 +23,6 @@ #include "mlir/Dialect/SCF/IR/SCF.h" #include "mlir/IR/IRMapping.h" #include "mlir/IR/IntegerSet.h" -#include "mlir/Support/MathExtras.h" #include "mlir/Transforms/GreedyPatternRewriteDriver.h" #include "llvm/ADT/MapVector.h" #include "llvm/ADT/SmallPtrSet.h" @@ -38,16 +37,6 @@ using namespace affine; using namespace presburger; using llvm::SmallMapVector; -namespace { -// This structure is to pass and return sets of loop parameters without -// confusing the order. -struct LoopParams { - Value lowerBound; - Value upperBound; - Value step; -}; -} // namespace - /// Computes the cleanup loop lower bound of the loop being unrolled with /// the specified unroll factor; this bound will also be upper bound of the main /// part of the unrolled loop. Computes the bound as an AffineMap with its @@ -1102,34 +1091,6 @@ static bool areInnerBoundsInvariant(AffineForOp forOp) { return !walkResult.wasInterrupted(); } -// Gathers all maximal sub-blocks of operations that do not themselves -// include a for op (a operation could have a descendant for op though -// in its tree). Ignore the block terminators. -struct JamBlockGatherer { - // Store iterators to the first and last op of each sub-block found. - std::vector<std::pair<Block::iterator, Block::iterator>> subBlocks; - - // This is a linear time walk. - void walk(Operation *op) { - for (auto ®ion : op->getRegions()) - for (auto &block : region) - walk(block); - } - - void walk(Block &block) { - for (auto it = block.begin(), e = std::prev(block.end()); it != e;) { - auto subBlockStart = it; - while (it != e && !isa<AffineForOp>(&*it)) - ++it; - if (it != subBlockStart) - subBlocks.emplace_back(subBlockStart, std::prev(it)); - // Process all for ops that appear next. - while (it != e && isa<AffineForOp>(&*it)) - walk(&*it++); - } - } -}; - /// Unrolls and jams this loop by the specified factor. LogicalResult mlir::affine::loopUnrollJamByFactor(AffineForOp forOp, uint64_t unrollJamFactor) { @@ -1159,7 +1120,7 @@ LogicalResult mlir::affine::loopUnrollJamByFactor(AffineForOp forOp, return failure(); // Gather all sub-blocks to jam upon the loop being unrolled. - JamBlockGatherer jbg; + JamBlockGatherer<AffineForOp> jbg; jbg.walk(forOp); auto &subBlocks = jbg.subBlocks; |
