[Mlir-commits] [mlir] ad714d5 - [mlir][math] Lower math.floor, ceil to libm
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Aug 23 21:38:29 PDT 2022
Author: Kai Sasaki
Date: 2022-08-24T13:28:13+09:00
New Revision: ad714d5b742051a184b0f7c23fdc0102d56f6a46
URL: https://github.com/llvm/llvm-project/commit/ad714d5b742051a184b0f7c23fdc0102d56f6a46
DIFF: https://github.com/llvm/llvm-project/commit/ad714d5b742051a184b0f7c23fdc0102d56f6a46.diff
LOG: [mlir][math] Lower math.floor,ceil to libm
Lower math.floor and math.ceil to libm
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D131876
Added:
Modified:
mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
mlir/test/Conversion/MathToLibm/convert-to-libm.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
index 43ce675da926f..6e3bd2af7bd62 100644
--- a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
+++ b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp
@@ -171,6 +171,10 @@ void mlir::populateMathToLibmConversionPatterns(
"sin", benefit);
patterns.add<ScalarOpToLibmCall<math::Log1pOp>>(
patterns.getContext(), "log1pf", "log1p", log1pBenefit.value_or(benefit));
+ patterns.add<ScalarOpToLibmCall<math::FloorOp>>(patterns.getContext(),
+ "floorf", "floor", benefit);
+ patterns.add<ScalarOpToLibmCall<math::CeilOp>>(patterns.getContext(), "ceilf",
+ "ceil", benefit);
}
namespace {
diff --git a/mlir/test/Conversion/MathToLibm/convert-to-libm.mlir b/mlir/test/Conversion/MathToLibm/convert-to-libm.mlir
index f67c994a3b78b..b7e9dfcad8c13 100644
--- a/mlir/test/Conversion/MathToLibm/convert-to-libm.mlir
+++ b/mlir/test/Conversion/MathToLibm/convert-to-libm.mlir
@@ -18,6 +18,10 @@
// CHECK-DAG: @cosf(f32) -> f32
// CHECK-DAG: @sin(f64) -> f64
// CHECK-DAG: @sinf(f32) -> f32
+// CHECK-DAG: @floor(f64) -> f64
+// CHECK-DAG: @floorf(f32) -> f32
+// CHECK-DAG: @ceil(f64) -> f64
+// CHECK-DAG: @ceilf(f32) -> f32
// CHECK-LABEL: func @atan_caller
// CHECK-SAME: %[[FLOAT:.*]]: f32
@@ -314,4 +318,28 @@ func.func @log1p_caller(%float: f32, %double: f64) -> (f32, f64) {
%double_result = math.log1p %double : f64
// CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
return %float_result, %double_result : f32, f64
-}
\ No newline at end of file
+}
+
+// CHECK-LABEL: func @floor_caller
+// CHECK-SAME: %[[FLOAT:.*]]: f32
+// CHECK-SAME: %[[DOUBLE:.*]]: f64
+func.func @floor_caller(%float: f32, %double: f64) -> (f32, f64) {
+ // CHECK-DAG: %[[FLOAT_RESULT:.*]] = call @floorf(%[[FLOAT]]) : (f32) -> f32
+ %float_result = math.floor %float : f32
+ // CHECK-DAG: %[[DOUBLE_RESULT:.*]] = call @floor(%[[DOUBLE]]) : (f64) -> f64
+ %double_result = math.floor %double : f64
+ // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
+ return %float_result, %double_result : f32, f64
+}
+
+// CHECK-LABEL: func @ceil_caller
+// CHECK-SAME: %[[FLOAT:.*]]: f32
+// CHECK-SAME: %[[DOUBLE:.*]]: f64
+func.func @ceil_caller(%float: f32, %double: f64) -> (f32, f64) {
+ // CHECK-DAG: %[[FLOAT_RESULT:.*]] = call @ceilf(%[[FLOAT]]) : (f32) -> f32
+ %float_result = math.ceil %float : f32
+ // CHECK-DAG: %[[DOUBLE_RESULT:.*]] = call @ceil(%[[DOUBLE]]) : (f64) -> f64
+ %double_result = math.ceil %double : f64
+ // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
+ return %float_result, %double_result : f32, f64
+}
More information about the Mlir-commits
mailing list