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