[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:44 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Men-cotton (Men-cotton)
<details>
<summary>Changes</summary>
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
---
Full diff: https://github.com/llvm/llvm-project/pull/171110.diff
2 Files Affected:
- (modified) mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp (+6)
- (added) mlir/test/Dialect/Affine/super-vectorize-invalid.mlir (+5)
``````````diff
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
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/171110
More information about the Mlir-commits
mailing list