67 PatternRewriter &rewriter)
const override {
68 DMAStartBdChainOp start_op = llvm::dyn_cast<DMAStartBdChainOp>(op);
72 rewriter.setInsertionPointAfter(start_op);
75 AIE::BDChainOp chain_def = start_op.getBDChainOp();
77 Region &source_region = chain_def.getBody();
80 DMAConfigureTaskOp configure_op = rewriter.create<DMAConfigureTaskOp>(
81 start_op.getLoc(), rewriter.getIndexType(), start_op.getTile(),
82 start_op.getDirection(), start_op.getChannel(),
83 start_op.getIssueToken(), start_op.getRepeatCount());
84 Region &target_region = configure_op.getBody();
89 ValueRange values = start_op.getArgs();
90 for (
unsigned i = 0, n = source_region.getNumArguments(); i < n; i++) {
91 BlockArgument arg = source_region.getArgument(i);
92 Value val = values[i];
93 assert(arg.getType() == val.getType());
94 arg_map.map(arg, val);
96 source_region.cloneInto(&target_region, arg_map);
99 rewriter.replaceAllUsesWith(start_op.getResult(), configure_op.getResult());
102 rewriter.create<DMAStartTaskOp>(start_op.getLoc(),
103 configure_op.getResult());
106 rewriter.eraseOp(start_op);