From 7769505ae98e7766b8a935fbb2808ef5a8ba20ef Mon Sep 17 00:00:00 2001 From: Kai Sasaki Date: Mon, 11 Jul 2022 21:55:31 +0200 Subject: [PATCH] [mlir][complex] Lower complex.log to libm log call Lower complex.log to corresponding function call with libm. Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D129417 --- .../Conversion/ComplexToLibm/ComplexToLibm.cpp | 2 ++ .../ComplexToLibm/convert-to-libm.mlir | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp index 716b7a8f50a6..bfb930bf9b6f 100644 --- a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp +++ b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp @@ -107,6 +107,8 @@ void mlir::populateComplexToLibmConversionPatterns(RewritePatternSet &patterns, "csinf", "csin", benefit); patterns.add>(patterns.getContext(), "conjf", "conj", benefit); + patterns.add>(patterns.getContext(), + "clogf", "clog", benefit); patterns.add>( patterns.getContext(), "cabsf", "cabs", benefit); patterns.add>( diff --git a/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir b/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir index 0b574b2b13fc..0a19751324d8 100644 --- a/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir +++ b/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir @@ -10,6 +10,8 @@ // CHECK-DAG: @csin(complex) -> complex // CHECK-DAG: @conj(complex) -> complex // CHECK-DAG: @cabs(complex) -> f64 +// CHECK-DAG: @carg(complex) -> f64 +// CHECK-DAG: @clog(complex) -> complex // CHECK-LABEL: func @cpow_caller // CHECK-SAME: %[[FLOAT:.*]]: complex @@ -105,4 +107,16 @@ func.func @carg_caller(%float: complex, %double: complex) -> (f32, f64 %double_result = complex.angle %double : complex // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]] return %float_result, %double_result : f32, f64 -} \ No newline at end of file +} + +// CHECK-LABEL: func @clog_caller +// CHECK-SAME: %[[FLOAT:.*]]: complex +// CHECK-SAME: %[[DOUBLE:.*]]: complex +func.func @clog_caller(%float: complex, %double: complex) -> (complex, complex) { + // CHECK: %[[FLOAT_RESULT:.*]] = call @clogf(%[[FLOAT]]) + %float_result = complex.log %float : complex + // CHECK: %[[DOUBLE_RESULT:.*]] = call @clog(%[[DOUBLE]]) + %double_result = complex.log %double : complex + // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]] + return %float_result, %double_result : complex, complex +}