51 DeviceOp device = getOperation();
52 OpBuilder builder = OpBuilder::atBlockTerminator(device.getBody());
54 for (
auto multicast : device.getOps<MulticastOp>()) {
55 Region &r = multicast.getPorts();
57 Port sourcePort = multicast.port();
58 TileOp srcTile = dyn_cast<TileOp>(multicast.getTile().getDefiningOp());
59 for (Operation &Op : b.getOperations()) {
60 if (MultiDestOp multiDest = dyn_cast<MultiDestOp>(Op)) {
62 dyn_cast<TileOp>(multiDest.getTile().getDefiningOp());
63 Port destPort = multiDest.port();
64 builder.create<FlowOp>(builder.getUnknownLoc(), srcTile,
65 sourcePort.bundle, sourcePort.channel,
66 destTile, destPort.bundle, destPort.channel);
71 ConversionTarget target(getContext());
72 RewritePatternSet patterns(&getContext());
76 if (failed(applyPartialConversion(device, target, std::move(patterns))))