[NFC] Use llvm::hasSingleElement() in place of .size() == 1

- Also use functions in Region instead of Region::getBlocks() where possible.

Differential Revision: https://reviews.llvm.org/D82032
This commit is contained in:
Rahul Joshi 2020-06-17 13:20:36 -07:00
parent 6c45532908
commit 2eaadfc4fe
8 changed files with 11 additions and 11 deletions

View File

@ -218,25 +218,25 @@ void LaunchOp::build(OpBuilder &builder, OperationState &result,
} }
KernelDim3 LaunchOp::getBlockIds() { 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(); auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[0], args[1], args[2]}; return KernelDim3{args[0], args[1], args[2]};
} }
KernelDim3 LaunchOp::getThreadIds() { 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(); auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[3], args[4], args[5]}; return KernelDim3{args[3], args[4], args[5]};
} }
KernelDim3 LaunchOp::getGridSize() { 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(); auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[6], args[7], args[8]}; return KernelDim3{args[6], args[7], args[8]};
} }
KernelDim3 LaunchOp::getBlockSize() { 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(); auto args = body().getBlocks().front().getArguments();
return KernelDim3{args[9], args[10], args[11]}; return KernelDim3{args[9], args[10], args[11]};
} }

View File

@ -140,7 +140,7 @@ Operation *mlir::edsc::makeGenericLinalgOp(
SmallVector<Value, 8> handles(blockTypes.size()); SmallVector<Value, 8> handles(blockTypes.size());
BlockBuilder(&b, op->getRegion(0), blockTypes, BlockBuilder(&b, op->getRegion(0), blockTypes,
handles)([&] { regionBuilder(b.getBlock()->getArguments()); }); handles)([&] { regionBuilder(b.getBlock()->getArguments()); });
assert(op->getRegion(0).getBlocks().size() == 1); assert(llvm::hasSingleElement(op->getRegion(0)));
return op; return op;
} }

View File

@ -202,7 +202,7 @@ static LogicalResult verifyGenericOp(GenericOpType op) {
<< " inputs (tensor or buffer) and output buffer operands"; << " inputs (tensor or buffer) and output buffer operands";
auto &region = op.region(); auto &region = op.region();
if (region.getBlocks().size() != 1) if (!llvm::hasSingleElement(region))
return op.emitOpError("expected region with 1 block"); return op.emitOpError("expected region with 1 block");
if (failed(BlockArgsVerifier<GenericOpType>::verify(op, region.front()))) if (failed(BlockArgsVerifier<GenericOpType>::verify(op, region.front())))
return failure(); return failure();

View File

@ -182,7 +182,7 @@ static void transformIndexedGenericOpIndices(
indexedGenericOp.emitOpError("expected a region"); indexedGenericOp.emitOpError("expected a region");
return; return;
} }
auto &block = region.getBlocks().front(); auto &block = region.front();
OpBuilder::InsertionGuard g(b); OpBuilder::InsertionGuard g(b);
b.setInsertionPointToStart(&block); b.setInsertionPointToStart(&block);

View File

@ -636,7 +636,7 @@ bool MemRefDependenceGraph::init(FuncOp f) {
DenseMap<Value, SetVector<unsigned>> memrefAccesses; DenseMap<Value, SetVector<unsigned>> memrefAccesses;
// TODO: support multi-block functions. // TODO: support multi-block functions.
if (f.getBlocks().size() != 1) if (!llvm::hasSingleElement(f))
return false; return false;
DenseMap<Operation *, unsigned> forToNodeMap; DenseMap<Operation *, unsigned> forToNodeMap;

View File

@ -178,7 +178,7 @@ void MemRefDataFlowOpt::forwardStoreToLoad(AffineLoadOp loadOp) {
void MemRefDataFlowOpt::runOnFunction() { void MemRefDataFlowOpt::runOnFunction() {
// Only supports single block functions at the moment. // Only supports single block functions at the moment.
FuncOp f = getFunction(); FuncOp f = getFunction();
if (f.getBlocks().size() != 1) { if (!llvm::hasSingleElement(f)) {
markAllAnalysesPreserved(); markAllAnalysesPreserved();
return; return;
} }

View File

@ -130,7 +130,7 @@ struct PrintOpPass : public PrintOpBase<PrintOpPass> {
for (Region &region : op.getRegions()) { for (Region &region : op.getRegions()) {
for (auto indexed_block : llvm::enumerate(region)) { for (auto indexed_block : llvm::enumerate(region)) {
// Suffix block number if there are more than 1 block. // 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::utostr(indexed_block.index()));
llvm::WriteGraph(os, &indexed_block.value(), short_names, llvm::WriteGraph(os, &indexed_block.value(), short_names,

View File

@ -248,7 +248,7 @@ void VectorizerTestPass::runOnFunction() {
// Only support single block functions at this point. // Only support single block functions at this point.
FuncOp f = getFunction(); FuncOp f = getFunction();
if (f.getBlocks().size() != 1) if (!llvm::hasSingleElement(f))
return; return;
std::string str; std::string str;