Lines Matching +full:depth +full:- +full:wise
1 //===- AffineDataCopyGeneration.cpp - Explicit memref copying pass ------*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 // point-wise load/store's or DMAs. Such explicit copying (also referred to as
20 //===----------------------------------------------------------------------===//
44 #define DEBUG_TYPE "affine-data-copy-generate"
57 /// inner levels if necessary to determine at what depth copies need to be
71 this->slowMemorySpace = slowMemorySpace;
72 this->fastMemorySpace = fastMemorySpace;
73 this->tagMemorySpace = tagMemorySpace;
74 this->minDmaTransferSize = minDmaTransferSize;
75 this->fastMemoryCapacity = fastMemCapacityBytes / 1024;
109 if (block->empty())
130 std::find_if(block->begin(), block->end(), [&](Operation &op) {
137 while (it != block->end()) {
139 // If you hit a non-copy for loop, we will split there.
156 // until we find a depth at which footprint fits in fast mem capacity. If
172 // Inner loop copies have their own scope - we don't thus update
180 curBegin = std::find_if(std::next(it), block->end(), [&](Operation &op) {
194 if (curBegin != block->end()) {
196 assert(!curBegin->hasTrait<OpTrait::IsTerminator>() &&
198 // Exclude the affine.yield - hence, the std::prev.
200 /*end=*/std::prev(block->end()), copyOptions,
210 // Nests that are copy-in's or copy-out's; the root AffineForOps of those
226 nest->walk([&](Operation *op) {