[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