@@ -35,11 +35,11 @@ struct HalfDmaCpyNdToNpuConverter final
3535 // / is specific to Shim BDs for now.
3636 FailureOr<AMDAIE::NpuPushToQueueOp> insertWriteBdOps (
3737 AMDAIE::NpuHalfDmaCpyNdOp op, ConversionPatternRewriter &rewriter,
38- AMDAIE::AMDAIETileType tileType, AMDAIE::BdIdOp bdIdOp ,
39- AMDAIE::ChannelOp channelOp, int64_t bufferLength , int64_t bufferOffset ,
40- int32_t enablePacket , int32_t packetId , int32_t packetType ,
41- SmallVector<OpFoldResult> sizes , SmallVector<OpFoldResult> strides ,
42- bool loweringCtrlpktDma) const {
38+ AMDAIE::AMDAIETileType tileType, AMDAIE::ConnectionOp connectionOp ,
39+ AMDAIE::BdIdOp bdIdOp, AMDAIE::ChannelOp channelOp , int64_t bufferLength ,
40+ int64_t bufferOffset , int32_t enablePacket , int32_t packetId ,
41+ int32_t packetType , SmallVector<OpFoldResult> sizes ,
42+ SmallVector<OpFoldResult> strides, bool loweringCtrlpktDma) const {
4343 FailureOr<uint8_t > maybeNumIntraAddrDim = deviceModel.getDmaProp <uint8_t >(
4444 tileType, AMDAIE::AMDAIEDmaProp::NumAddrDim);
4545 if (failed (maybeNumIntraAddrDim)) return failure ();
@@ -190,11 +190,11 @@ struct HalfDmaCpyNdToNpuConverter final
190190 // Offset set to zero for shim as the offset is embedded in the address
191191 // patch.
192192 rewriter.create <AMDAIE::NpuWriteBdOp>(
193- op.getLoc (), col, row, bdId, innerBufferLength, 0 , staticSizes ,
194- staticStrides, paddingsBefore, paddingsAfter, iterationCurrent ,
195- iterationSize, iterationStride, enablePacket, packetId, packetType ,
196- outOfOrderId, useNextBd, nextBd, validBd, lockAcqEnable, lockRelVal ,
197- lockRelId, lockAcqVal, lockAcqId);
193+ op.getLoc (), connectionOp, col, row, bdId, innerBufferLength, 0 ,
194+ staticSizes, staticStrides, paddingsBefore, paddingsAfter,
195+ iterationCurrent, iterationSize, iterationStride, enablePacket,
196+ packetId, packetType, outOfOrderId, useNextBd, nextBd, validBd ,
197+ lockAcqEnable, lockRelVal, lockRelId, lockAcqVal, lockAcqId);
198198 rewriter.create <AMDAIE::NpuAddressPatchOp>(op.getLoc (), col, bdId, argIdx,
199199 bufferOffsetInBytes);
200200 SmallVector<Type> resultTypes = {
@@ -267,10 +267,10 @@ struct HalfDmaCpyNdToNpuConverter final
267267 SmallVector<OpFoldResult> sizes = op.getMixedSizes ();
268268 SmallVector<OpFoldResult> strides = op.getMixedStrides ();
269269 FailureOr<AMDAIE::NpuPushToQueueOp> npuPushToQueueOp = insertWriteBdOps (
270- op, rewriter, AMDAIE::AMDAIETileType::SHIMNOC, maybeBdIdOp. value (),
271- maybeChannelOp .value (), maybeSize .value (), maybeOffset .value (),
272- enablePacket, packetId, packetType, sizes, strides ,
273- *maybeIsControlFlow);
270+ op, rewriter, AMDAIE::AMDAIETileType::SHIMNOC,
271+ maybeConnectionOp .value (), maybeBdIdOp .value (), maybeChannelOp .value (),
272+ maybeSize. value (), maybeOffset. value (), enablePacket, packetId ,
273+ packetType, sizes, strides, *maybeIsControlFlow);
274274 if (failed (npuPushToQueueOp)) return failure ();
275275 rewriter.replaceOp (op, *npuPushToQueueOp);
276276
@@ -411,17 +411,17 @@ BDDimLayoutAndLength convertSizeStrideToBDDimLayoutArrayAttr(
411411// / amdaie.end
412412// / }
413413LogicalResult createDMABlocks (
414- IRRewriter &rewriter, Operation *tileOp, AMDAIE::DMAChannelDir channelDir ,
415- int channelIndex , ArrayRef<int64_t > sizes, ArrayRef< int64_t > strides ,
416- size_t acqNum, size_t relNum, int64_t offset,
414+ IRRewriter &rewriter, AMDAIE::ChannelOp channelOp ,
415+ AMDAIE::ConnectionOp connectionOp , ArrayRef<int64_t > sizes,
416+ ArrayRef< int64_t > strides, size_t acqNum, size_t relNum, int64_t offset,
417417 const SmallVector<AMDAIE::BufferOp> &bufferOps,
418418 const std::pair<AMDAIE::LockOp, AMDAIE::LockOp> &locks,
419419 std::optional<uint8_t > pktId) {
420420 OpBuilder::InsertionGuard g (rewriter);
421421
422422 // Create DMA start on channel.
423423 auto dmaStartOp = rewriter.create <AMDAIE::DMAStartOp>(
424- rewriter.getUnknownLoc (), tileOp-> getResult ( 0 ), channelDir, channelIndex ,
424+ rewriter.getUnknownLoc (), channelOp, ValueRange{connectionOp} ,
425425 /* repeatCount=*/ 1 );
426426 rewriter.setInsertionPointToStart (&dmaStartOp.getRegion ().emplaceBlock ());
427427 rewriter.create <AMDAIE::EndOp>(rewriter.getUnknownLoc ());
@@ -583,10 +583,10 @@ static LogicalResult processConnectionSourceForDmaStart(
583583 sourceMemSpace, [&]() { return connectionOp->emitOpError (); }))) {
584584 return failure ();
585585 };
586- if (failed (createDMABlocks (rewriter, tileOp, AMDAIE::DMAChannelDir::MM2S ,
587- channel. getValue (), canonicalizedSizes ,
588- canonicalizedStrides, acqNum, acqNum ,
589- sourceOffset, buffers, lockPair, packetId))) {
586+ if (failed (createDMABlocks (rewriter, channel, connectionOp ,
587+ canonicalizedSizes, canonicalizedStrides, acqNum ,
588+ acqNum, sourceOffset, buffers, lockPair ,
589+ packetId))) {
590590 return sourceObjFifo.emitOpError () << " could not create DMA operations" ;
591591 }
592592 }
@@ -666,10 +666,10 @@ static LogicalResult processConnectionTargetForDmaStart(
666666 targetMemSpace, [&]() { return connectionOp->emitOpError (); }))) {
667667 return failure ();
668668 };
669- if (failed (createDMABlocks (rewriter, tileOp, AMDAIE::DMAChannelDir::S2MM ,
670- channel. getValue (), canonicalizedSizes ,
671- canonicalizedStrides, acqNum, acqNum ,
672- targetOffset, buffers, lockPair, packetId))) {
669+ if (failed (createDMABlocks (rewriter, channel, connectionOp ,
670+ canonicalizedSizes, canonicalizedStrides, acqNum ,
671+ acqNum, targetOffset, buffers, lockPair ,
672+ packetId))) {
673673 return targetObjFifo.emitOpError () << " could not create DMA operations" ;
674674 }
675675 }
0 commit comments