forked from OSchip/llvm-project
[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:
parent
f263a66ba0
commit
72ee11a8cf
|
@ -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 {
|
||||
|
|
|
@ -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>
|
||||
}
|
Loading…
Reference in New Issue