[Mlir-commits] [mlir] 184f413 - [mlir][affine] Require a vector size in affine-super-vectorize (#171110)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Aug 17 02:42:55 PDT 2026
Author: Akimasa Watanuki
Date: 2026-08-17T18:42:51+09:00
New Revision: 184f413181a81a90f2c5d9ec52c8bbba1ec521c6
URL: https://github.com/llvm/llvm-project/commit/184f413181a81a90f2c5d9ec52c8bbba1ec521c6
DIFF: https://github.com/llvm/llvm-project/commit/184f413181a81a90f2c5d9ec52c8bbba1ec521c6.diff
LOG: [mlir][affine] Require a vector size in affine-super-vectorize (#171110)
Diagnose invocations that omit the `virtual-vector-size` option. A
vector rank is required to construct a vectorization pattern, so
accepting an empty size list would silently leave the input unchanged.
Check that vector sizes are present and positive before applying
rank-dependent constraints.
Fixes #114528
Added:
mlir/test/Dialect/Affine/SuperVectorize/invalid_missing_vector_size.mlir
mlir/test/Dialect/Affine/SuperVectorize/invalid_zero_size.mlir
Modified:
mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
Removed:
mlir/test/Dialect/Affine/SuperVectorize/invalid-zero-size.mlir
################################################################################
diff --git a/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp b/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
index 3158a113a7600..6c0cf507de5b8 100644
--- a/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
+++ b/mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
@@ -1841,6 +1841,17 @@ void affine::vectorizeChildAffineLoops(
/// predetermined patterns.
void Vectorize::runOnOperation() {
func::FuncOp f = getOperation();
+ if (vectorSizes.empty()) {
+ f.emitError("The 'virtual-vector-size' option must be specified.");
+ return signalPassFailure();
+ }
+
+ if (llvm::any_of(vectorSizes, [](int64_t size) { return size <= 0; })) {
+ f.emitError(
+ "The 'virtual-vector-size' option must contain only positive values.");
+ return signalPassFailure();
+ }
+
if (!fastestVaryingPattern.empty() &&
fastestVaryingPattern.size() != vectorSizes.size()) {
f.emitRemark("Fastest varying pattern specified with
diff erent size than "
@@ -1853,11 +1864,6 @@ void Vectorize::runOnOperation() {
return signalPassFailure();
}
- if (llvm::any_of(vectorSizes, [](int64_t size) { return size <= 0; })) {
- f.emitError("Vectorization factor must be greater than zero.");
- return signalPassFailure();
- }
-
vectorizeChildAffineLoops(f, vectorizeReductions, vectorSizes,
fastestVaryingPattern);
}
diff --git a/mlir/test/Dialect/Affine/SuperVectorize/invalid-zero-size.mlir b/mlir/test/Dialect/Affine/SuperVectorize/invalid-zero-size.mlir
deleted file mode 100644
index 396cc933e25bc..0000000000000
--- a/mlir/test/Dialect/Affine/SuperVectorize/invalid-zero-size.mlir
+++ /dev/null
@@ -1,9 +0,0 @@
-// RUN: mlir-opt %s -verify-diagnostics --affine-super-vectorize=virtual-vector-size=0
-
-// expected-error at +1 {{Vectorization factor must be greater than zero}}
-func.func @with_zero_vector_size(%arg0: memref<21x12x12xi1>) {
- affine.for %arg1 = 0 to 84 step 4294967295 {
- }
- return
-}
-
diff --git a/mlir/test/Dialect/Affine/SuperVectorize/invalid_missing_vector_size.mlir b/mlir/test/Dialect/Affine/SuperVectorize/invalid_missing_vector_size.mlir
new file mode 100644
index 0000000000000..4135e5cb6a696
--- /dev/null
+++ b/mlir/test/Dialect/Affine/SuperVectorize/invalid_missing_vector_size.mlir
@@ -0,0 +1,6 @@
+// RUN: mlir-opt %s -verify-diagnostics --affine-super-vectorize
+
+// expected-error at +1 {{The 'virtual-vector-size' option must be specified.}}
+func.func @missing_vector_size() {
+ return
+}
diff --git a/mlir/test/Dialect/Affine/SuperVectorize/invalid_zero_size.mlir b/mlir/test/Dialect/Affine/SuperVectorize/invalid_zero_size.mlir
new file mode 100644
index 0000000000000..442acecca9729
--- /dev/null
+++ b/mlir/test/Dialect/Affine/SuperVectorize/invalid_zero_size.mlir
@@ -0,0 +1,10 @@
+// RUN: mlir-opt %s -verify-diagnostics --affine-super-vectorize=virtual-vector-size=0
+// RUN: mlir-opt %s -verify-diagnostics \
+// RUN: -affine-super-vectorize="virtual-vector-size=4,0 vectorize-reductions=true"
+
+// expected-error at +1 {{The 'virtual-vector-size' option must contain only positive values.}}
+func.func @with_zero_vector_size(%arg0: memref<21x12x12xi1>) {
+ affine.for %arg1 = 0 to 84 step 4294967295 {
+ }
+ return
+}
More information about the Mlir-commits
mailing list