76 PatternRewriter &rewriter)
const override {
77 DMAStartBdChainOp start_op = llvm::dyn_cast<DMAStartBdChainOp>(op);
81 rewriter.setInsertionPointAfter(start_op);
84 AIE::BDChainOp chain_def = start_op.getBDChainOp();
86 Region &source_region = chain_def.getBody();
89 DMAConfigureTaskOp configure_op = DMAConfigureTaskOp::create(
90 rewriter, start_op.getLoc(), rewriter.getIndexType(),
91 start_op.getTile(), start_op.getDirection(), start_op.getChannel(),
92 start_op.getIssueToken(), start_op.getRepeatCount());
93 Region &target_region = configure_op.getBody();
98 ValueRange values = start_op.getArgs();
99 for (
unsigned i = 0, n = source_region.getNumArguments(); i < n; i++) {
100 BlockArgument arg = source_region.getArgument(i);
101 Value val = values[i];
102 assert(arg.getType() == val.getType());
103 arg_map.map(arg, val);
105 source_region.cloneInto(&target_region, arg_map);
108 rewriter.replaceAllUsesWith(start_op.getResult(), configure_op.getResult());
111 DMAStartTaskOp::create(rewriter, start_op.getLoc(),
112 configure_op.getResult());
115 rewriter.eraseOp(start_op);