78 PatternRewriter &rewriter)
const override {
79 DMAStartBdChainOp start_op = llvm::dyn_cast<DMAStartBdChainOp>(op);
83 rewriter.setInsertionPointAfter(start_op);
86 AIE::BDChainOp chain_def = start_op.getBDChainOp();
88 Region &source_region = chain_def.getBody();
91 DMAConfigureTaskOp configure_op = DMAConfigureTaskOp::create(
92 rewriter, start_op.getLoc(), rewriter.getIndexType(),
93 start_op.getTile(), start_op.getDirection(), start_op.getChannel(),
94 start_op.getIssueToken(), start_op.getRepeatCount());
95 Region &target_region = configure_op.getBody();
100 ValueRange values = start_op.getArgs();
101 for (
unsigned i = 0, n = source_region.getNumArguments(); i < n; i++) {
102 BlockArgument arg = source_region.getArgument(i);
103 Value val = values[i];
104 assert(arg.getType() == val.getType());
105 arg_map.map(arg, val);
107 source_region.cloneInto(&target_region, arg_map);
110 rewriter.replaceAllUsesWith(start_op.getResult(), configure_op.getResult());
113 DMAStartTaskOp::create(rewriter, start_op.getLoc(),
114 configure_op.getResult());
117 rewriter.eraseOp(start_op);