[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