[mlir][complex] Convert complex.conj to libm

Add conversion for complex.conj to libm call

Reviewed By: bixia

Differential Revision: https://reviews.llvm.org/D127473
This commit is contained in:
lewuathe 2022-06-20 09:38:31 +09:00
parent f263a66ba0
commit 72ee11a8cf
2 changed files with 15 additions and 0 deletions

View File

@ -77,6 +77,8 @@ void mlir::populateComplexToLibmConversionPatterns(RewritePatternSet &patterns,
"ccosf", "ccos", benefit);
patterns.add<ScalarOpToLibmCall<complex::SinOp>>(patterns.getContext(),
"csinf", "csin", benefit);
patterns.add<ScalarOpToLibmCall<complex::ConjOp>>(patterns.getContext(),
"conjf", "conj", benefit);
}
namespace {

View File

@ -8,6 +8,7 @@
// CHECK-DAG: @ctanh(complex<f64>) -> complex<f64>
// CHECK-DAG: @ccos(complex<f64>) -> complex<f64>
// CHECK-DAG: @csin(complex<f64>) -> complex<f64>
// CHECK-DAG: @conj(complex<f64>) -> complex<f64>
// CHECK-LABEL: func @cpow_caller
// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>
@ -67,4 +68,16 @@ func.func @csin_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<
%double_result = complex.sin %double : complex<f64>
// CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
return %float_result, %double_result : complex<f32>, complex<f64>
}
// CHECK-LABEL: func @conj_caller
// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>
// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>
func.func @conj_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>) {
// CHECK: %[[FLOAT_RESULT:.*]] = call @conjf(%[[FLOAT]])
%float_result = complex.conj %float : complex<f32>
// CHECK: %[[DOUBLE_RESULT:.*]] = call @conj(%[[DOUBLE]])
%double_result = complex.conj %double : complex<f64>
// CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
return %float_result, %double_result : complex<f32>, complex<f64>
}