45 int releaseTknVal, Value buf,
int offset,
int len,
46 DMAChannelDir dmaDir,
int channelIndex,
47 ConversionPatternRewriter &rewriter)
const {
49 Region &r = mem.getBody();
50 Block &endBlock = r.back();
51 Block *dmaBlock = rewriter.createBlock(&endBlock);
52 Block *bdBlock = rewriter.createBlock(&endBlock);
54 rewriter.setInsertionPointToStart(dmaBlock);
55 rewriter.create<DMAStartOp>(rewriter.getUnknownLoc(), dmaDir, channelIndex,
56 0, bdBlock, &endBlock);
62 rewriter.setInsertionPointToStart(bdBlock);
63 rewriter.create<UseTokenOp>(rewriter.getUnknownLoc(), tokenName,
64 acquireTknVal, LockAction::Acquire);
65 rewriter.create<DMABDOp>(rewriter.getUnknownLoc(), buf, offset, len);
66 rewriter.create<UseTokenOp>(rewriter.getUnknownLoc(), tokenName,
67 releaseTknVal, LockAction::Release);
68 rewriter.create<NextBDOp>(rewriter.getUnknownLoc(), &endBlock);
73 ConversionPatternRewriter &rewriter)
const override {
74 Value srcBuf = op.getSrcBuf();
75 Value dstBuf = op.getDstBuf();
77 StringRef tokenName = op.getTokenName();
78 int acquireTknVal = op.getAcquireTokenValue();
79 int releaseTknVal = op.getReleaseTokenValue();
80 int srcOffset = op.getSrcOffsetValue();
81 int dstOffset = op.getDstOffsetValue();
82 int srcLen = op.getSrcLenValue();
83 int dstLen = op.getDstLenValue();
85 MemOp srcMem = srcTileOp(op).getMemOp();
86 MemOp dstMem = dstTileOp(op).getMemOp();
89 srcBuf, srcOffset, srcLen, DMAChannelDir::MM2S, 0,
92 dstBuf, dstOffset, dstLen, DMAChannelDir::S2MM, 0,