diff --git a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp --- a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp +++ b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp @@ -77,6 +77,8 @@ "ccosf", "ccos", benefit); patterns.add>(patterns.getContext(), "csinf", "csin", benefit); + patterns.add>(patterns.getContext(), + "conjf", "conj", benefit); } namespace { diff --git a/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir b/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir --- a/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir +++ b/mlir/test/Conversion/ComplexToLibm/convert-to-libm.mlir @@ -8,6 +8,7 @@ // CHECK-DAG: @ctanh(complex) -> complex // CHECK-DAG: @ccos(complex) -> complex // CHECK-DAG: @csin(complex) -> complex +// CHECK-DAG: @conj(complex) -> complex // CHECK-LABEL: func @cpow_caller // CHECK-SAME: %[[FLOAT:.*]]: complex @@ -67,4 +68,16 @@ %double_result = complex.sin %double : complex // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]] return %float_result, %double_result : complex, complex +} + +// CHECK-LABEL: func @conj_caller +// CHECK-SAME: %[[FLOAT:.*]]: complex +// CHECK-SAME: %[[DOUBLE:.*]]: complex +func.func @conj_caller(%float: complex, %double: complex) -> (complex, complex) { + // CHECK: %[[FLOAT_RESULT:.*]] = call @conjf(%[[FLOAT]]) + %float_result = complex.conj %float : complex + // CHECK: %[[DOUBLE_RESULT:.*]] = call @conj(%[[DOUBLE]]) + %double_result = complex.conj %double : complex + // CHECK: return %[[FLOAT_RESULT]], %[[DOUBLE_RESULT]] + return %float_result, %double_result : complex, complex } \ No newline at end of file