50 int releaseTknVal, Value buf,
int offset,
int len,
51 DMAChannelDir dmaDir,
int channelIndex,
52 ConversionPatternRewriter &rewriter)
const {
54 Region &r = mem.getBody();
55 Block &endBlock = r.back();
56 Block *dmaBlock = rewriter.createBlock(&endBlock);
57 Block *bdBlock = rewriter.createBlock(&endBlock);
59 rewriter.setInsertionPointToStart(dmaBlock);
60 DMAStartOp::create(rewriter, rewriter.getUnknownLoc(), dmaDir, channelIndex,
61 0, bdBlock, &endBlock);
67 rewriter.setInsertionPointToStart(bdBlock);
68 UseTokenOp::create(rewriter, rewriter.getUnknownLoc(), tokenName,
69 acquireTknVal, LockAction::Acquire);
70 DMABDOp::create(rewriter, rewriter.getUnknownLoc(), buf, offset, len);
71 UseTokenOp::create(rewriter, rewriter.getUnknownLoc(), tokenName,
72 releaseTknVal, LockAction::Release);
73 NextBDOp::create(rewriter, rewriter.getUnknownLoc(), &endBlock);
78 ConversionPatternRewriter &rewriter)
const override {
79 Value srcBuf = op.getSrcBuf();
80 Value dstBuf = op.getDstBuf();
82 StringRef tokenName = op.getTokenName();
83 int acquireTknVal = op.getAcquireTokenValue();
84 int releaseTknVal = op.getReleaseTokenValue();
85 int srcOffset = op.getSrcOffsetValue();
86 int dstOffset = op.getDstOffsetValue();
87 int srcLen = op.getSrcLenValue();
88 int dstLen = op.getDstLenValue();
90 MemOp srcMem = srcTileOp(op).getMemOp();
91 MemOp dstMem = dstTileOp(op).getMemOp();
94 srcBuf, srcOffset, srcLen, DMAChannelDir::MM2S, 0,
97 dstBuf, dstOffset, dstLen, DMAChannelDir::S2MM, 0,
100 rewriter.eraseOp(op);