[Mlir-commits] [mlir] [MLIR][Math] Fix mathtolibm to use conversion patterns (PR #154083)
William Moses
llvmlistbot at llvm.org
Mon Aug 18 02:59:22 PDT 2025
https://github.com/wsmoses updated https://github.com/llvm/llvm-project/pull/154083
>From b5a6e88845d9eb53c5bafa8e638ff2cf0fa90981 Mon Sep 17 00:00:00 2001
From: "William S. Moses" <gh at wsmoses.com>
Date: Mon, 18 Aug 2025 04:21:39 -0500
Subject: [PATCH 1/2] [MLIR][Math] Fix mathtolibm to use conversion patterns
---
mlir/lib/Conversion/MathToLibm/MathToLibm.cpp | 21 +++++++++++--------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
index f7c0d4fe3a799..3e9ce6f7d1476 100644
--- a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
+++ b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
@@ -29,32 +29,35 @@ namespace {
// Pattern to convert vector operations to scalar operations. This is needed as
// libm calls require scalars.
template <typename Op>
-struct VecOpToScalarOp : public OpRewritePattern<Op> {
+struct VecOpToScalarOp : public OpConversionPattern<Op> {
public:
- using OpRewritePattern<Op>::OpRewritePattern;
+ using OpConversionPattern<Op>::OpConversionPattern;
- LogicalResult matchAndRewrite(Op op, PatternRewriter &rewriter) const final;
+ LogicalResult
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
};
// Pattern to promote an op of a smaller floating point type to F32.
template <typename Op>
-struct PromoteOpToF32 : public OpRewritePattern<Op> {
+struct PromoteOpToF32 : public OpConversionPattern<Op> {
public:
- using OpRewritePattern<Op>::OpRewritePattern;
+ using OpConversionPattern<Op>::OpConversionPattern;
- LogicalResult matchAndRewrite(Op op, PatternRewriter &rewriter) const final;
+ LogicalResult
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
};
// Pattern to convert scalar math operations to calls to libm functions.
// Additionally the libm function signatures are declared.
template <typename Op>
-struct ScalarOpToLibmCall : public OpRewritePattern<Op> {
+struct ScalarOpToLibmCall : public OpConversionPattern<Op> {
public:
using OpRewritePattern<Op>::OpRewritePattern;
ScalarOpToLibmCall(MLIRContext *context, PatternBenefit benefit,
StringRef floatFunc, StringRef doubleFunc)
- : OpRewritePattern<Op>(context, benefit), floatFunc(floatFunc),
+ : OpConversionPattern<Op>(context, benefit), floatFunc(floatFunc),
doubleFunc(doubleFunc) {};
- LogicalResult matchAndRewrite(Op op, PatternRewriter &rewriter) const final;
+ LogicalResult
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
private:
std::string floatFunc, doubleFunc;
>From 2d13f6cebfe9f441ded6948d6b3ecb25d6aa00c6 Mon Sep 17 00:00:00 2001
From: "William S. Moses" <gh at wsmoses.com>
Date: Mon, 18 Aug 2025 04:58:55 -0500
Subject: [PATCH 2/2] fmt
---
mlir/lib/Conversion/MathToLibm/MathToLibm.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
index 3e9ce6f7d1476..5afe0ec745fb0 100644
--- a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
+++ b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
@@ -34,7 +34,8 @@ struct VecOpToScalarOp : public OpConversionPattern<Op> {
using OpConversionPattern<Op>::OpConversionPattern;
LogicalResult
- matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter) const final;
};
// Pattern to promote an op of a smaller floating point type to F32.
template <typename Op>
@@ -43,7 +44,8 @@ struct PromoteOpToF32 : public OpConversionPattern<Op> {
using OpConversionPattern<Op>::OpConversionPattern;
LogicalResult
- matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter) const final;
};
// Pattern to convert scalar math operations to calls to libm functions.
// Additionally the libm function signatures are declared.
@@ -54,10 +56,11 @@ struct ScalarOpToLibmCall : public OpConversionPattern<Op> {
ScalarOpToLibmCall(MLIRContext *context, PatternBenefit benefit,
StringRef floatFunc, StringRef doubleFunc)
: OpConversionPattern<Op>(context, benefit), floatFunc(floatFunc),
- doubleFunc(doubleFunc) {};
+ doubleFunc(doubleFunc){};
LogicalResult
- matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor, ConversionPatternRewriter &rewriter) const final;
+ matchAndRewrite(Op op, typename OpConversionPattern<Op>::OpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter) const final;
private:
std::string floatFunc, doubleFunc;
More information about the Mlir-commits
mailing list