[Mlir-commits] [mlir] [mlir][IntegerRangeAnalysis] expose maybeReplaceWithConstant (PR #133151)
Maksim Levental
llvmlistbot at llvm.org
Wed Mar 26 13:19:47 PDT 2025
https://github.com/makslevental created https://github.com/llvm/llvm-project/pull/133151
None
>From 6c7d94f0e95f84b9f0c538cacec3e390f592ea2e Mon Sep 17 00:00:00 2001
From: Maksim Levental <maksim.levental at gmail.com>
Date: Wed, 26 Mar 2025 16:19:09 -0400
Subject: [PATCH] [mlir][IntegerRangeAnalysis] expose maybeReplaceWithConstant
---
mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h | 4 ++++
.../lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp | 7 ++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h b/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
index b9e5573d6ad40..b643ca5284187 100644
--- a/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
+++ b/mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h
@@ -19,6 +19,7 @@
#define MLIR_ANALYSIS_DATAFLOW_INTEGERANGEANALYSIS_H
#include "mlir/Analysis/DataFlow/SparseAnalysis.h"
+#include "mlir/IR/PatternMatch.h"
#include "mlir/Interfaces/InferIntRangeInterface.h"
namespace mlir {
@@ -83,6 +84,9 @@ LogicalResult staticallyNonNegative(DataFlowSolver &solver, Operation *op);
/// to use a non-64-bit index.
LogicalResult staticallyNonNegative(DataFlowSolver &solver, Value v);
+LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
+ PatternRewriter &rewriter, Value value);
+
} // end namespace dataflow
} // end namespace mlir
diff --git a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
index f866c91ef6e39..22e14fabba9a7 100644
--- a/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp
@@ -57,10 +57,10 @@ static void copyIntegerRange(DataFlowSolver &solver, Value oldVal,
*oldState);
}
+namespace mlir::dataflow {
/// Patterned after SCCP
-static LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
- PatternRewriter &rewriter,
- Value value) {
+LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
+ PatternRewriter &rewriter, Value value) {
if (value.use_empty())
return failure();
std::optional<APInt> maybeConstValue = getMaybeConstantValue(solver, value);
@@ -95,6 +95,7 @@ static LogicalResult maybeReplaceWithConstant(DataFlowSolver &solver,
rewriter.replaceAllUsesWith(value, constOp->getResult(0));
return success();
}
+} // namespace mlir::dataflow
namespace {
class DataFlowListener : public RewriterBase::Listener {
More information about the Mlir-commits
mailing list