This commit is contained in:
@@ -50,64 +50,6 @@ static void printBlockArgumentList(OpAsmPrinter& printer, ArrayRef<BlockArgument
|
||||
printer << ")";
|
||||
}
|
||||
|
||||
static void printBlockHeaderWithoutArgLocs(OpAsmPrinter& printer, Block& block) {
|
||||
printer.printSuccessor(&block);
|
||||
if (block.getNumArguments() == 0) {
|
||||
printer << ":";
|
||||
return;
|
||||
}
|
||||
|
||||
printer << "(";
|
||||
for (auto [index, argument] : llvm::enumerate(block.getArguments())) {
|
||||
if (index != 0)
|
||||
printer << ", ";
|
||||
printer.printOperand(argument);
|
||||
printer << ": ";
|
||||
printer.printType(argument.getType());
|
||||
}
|
||||
printer << "):";
|
||||
}
|
||||
|
||||
static void printRegionWithoutBlockArgLocs(OpAsmPrinter& printer,
|
||||
Region& region,
|
||||
bool printEntryBlockArgs = true,
|
||||
bool printBlockTerminators = true,
|
||||
bool printEmptyBlock = false,
|
||||
bool printEntryBlockHeaderWhenMultiblock = false) {
|
||||
printer << " {";
|
||||
if (region.empty()) {
|
||||
if (printEmptyBlock)
|
||||
printer << "\n";
|
||||
printer << "}";
|
||||
return;
|
||||
}
|
||||
|
||||
bool hasMultipleBlocks = std::next(region.begin()) != region.end();
|
||||
for (auto [blockIndex, block] : llvm::enumerate(region)) {
|
||||
bool printBlockHeader = blockIndex != 0 || printEntryBlockArgs
|
||||
|| (blockIndex == 0 && printEntryBlockHeaderWhenMultiblock && hasMultipleBlocks)
|
||||
|| (printEmptyBlock && block.empty());
|
||||
unsigned indent = printBlockHeader ? 4u : 2u;
|
||||
|
||||
if (printBlockHeader) {
|
||||
printer.getStream() << "\n";
|
||||
printer.getStream().indent(2);
|
||||
printBlockHeaderWithoutArgLocs(printer, block);
|
||||
}
|
||||
|
||||
for (Operation& nestedOp : block) {
|
||||
if (!printBlockTerminators && nestedOp.hasTrait<OpTrait::IsTerminator>())
|
||||
continue;
|
||||
printer.getStream() << "\n";
|
||||
printer.getStream().indent(indent);
|
||||
printer.printCustomOrGenericOp(&nestedOp);
|
||||
}
|
||||
}
|
||||
|
||||
printer.getStream() << "\n";
|
||||
printer << "}";
|
||||
}
|
||||
|
||||
static ParseResult parseBlockArgumentList(OpAsmParser& parser, SmallVectorImpl<OpAsmParser::Argument>& arguments) {
|
||||
if (parser.parseLParen())
|
||||
return failure();
|
||||
@@ -218,9 +160,7 @@ void printComputeLikeOp(ComputeOpTy op, OpAsmPrinter& printer) {
|
||||
printer << " -> ";
|
||||
printCompressedTypeSequence(printer, op.getResultTypes());
|
||||
printer << " ";
|
||||
printRegionWithoutBlockArgLocs(
|
||||
printer, op.getBody(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/true,
|
||||
/*printEmptyBlock=*/false, /*printEntryBlockHeaderWhenMultiblock=*/true);
|
||||
printer.printRegion(op.getBody(), /*printEntryBlockArgs=*/!op.getBody().hasOneBlock());
|
||||
}
|
||||
|
||||
template <typename ComputeOpTy>
|
||||
@@ -350,9 +290,7 @@ void printComputeBatchLikeOp(ComputeBatchOpTy op, OpAsmPrinter& printer) {
|
||||
printer << " -> ";
|
||||
printCompressedTypeSequence(printer, op.getResultTypes());
|
||||
printer << " ";
|
||||
printRegionWithoutBlockArgLocs(
|
||||
printer, op.getBody(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/true,
|
||||
/*printEmptyBlock=*/false, /*printEntryBlockHeaderWhenMultiblock=*/true);
|
||||
printer.printRegion(op.getBody(), /*printEntryBlockArgs=*/!op.getBody().hasOneBlock());
|
||||
}
|
||||
|
||||
template <typename ComputeBatchOpTy>
|
||||
@@ -521,7 +459,7 @@ void SpatDeferredCommunicationOp::print(OpAsmPrinter& printer) {
|
||||
printer << " : ";
|
||||
printer.printFunctionalType(getSources().getTypes(), getOperation()->getResultTypes());
|
||||
printer << " ";
|
||||
printRegionWithoutBlockArgLocs(printer, getBody(), /*printEntryBlockArgs=*/false);
|
||||
printer.printRegion(getBody(), /*printEntryBlockArgs=*/false);
|
||||
}
|
||||
|
||||
ParseResult SpatDeferredCommunicationOp::parse(OpAsmParser& parser, OperationState& result) {
|
||||
@@ -763,8 +701,7 @@ ParseResult SpatScheduledComputeBatch::parse(OpAsmParser& parser, OperationState
|
||||
|
||||
void SpatInParallelOp::print(OpAsmPrinter& printer) {
|
||||
printer << " ";
|
||||
printRegionWithoutBlockArgLocs(
|
||||
printer, getRegion(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/false);
|
||||
printer.printRegion(getRegion(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/false);
|
||||
printer.printOptionalAttrDict((*this)->getAttrs());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user