From b468858d2505c5184cca70b4ed83dbd8eea1b8ab Mon Sep 17 00:00:00 2001 From: ilgeco Date: Thu, 9 Apr 2026 10:41:49 +0200 Subject: [PATCH] MergeNode ensure that channel must have 2 users --- .../MergeComputeNode/MergeComputeNodePass.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/PIM/Dialect/Spatial/Transforms/MergeComputeNode/MergeComputeNodePass.cpp b/src/PIM/Dialect/Spatial/Transforms/MergeComputeNode/MergeComputeNodePass.cpp index 0614414..c64b6b7 100644 --- a/src/PIM/Dialect/Spatial/Transforms/MergeComputeNode/MergeComputeNodePass.cpp +++ b/src/PIM/Dialect/Spatial/Transforms/MergeComputeNode/MergeComputeNodePass.cpp @@ -61,11 +61,9 @@ public: ChannelOrLocalOp getAsChannelValueAndInsertSender(SpatWeightedCompute spatWeightedCompute) { - if (channelSendInserter == nullptr) { - auto [first, second] = channelNewInserter(); - channelNewOpVal = first; - channelSendInserter = second; - } + auto [first, second] = channelNewInserter(); + channelNewOpVal = first; + channelSendInserter = second; auto BB = computeResults.innerValue.getParentBlock(); if (!BB->empty() && isa(BB->back())) insertPointSend = InsertPoint(BB, --BB->end()); @@ -292,7 +290,8 @@ private: } else { auto newInst = rewriter.clone(op, mapper); - //TODO Refactor in a lambda? same code just different cast, but templated lambda are C++20 and a free function is a bit too much + // TODO Refactor in a lambda? same code just different cast, but templated lambda are C++20 and a free function + // is a bit too much if (auto vmOp = llvm::dyn_cast(newInst)) { auto oldIndex = vmOp.getWeightIndex(); auto newWeight = mapper.lookup(*std::next(fromCompute.getWeights().begin(), oldIndex));