Lines Matching refs:AffineForOp
56 getCleanupLoopLowerBound(AffineForOp forOp, unsigned unrollFactor, in getCleanupLoopLowerBound()
114 static void replaceIterArgsAndYieldResults(AffineForOp forOp) { in replaceIterArgsAndYieldResults()
131 LogicalResult mlir::promoteIfSingleIteration(AffineForOp forOp) { in promoteIfSingleIteration()
181 static AffineForOp generateShiftedLoop( in generateShiftedLoop()
184 unsigned offset, AffineForOp srcForOp, OpBuilder b) { in generateShiftedLoop()
191 auto loopChunk = b.create<AffineForOp>(srcForOp.getLoc(), lbOperands, lbMap, in generateShiftedLoop()
220 return AffineForOp(); in generateShiftedLoop()
235 LogicalResult mlir::affineForOpBodySkew(AffineForOp forOp, in affineForOpBodySkew()
284 AffineForOp prologue, epilogue; in affineForOpBodySkew()
304 AffineForOp res; in affineForOpBodySkew()
323 AffineForOp::getCanonicalizationPatterns(patterns, res.getContext()); in affineForOpBodySkew()
367 checkTilingLegalityImpl(MutableArrayRef<mlir::AffineForOp> origLoops) { in checkTilingLegalityImpl()
436 checkTilingLegality(MutableArrayRef<mlir::AffineForOp> origLoops) { in checkTilingLegality()
441 LogicalResult checkIfHyperRectangular(MutableArrayRef<AffineForOp> input) { in checkIfHyperRectangular()
462 LogicalResult performPreTilingChecks(MutableArrayRef<AffineForOp> input, in performPreTilingChecks()
467 [](AffineForOp op) { return op.getNumResults() > 0; })) { in performPreTilingChecks()
493 static void moveLoopBodyImpl(AffineForOp src, AffineForOp dest, in moveLoopBodyImpl()
502 void moveLoopBody(AffineForOp src, AffineForOp dest) { in moveLoopBody()
508 void constructTiledLoopNest(MutableArrayRef<AffineForOp> origLoops, in constructTiledLoopNest()
509 AffineForOp rootAffineForOp, unsigned width, in constructTiledLoopNest()
510 MutableArrayRef<AffineForOp> tiledLoops) { in constructTiledLoopNest()
515 AffineForOp innermostPointLoop; in constructTiledLoopNest()
521 AffineForOp pointLoop = b.create<AffineForOp>(loc, 0, 0); in constructTiledLoopNest()
535 AffineForOp tileSpaceLoop = b.create<AffineForOp>(loc, 0, 0); in constructTiledLoopNest()
549 static void setIntraTileBoundsParametric(OpBuilder &b, AffineForOp origLoop, in setIntraTileBoundsParametric()
550 AffineForOp newInterTileLoop, in setIntraTileBoundsParametric()
551 AffineForOp newIntraTileLoop, in setIntraTileBoundsParametric()
644 static void setInterTileBoundsParametric(OpBuilder &b, AffineForOp origLoop, in setInterTileBoundsParametric()
645 AffineForOp newLoop, Value tileSize) { in setInterTileBoundsParametric()
746 MutableArrayRef<AffineForOp> origLoops, in constructParametricallyTiledIndexSetHyperRect()
747 MutableArrayRef<AffineForOp> newLoops, ArrayRef<Value> tileSizes) { in constructParametricallyTiledIndexSetHyperRect()
773 constructTiledIndexSetHyperRect(MutableArrayRef<AffineForOp> origLoops, in constructTiledIndexSetHyperRect()
774 MutableArrayRef<AffineForOp> newLoops, in constructTiledIndexSetHyperRect()
859 mlir::tilePerfectlyNested(MutableArrayRef<AffineForOp> input, in tilePerfectlyNested()
861 SmallVectorImpl<AffineForOp> *tiledNest) { in tilePerfectlyNested()
868 MutableArrayRef<AffineForOp> origLoops = input; in tilePerfectlyNested()
869 AffineForOp rootAffineForOp = origLoops[0]; in tilePerfectlyNested()
873 SmallVector<AffineForOp, 6> tiledLoops(2 * width); in tilePerfectlyNested()
903 mlir::tilePerfectlyNestedParametric(MutableArrayRef<AffineForOp> input, in tilePerfectlyNestedParametric()
905 SmallVectorImpl<AffineForOp> *tiledNest) { in tilePerfectlyNestedParametric()
912 MutableArrayRef<AffineForOp> origLoops = input; in tilePerfectlyNestedParametric()
913 AffineForOp rootAffineForOp = origLoops[0]; in tilePerfectlyNestedParametric()
915 SmallVector<AffineForOp, 6> tiledLoops(2 * width); in tilePerfectlyNestedParametric()
945 void mlir::getPerfectlyNestedLoops(SmallVectorImpl<AffineForOp> &nestedLoops, in getPerfectlyNestedLoops()
946 AffineForOp root) { in getPerfectlyNestedLoops()
953 root = dyn_cast<AffineForOp>(&body.front()); in getPerfectlyNestedLoops()
963 std::vector<SmallVector<AffineForOp, 6>> *bands) { in getTileableBands() argument
966 for (AffineForOp forOp : f.getOps<AffineForOp>()) { in getTileableBands()
967 SmallVector<AffineForOp, 6> band; in getTileableBands()
974 LogicalResult mlir::loopUnrollFull(AffineForOp forOp) { in loopUnrollFull()
989 LogicalResult mlir::loopUnrollUpToFactor(AffineForOp forOp, in loopUnrollUpToFactor()
1056 static LogicalResult generateCleanupLoopForUnroll(AffineForOp forOp, in generateCleanupLoopForUnroll()
1060 auto cleanupForOp = cast<AffineForOp>(builder.clone(*forOp)); in generateCleanupLoopForUnroll()
1092 AffineForOp forOp, uint64_t unrollFactor, in loopUnrollByFactor()
1149 LogicalResult mlir::loopUnrollJamUpToFactor(AffineForOp forOp, in loopUnrollJamUpToFactor()
1160 static bool areInnerBoundsInvariant(AffineForOp forOp) { in areInnerBoundsInvariant()
1161 auto walkResult = forOp.walk([&](AffineForOp aForOp) { in areInnerBoundsInvariant()
1188 while (it != e && !isa<AffineForOp>(&*it)) in walk()
1193 while (it != e && isa<AffineForOp>(&*it)) in walk()
1200 LogicalResult mlir::loopUnrollJamByFactor(AffineForOp forOp, in loopUnrollJamByFactor()
1233 SmallVector<AffineForOp, 4> loopsWithIterArgs; in loopUnrollJamByFactor()
1234 forOp.walk([&](AffineForOp aForOp) { in loopUnrollJamByFactor()
1266 SmallVector<AffineForOp, 4> newLoopsWithIterArgs; in loopUnrollJamByFactor()
1268 for (AffineForOp oldForOp : loopsWithIterArgs) { in loopUnrollJamByFactor()
1283 AffineForOp newForOp = mlir::replaceForOpWithNewYields( in loopUnrollJamByFactor()
1394 void mlir::interchangeLoops(AffineForOp forOpA, AffineForOp forOpB) { in interchangeLoops()
1419 ArrayRef<AffineForOp> loops, ArrayRef<unsigned> loopPermMap) { in checkLoopInterchangeDependences()
1451 bool mlir::isValidLoopInterchangePermutation(ArrayRef<AffineForOp> loops, in isValidLoopInterchangePermutation()
1465 mlir::isPerfectlyNested(ArrayRef<AffineForOp> loops) { in isPerfectlyNested()
1476 auto parentForOp = dyn_cast<AffineForOp>(loop->getParentOp()); in isPerfectlyNested()
1487 unsigned mlir::permuteLoops(MutableArrayRef<AffineForOp> input, in permuteLoops()
1557 AffineForOp mlir::sinkSequentialLoops(AffineForOp forOp) { in sinkSequentialLoops()
1558 SmallVector<AffineForOp, 4> loops; in sinkSequentialLoops()
1636 static SmallVector<AffineForOp, 8>
1637 stripmineSink(AffineForOp forOp, uint64_t factor, in stripmineSink()
1638 ArrayRef<AffineForOp> targets) { in stripmineSink()
1657 SmallVector<AffineForOp, 8> innerLoops; in stripmineSink()
1661 auto newForOp = b.create<AffineForOp>(t.getLoc(), lbOperands, lbMap, in stripmineSink()
1680 static AffineForOp stripmineSink(AffineForOp forOp, SizeType factor, in stripmineSink()
1681 AffineForOp target) { in stripmineSink()
1686 auto res = stripmineSink(forOp, factor, ArrayRef<AffineForOp>(target)); in stripmineSink()
1691 SmallVector<SmallVector<AffineForOp, 8>, 8>
1692 mlir::tile(ArrayRef<AffineForOp> forOps, ArrayRef<uint64_t> sizes, in tile()
1693 ArrayRef<AffineForOp> targets) { in tile()
1694 SmallVector<SmallVector<AffineForOp, 8>, 8> res; in tile()
1695 SmallVector<AffineForOp, 8> currentTargets(targets.begin(), targets.end()); in tile()
1704 SmallVector<AffineForOp, 8> mlir::tile(ArrayRef<AffineForOp> forOps, in tile()
1706 AffineForOp target) { in tile()
1707 SmallVector<AffineForOp, 8> res; in tile()
1708 for (auto loops : tile(forOps, sizes, ArrayRef<AffineForOp>(target))) { in tile()
1715 LogicalResult mlir::coalesceLoops(MutableArrayRef<AffineForOp> loops) { in coalesceLoops()
1719 AffineForOp innermost = loops.back(); in coalesceLoops()
1720 AffineForOp outermost = loops.front(); in coalesceLoops()
1725 for (AffineForOp loop : loops) { in coalesceLoops()
1745 for (AffineForOp loop : loops.drop_front()) { in coalesceLoops()
1820 AffineForOp secondOutermostLoop = loops[1]; in coalesceLoops()
1877 SmallVector<AffineForOp, 4> enclosingFors; in findHighestBlockForPlacement()
1947 static AffineForOp
1967 AffineForOp copyNestRoot; in generatePointWiseCopy()
2350 SmallVector<AffineForOp, 4> ivs; in getFullMemRefAsRegion()
2540 AffineForOp forOp; in affineDataCopyGenerate()
2541 if (llvm::DebugFlag && (forOp = dyn_cast<AffineForOp>(&*begin))) { in affineDataCopyGenerate()
2558 LogicalResult mlir::affineDataCopyGenerate(AffineForOp forOp, in affineDataCopyGenerate()
2596 std::vector<SmallVector<AffineForOp, 2>> &depthToLoops) { in gatherLoopsInBlock() argument
2603 if (auto forOp = dyn_cast<AffineForOp>(op)) { in gatherLoopsInBlock()
2612 std::vector<SmallVector<AffineForOp, 2>> &depthToLoops) { in gatherLoops() argument
2627 AffineForOp mlir::createCanonicalizedAffineForOp( in createCanonicalizedAffineForOp()
2640 return b.create<AffineForOp>(loc, lowerOperands, lbMap, upperOperands, ubMap, in createCanonicalizedAffineForOp()
2649 static AffineIfOp createSeparationCondition(MutableArrayRef<AffineForOp> loops, in createSeparationCondition()
2729 createFullTiles(MutableArrayRef<AffineForOp> inputNest, in createFullTiles()
2730 SmallVectorImpl<AffineForOp> &fullTileLoops, OpBuilder b) { in createFullTiles()
2765 AffineForOp fullTileLoop = createCanonicalizedAffineForOp( in createFullTiles()
2784 mlir::separateFullTiles(MutableArrayRef<AffineForOp> inputNest, in separateFullTiles()
2785 SmallVectorImpl<AffineForOp> *fullTileNest) { in separateFullTiles()
2799 SmallVector<AffineForOp, 4> fullTileLoops; in separateFullTiles()
2819 AffineForOp outermostFullTileLoop = fullTileLoops[0]; in separateFullTiles()