replace helper-op cleanup with canonicalization
clean up PIM pattern naming remove unused ValueMap.hpp
This commit is contained in:
@@ -57,10 +57,8 @@ private:
|
||||
LogicalResult allocateAndInitializeCoreLocalVariables(func::FuncOp funcOp, IRRewriter& rewriter);
|
||||
|
||||
void runOnReceiveOp(spatial::SpatChannelReceiveOp receiveOp, IRRewriter& rewriter);
|
||||
void addReceiveOps(Value channelSourceOp,
|
||||
spatial::SpatChannelNewOp& channel,
|
||||
bool useBroadcastOp,
|
||||
IRRewriter& rewriter);
|
||||
void
|
||||
addReceiveOps(Value channelSourceOp, spatial::SpatChannelNewOp& channel, bool useBroadcastOp, IRRewriter& rewriter);
|
||||
void replaceBlockArgumentWithRecvOp(spatial::SpatWeightedCompute& computeOp,
|
||||
unsigned int argIndex,
|
||||
Value channelSourceOp,
|
||||
@@ -199,29 +197,11 @@ void SpatialToPimPass::runOnComputeOp(spatial::SpatWeightedCompute computeOp, IR
|
||||
llvm_unreachable("ComputeOp must have same number of results as yieldOp operands");
|
||||
|
||||
for (auto [result, yieldValue] : llvm::zip(computeOp.getResults(), yieldOp.getOperands())) {
|
||||
// If this result has no uses, then just skip it
|
||||
if (result.use_empty())
|
||||
continue;
|
||||
|
||||
auto yieldType = cast<TensorType>(yieldValue.getType());
|
||||
|
||||
/*
|
||||
* Here we assume that ReturnOp are only reachable by the following patterns:
|
||||
*
|
||||
* 1)
|
||||
* %0 = spat.compute([...])
|
||||
* [%0 has one user, which is a ConcatOp]
|
||||
* %1 = tensor.concat(%0)
|
||||
* [%1 has one user, which is a ReturnOp]
|
||||
* return %1
|
||||
*
|
||||
* 2)
|
||||
* %0 = spat.compute([...])
|
||||
* [%0 has one user, which is a ReturnOp]
|
||||
* return %0
|
||||
*
|
||||
* If the IR is like 2), then we can store the tensor to the output global memory location
|
||||
*/
|
||||
auto resultUses = result.getUses();
|
||||
auto numResultUses = rangeLength(resultUses);
|
||||
if (numResultUses == 1) {
|
||||
@@ -549,7 +529,8 @@ void SpatialToPimPass::replaceBlockArgumentWithRecvOp(spatial::SpatWeightedCompu
|
||||
receivedValue =
|
||||
spatial::SpatChannelBroadcastReceiveOp::create(rewriter, computeOp.getLoc(), channelSourceOp.getType(), channel);
|
||||
else
|
||||
receivedValue = spatial::SpatChannelReceiveOp::create(rewriter, computeOp.getLoc(), channelSourceOp.getType(), channel);
|
||||
receivedValue =
|
||||
spatial::SpatChannelReceiveOp::create(rewriter, computeOp.getLoc(), channelSourceOp.getType(), channel);
|
||||
|
||||
Value replacementValue = receivedValue;
|
||||
if (consumerValue != channelSourceOp) {
|
||||
@@ -577,7 +558,8 @@ void SpatialToPimPass::replaceBlockArgumentWithRecvOp(spatial::SpatWeightedCompu
|
||||
replacementValue = cast<Value>(mapping.lookup(consumerValue));
|
||||
}
|
||||
|
||||
assert(replacementValue.getType() == blockArg.getType() && "Replayed channel use chain must match block argument type");
|
||||
assert(replacementValue.getType() == blockArg.getType()
|
||||
&& "Replayed channel use chain must match block argument type");
|
||||
blockArg.replaceAllUsesWith(replacementValue);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user