- Also use functions in Region instead of Region::getBlocks() where possible.
Differential Revision: https://reviews.llvm.org/D82032
}
KernelDim3 LaunchOp::getBlockIds() {
- assert(!body().getBlocks().empty() && "FuncOp body must not be empty.");
+ assert(!body().empty() && "LaunchOp body must not be empty.");
auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[0], args[1], args[2]};
}
KernelDim3 LaunchOp::getThreadIds() {
- assert(!body().getBlocks().empty() && "FuncOp body must not be empty.");
+ assert(!body().empty() && "LaunchOp body must not be empty.");
auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[3], args[4], args[5]};
}
KernelDim3 LaunchOp::getGridSize() {
- assert(!body().getBlocks().empty() && "FuncOp body must not be empty.");
+ assert(!body().empty() && "LaunchOp body must not be empty.");
auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[6], args[7], args[8]};
}
KernelDim3 LaunchOp::getBlockSize() {
- assert(!body().getBlocks().empty() && "FuncOp body must not be empty.");
+ assert(!body().empty() && "LaunchOp body must not be empty.");
auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[9], args[10], args[11]};
}
SmallVector<Value, 8> handles(blockTypes.size());
BlockBuilder(&b, op->getRegion(0), blockTypes,
handles)([&] { regionBuilder(b.getBlock()->getArguments()); });
- assert(op->getRegion(0).getBlocks().size() == 1);
+ assert(llvm::hasSingleElement(op->getRegion(0)));
return op;
}
<< " inputs (tensor or buffer) and output buffer operands";
auto ®ion = op.region();
- if (region.getBlocks().size() != 1)
+ if (!llvm::hasSingleElement(region))
return op.emitOpError("expected region with 1 block");
if (failed(BlockArgsVerifier<GenericOpType>::verify(op, region.front())))
return failure();
indexedGenericOp.emitOpError("expected a region");
return;
}
- auto &block = region.getBlocks().front();
+ auto &block = region.front();
OpBuilder::InsertionGuard g(b);
b.setInsertionPointToStart(&block);
DenseMap<Value, SetVector<unsigned>> memrefAccesses;
// TODO: support multi-block functions.
- if (f.getBlocks().size() != 1)
+ if (!llvm::hasSingleElement(f))
return false;
DenseMap<Operation *, unsigned> forToNodeMap;
void MemRefDataFlowOpt::runOnFunction() {
// Only supports single block functions at the moment.
FuncOp f = getFunction();
- if (f.getBlocks().size() != 1) {
+ if (!llvm::hasSingleElement(f)) {
markAllAnalysesPreserved();
return;
}
for (Region ®ion : op.getRegions()) {
for (auto indexed_block : llvm::enumerate(region)) {
// Suffix block number if there are more than 1 block.
- auto blockName = region.getBlocks().size() == 1
+ auto blockName = llvm::hasSingleElement(region)
? ""
: ("__" + llvm::utostr(indexed_block.index()));
llvm::WriteGraph(os, &indexed_block.value(), short_names,
// Only support single block functions at this point.
FuncOp f = getFunction();
- if (f.getBlocks().size() != 1)
+ if (!llvm::hasSingleElement(f))
return;
std::string str;