Skip to content

Commit 72ee11a

Browse files
committed
[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
1 parent f263a66 commit 72ee11a

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ void mlir::populateComplexToLibmConversionPatterns(RewritePatternSet &patterns,
7777
"ccosf", "ccos", benefit);
7878
patterns.add<ScalarOpToLibmCall<complex::SinOp>>(patterns.getContext(),
7979
"csinf", "csin", benefit);
80+
patterns.add<ScalarOpToLibmCall<complex::ConjOp>>(patterns.getContext(),
81+
"conjf", "conj", benefit);
8082
}
8183

8284
namespace {

mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// CHECK-DAG: @ctanh(complex<f64>) -> complex<f64>
99
// CHECK-DAG: @ccos(complex<f64>) -> complex<f64>
1010
// CHECK-DAG: @csin(complex<f64>) -> complex<f64>
11+
// CHECK-DAG: @conj(complex<f64>) -> complex<f64>
1112

1213
// CHECK-LABEL: func @cpow_caller
1314
// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>
@@ -67,4 +68,16 @@ func.func @csin_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<
6768
%double_result = complex.sin %double : complex<f64>
6869
// CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
6970
return %float_result, %double_result : complex<f32>, complex<f64>
71+
}
72+
73+
// CHECK-LABEL: func @conj_caller
74+
// CHECK-SAME: %[[FLOAT:.*]]: complex<f32>
75+
// CHECK-SAME: %[[DOUBLE:.*]]: complex<f64>
76+
func.func @conj_caller(%float: complex<f32>, %double: complex<f64>) -> (complex<f32>, complex<f64>) {
77+
// CHECK: %[[FLOAT_RESULT:.*]] = call @conjf(%[[FLOAT]])
78+
%float_result = complex.conj %float : complex<f32>
79+
// CHECK: %[[DOUBLE_RESULT:.*]] = call @conj(%[[DOUBLE]])
80+
%double_result = complex.conj %double : complex<f64>
81+
// CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]]
82+
return %float_result, %double_result : complex<f32>, complex<f64>
7083
}

0 commit comments

Comments
 (0)