aboutsummaryrefslogtreecommitdiff
path: root/mlir/lib
diff options
context:
space:
mode:
authorBenjamin Maxwell <benjamin.maxwell@arm.com>2024-07-03 10:04:51 +0100
committerGitHub <noreply@github.com>2024-07-03 10:04:51 +0100
commit68a1944070caa33d73390e1a6d956c6abdbea872 (patch)
treef967ba9458e6e36ad98be307a545852ffabc76c3 /mlir/lib
parent40278bb1193720c42911f7297d3bcb4c5af5bc9c (diff)
downloadllvm-68a1944070caa33d73390e1a6d956c6abdbea872.zip
llvm-68a1944070caa33d73390e1a6d956c6abdbea872.tar.gz
llvm-68a1944070caa33d73390e1a6d956c6abdbea872.tar.bz2
[mlir][vector] Project out anonymous bounds in ScalableValueBoundsConstraintSet (#96499)
If we don't eliminate these columns, then in some cases we fail to compute a scalable bound. Test case reduced from a real-world example.
Diffstat (limited to 'mlir/lib')
-rw-r--r--mlir/lib/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.cpp b/mlir/lib/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.cpp
index 9c36537..4a826f0 100644
--- a/mlir/lib/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.cpp
+++ b/mlir/lib/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.cpp
@@ -8,6 +8,7 @@
#include "mlir/Dialect/Vector/IR/ScalableValueBoundsConstraintSet.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
+
namespace mlir::vector {
FailureOr<ConstantOrScalableBound::BoundSize>
@@ -74,6 +75,7 @@ ScalableValueBoundsConstraintSet::computeScalableBound(
return p.first != scalableCstr.getVscaleValue() && !isStartingPoint;
};
scalableCstr.projectOut(projectOutFn);
+ scalableCstr.projectOutAnonymous(/*except=*/pos);
// Also project out local variables (these are not tracked by the
// ValueBoundsConstraintSet).
for (unsigned i = 0, e = scalableCstr.cstr.getNumLocalVars(); i < e; ++i) {