Lines Matching +defs:region +defs:end

41 // operations, and whether or not a region holding op other than ForOp and IfOp
124 // Return false if a region holding op other than 'affine.for' and
164 // non-affine ops with memory effects, and region-holding ops with a
167 // point we check which memrefs if any are used in the region.
171 // Return false if non-handled/unknown region-holding ops are found. We
175 << "MDG init failed; unknown region-holding op found!\n");
207 if (it == loops.end())
238 assert(it != nodes.end());
336 for (auto *it = inEdges[dstId].begin(); it != inEdges[dstId].end(); ++it) {
343 for (auto *it = outEdges[srcId].begin(); it != outEdges[srcId].end(); ++it) {
621 if (it != inEdges.end()) {
626 if (it != outEdges.end()) {
644 std::reverse(loops->begin(), loops->end());
659 std::reverse(ops->begin(), ops->end());
689 values.append(lbOperands[0].begin(), lbOperands[0].end());
694 for (unsigned i = numDims, end = values.size(); i < end; ++i) {
754 for (unsigned i = 0, end = lbs.size(); i < end; ++i) {
915 for (int i = consumerIVs.size(), end = ivs.size(); i < end; ++i)
950 assert(rank == cst.getNumDimVars() && "inconsistent memref region");
952 // Use a copy of the region constraints that has upper/lower bounds for each
955 // this on the region itself since they might just be redundant constraints
966 // Find a constant upper bound on the extent of this memref region along each
1009 assert(rank == cst.getNumDimVars() && "inconsistent memref region");
1016 assert(lbMap && "lower bound for a region must exist");
1017 assert(ubMap && "upper bound for a region must exist");
1027 /// Computes the memory region accessed by this memref with the region
1030 // For example, the memref region for this load operation at loopDepth = 1 will
1039 // region: {memref = %A, write = false, {%i <= m0 <= %i + 7} }
1064 // The first 'loopDepth' IVs are symbols for this region.
1066 // A 0-d memref has a 0-d region.
1071 // Build the constraints for this region.
1149 // dimensions are the dimensional variables for the memref region.
1153 // this memref region is symbolic.
1190 LLVM_DEBUG(llvm::dbgs() << "Memory region:\n");
1214 // Returns the size of the region.
1271 MemRefRegion region(op->getLoc());
1272 if (failed(region.compute(op, /*loopDepth=*/0, /*sliceState=*/nullptr,
1276 LLVM_DEBUG(llvm::dbgs() << "Memory region");
1277 LLVM_DEBUG(region.getConstraints()->dump());
1284 FlatAffineValueConstraints ucst(*region.getConstraints());
1286 // Intersect memory region with constraint capturing out of bounds (both out
1304 FlatAffineValueConstraints lcst(*region.getConstraints());
1305 std::fill(ineq.begin(), ineq.end(), 0);
1338 std::reverse(positions->begin(), positions->end());
1358 for (auto &region : op.getRegions()) {
1359 for (auto &b : region)
1560 : std::prev(surroundingLoops[loopDepth - 1].getBody()->end());
1708 : std::prev(srcLoopIVs[loopDepth - 1].getBody()->end());
1888 std::reverse(ivs.begin(), ivs.end());
1911 Block::iterator end,
1916 auto result = block.walk(start, end, [&](Operation *opInst) -> WalkResult {
1922 // Compute the memref region symbolic in any IVs enclosing this block.
1923 auto region = std::make_unique<MemRefRegion>(opInst->getLoc());
1925 region->compute(opInst,
1927 return opInst->emitError("error obtaining memory region\n");
1930 auto [it, inserted] = regions.try_emplace(region->memref);
1932 it->second = std::move(region);
1933 } else if (failed(it->second->unionBoundingBox(*region))) {
1936 "region");
1944 for (const auto &region : regions) {
1945 std::optional<int64_t> size = region.second->getRegionSize();