[Mlir-commits] [mlir] [mlir][IntegerRangeAnalysis] expose maybeReplaceWithConstant (PR #133151)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Mar 26 13:20:41 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Maksim Levental (makslevental)
<details>
<summary>Changes</summary>
This PR exposes `maybeReplaceWithConstant` in headers for downstream use.
---
Full diff: https://github.com/llvm/llvm-project/pull/133151.diff
2 Files Affected:
- (modified) mlir/include/mlir/Analysis/DataFlow/IntegerRangeAnalysis.h (+4)
- (modified) mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp (+4-3)
``````````diff
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 {
``````````
</details>
https://github.com/llvm/llvm-project/pull/133151
More information about the Mlir-commits
mailing list