[Mlir-commits] [mlir] [mlir][vector] Refactor WarpOpScfForOp to support unused or swapped forOp results. (PR #147620)
Igor Zamyatin
llvmlistbot at llvm.org
Thu Jul 10 05:46:14 PDT 2025
================
@@ -1745,19 +1749,18 @@ struct WarpOpScfForOp : public WarpDistributionPattern {
: WarpDistributionPattern(ctx, b), distributionMapFn(std::move(fn)) {}
LogicalResult matchAndRewrite(WarpExecuteOnLane0Op warpOp,
PatternRewriter &rewriter) const override {
- auto yield = cast<gpu::YieldOp>(
+ auto newWarpOpYield = cast<gpu::YieldOp>(
warpOp.getBodyRegion().getBlocks().begin()->getTerminator());
- // Only pick up forOp if it is the last op in the region.
- Operation *lastNode = yield->getPrevNode();
+ // Only pick up `ForOp` if it is the last op in the region.
+ Operation *lastNode = newWarpOpYield->getPrevNode();
auto forOp = dyn_cast_or_null<scf::ForOp>(lastNode);
if (!forOp)
return failure();
- // Collect Values that come from the warp op but are outside the forOp.
- // Those Value needs to be returned by the original warpOp and passed to
- // the new op.
+ // Collect Values that come from the `WarpOp` but are outside the `ForOp`.
+ // Those Values need to be returned by the new warp op.
llvm::SmallSetVector<Value, 32> escapingValues;
- SmallVector<Type> inputTypes;
- SmallVector<Type> distTypes;
+ SmallVector<Type> escapingValueInputTypes;
+ SmallVector<Type> escapingValuedistTypes;
----------------
Garra1980 wrote:
dist->Dist
https://github.com/llvm/llvm-project/pull/147620
More information about the Mlir-commits
mailing list