[Mlir-commits] [mlir] [mlir][Affine] Require virtual-vector-size in super-vectorize (PR #171110)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Mon Dec 8 03:22:13 PST 2025


https://github.com/Men-cotton created https://github.com/llvm/llvm-project/pull/171110

When running `-affine-super-vectorize` without specifying a `virtual-vector-size`, the pass currently exhibits confusing behavior:
- Fails silently (no-op) if `vectorize-reductions` is disabled.
- Emits a misleading error `"Vectorizing reductions is supported only for 1-D vectors."` if `vectorize-reductions` is enabled.

This patch adds a check at the beginning of the pass to ensure that `virtual-vector-size` is specified, emitting a clear error message otherwise.

Fixes #114528

>From 2d2c7f17defbc2e3ae5de66d5ce26b2468583d6b Mon Sep 17 00:00:00 2001
From: mencotton <mencotton0410 at gmail.com>
Date: Mon, 8 Dec 2025 19:31:49 +0900
Subject: [PATCH] [mlir][Affine] Require virtual-vector-size in super-vectorize

---
 mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp | 6 ++++++
 mlir/test/Dialect/Affine/super-vectorize-invalid.mlir | 5 +++++
 2 files changed, 11 insertions(+)
 create mode 100644 mlir/test/Dialect/Affine/super-vectorize-invalid.mlir

diff --git a/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp b/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
index d428fbf2886ff..09281b960b231 100644
--- a/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
+++ b/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
@@ -1778,6 +1778,12 @@ static void vectorizeLoops(Operation *parentOp, DenseSet<Operation *> &loops,
 /// predetermined patterns.
 void Vectorize::runOnOperation() {
   func::FuncOp f = getOperation();
+  // The vectorization pass requires a valid vector size to be specified.
+  if (vectorSizes.empty()) {
+    f.emitError("virtual-vector-size option must be specified");
+    return signalPassFailure();
+  }
+
   if (!fastestVaryingPattern.empty() &&
       fastestVaryingPattern.size() != vectorSizes.size()) {
     f.emitRemark("Fastest varying pattern specified with different size than "
diff --git a/mlir/test/Dialect/Affine/super-vectorize-invalid.mlir b/mlir/test/Dialect/Affine/super-vectorize-invalid.mlir
new file mode 100644
index 0000000000000..b9f2fc9d69757
--- /dev/null
+++ b/mlir/test/Dialect/Affine/super-vectorize-invalid.mlir
@@ -0,0 +1,5 @@
+// RUN: mlir-opt %s -affine-super-vectorize -verify-diagnostics
+
+func.func @test_no_vector_size() { // expected-error {{virtual-vector-size option must be specified}}
+  return
+}



More information about the Mlir-commits mailing list