Lines Matching defs:band

53   void getTileSizes(ArrayRef<AffineForOp> band,
78 static void adjustToDivisorsOfTripCounts(ArrayRef<AffineForOp> band,
80 assert(band.size() == tileSizes->size() && "invalid tile size count");
81 for (unsigned i = 0, e = band.size(); i < e; i++) {
83 std::optional<uint64_t> mayConst = getConstantTripCount(band[i]);
102 void LoopTiling::getTileSizes(ArrayRef<AffineForOp> band,
104 if (band.empty())
109 tileSizes->assign(band.size(), tileSize);
116 tileSizes->resize(band.size(), kDefaultTileSize);
119 tileSizes->resize(band.size());
121 // The first loop in the band.
122 AffineForOp rootForOp = band[0];
129 std::optional<int64_t> fp = getMemoryFootprintBytes(band[0], 0);
135 adjustToDivisorsOfTripCounts(band, tileSizes);
157 // For an n-d tileable band, compute the n^th root of the excess.
159 static_cast<unsigned>(floorl(std::pow(excessFactor, 1.0 / band.size())));
162 for (unsigned i = 0, e = band.size(); i < e; i++) {
172 adjustToDivisorsOfTripCounts(band, tileSizes);
180 // Tile each band.
181 for (auto &band : bands) {
182 if (!isTilingValid(band)) {
183 band.front().emitRemark("tiling nest is invalid due to dependences");
190 getTileSizes(band, &tileSizes);
192 auto diag = band[0].emitRemark("using tile sizes [");
198 if (failed(tilePerfectlyNested(band, tileSizes, &tiledNest))) {
199 // An empty band always succeeds.
200 assert(!band.empty() && "guaranteed to succeed on empty bands");
201 LLVM_DEBUG(band.front()->emitRemark("loop tiling failed!\n"));
208 MutableArrayRef<AffineForOp>(tiledNest).drop_front(band.size());