[Mlir-commits] [mlir] [MLIR][Vector] Add unrolling pattern for vector StepOp (PR #157752)
Nishant Patel
llvmlistbot at llvm.org
Tue Sep 16 09:17:34 PDT 2025
================
@@ -809,6 +809,54 @@ struct UnrollBroadcastPattern : public OpRewritePattern<vector::BroadcastOp> {
vector::UnrollVectorOptions options;
};
+struct UnrollStepPattern : public OpRewritePattern<vector::StepOp> {
+ UnrollStepPattern(MLIRContext *context,
+ const vector::UnrollVectorOptions &options,
+ PatternBenefit benefit = 1)
+ : OpRewritePattern<vector::StepOp>(context, benefit), options(options) {}
+
+ LogicalResult matchAndRewrite(vector::StepOp stepOp,
+ PatternRewriter &rewriter) const override {
+ auto targetShape = getTargetShape(options, stepOp);
+ if (!targetShape)
+ return failure();
+
+ VectorType vecType = stepOp.getType();
+ if (vecType.isScalable()) {
+ // Scalable vectors are not supported by this pattern.
+ return failure();
+ }
+ int64_t originalSize = vecType.getShape()[0];
+ Location loc = stepOp.getLoc();
+ SmallVector<int64_t> strides(1, 1);
+
+ Value result = arith::ConstantOp::create(rewriter, loc, vecType,
+ rewriter.getZeroAttr(vecType));
+
+ for (SmallVector<int64_t> offsets :
+ StaticTileOffsetRange({originalSize}, *targetShape)) {
----------------
nbpatel wrote:
getTargetShape internally takes care of this
https://github.com/llvm/llvm-project/pull/157752
More information about the Mlir-commits
mailing list