1- // ===-- ComplexToROCDL .cpp - conversion from Complex to ROCDL calls ------- ===//
1+ // === ComplexToROCDLLibraryCalls .cpp - convert from Complex to ROCDL calls ===//
22//
33// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44// See https://llvm.org/LICENSE.txt for license information.
55// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66//
77// ===----------------------------------------------------------------------===//
88
9- #include " mlir/Conversion/ComplexToROCDL/ComplexToROCDL .h"
9+ #include " mlir/Conversion/ComplexToROCDLLibraryCalls/ComplexToROCDLLibraryCalls .h"
1010#include " mlir/Dialect/Complex/IR/Complex.h"
1111#include " mlir/Dialect/Func/IR/FuncOps.h"
1212#include " mlir/IR/PatternMatch.h"
1313#include " mlir/Transforms/DialectConversion.h"
1414
1515namespace mlir {
16- #define GEN_PASS_DEF_CONVERTCOMPLEXTOROCDL
16+ #define GEN_PASS_DEF_CONVERTCOMPLEXTOROCDLLIBRARYCALLS
1717#include " mlir/Conversion/Passes.h.inc"
1818} // namespace mlir
1919
2020using namespace mlir ;
2121
2222namespace {
2323
24- template <typename Op, typename Ty >
24+ template <typename Op, typename FloatTy >
2525// Pattern to convert Complex ops to ROCDL function calls.
26- struct ComplexOpToROCDLCall : public OpRewritePattern <Op> {
26+ struct ComplexOpToROCDLLibraryCalls : public OpRewritePattern <Op> {
2727 using OpRewritePattern<Op>::OpRewritePattern;
28- ComplexOpToROCDLCall (MLIRContext *context, StringRef funcName,
29- PatternBenefit benefit = 1 )
28+ ComplexOpToROCDLLibraryCalls (MLIRContext *context, StringRef funcName,
29+ PatternBenefit benefit = 1 )
3030 : OpRewritePattern<Op>(context, benefit), funcName(funcName) {}
3131
3232 LogicalResult matchAndRewrite (Op op, PatternRewriter &rewriter) const final {
3333 Operation *symTable = SymbolTable::getNearestSymbolTable (op);
3434 Type resType = op.getType ();
3535 if (auto complexType = dyn_cast<ComplexType>(resType))
3636 resType = complexType.getElementType ();
37- if (!isa<Ty >(resType))
37+ if (!isa<FloatTy >(resType))
3838 return failure ();
3939
4040 auto opFunc = dyn_cast_or_null<SymbolOpInterface>(
@@ -58,30 +58,31 @@ struct ComplexOpToROCDLCall : public OpRewritePattern<Op> {
5858};
5959} // namespace
6060
61- void mlir::populateComplexToROCDLConversionPatterns (
61+ void mlir::populateComplexToROCDLLibraryCallsConversionPatterns (
6262 RewritePatternSet &patterns) {
63- patterns.add <ComplexOpToROCDLCall <complex ::AbsOp, Float32Type>>(
63+ patterns.add <ComplexOpToROCDLLibraryCalls <complex ::AbsOp, Float32Type>>(
6464 patterns.getContext (), " __ocml_cabs_f32" );
65- patterns.add <ComplexOpToROCDLCall <complex ::AbsOp, Float64Type>>(
65+ patterns.add <ComplexOpToROCDLLibraryCalls <complex ::AbsOp, Float64Type>>(
6666 patterns.getContext (), " __ocml_cabs_f64" );
67- patterns.add <ComplexOpToROCDLCall <complex ::ExpOp, Float32Type>>(
67+ patterns.add <ComplexOpToROCDLLibraryCalls <complex ::ExpOp, Float32Type>>(
6868 patterns.getContext (), " __ocml_cexp_f32" );
69- patterns.add <ComplexOpToROCDLCall <complex ::ExpOp, Float64Type>>(
69+ patterns.add <ComplexOpToROCDLLibraryCalls <complex ::ExpOp, Float64Type>>(
7070 patterns.getContext (), " __ocml_cexp_f64" );
7171}
7272
7373namespace {
74- struct ConvertComplexToROCDLPass
75- : public impl::ConvertComplexToROCDLBase<ConvertComplexToROCDLPass> {
74+ struct ConvertComplexToROCDLLibraryCallsPass
75+ : public impl::ConvertComplexToROCDLLibraryCallsBase<
76+ ConvertComplexToROCDLLibraryCallsPass> {
7677 void runOnOperation () override ;
7778};
7879} // namespace
7980
80- void ConvertComplexToROCDLPass ::runOnOperation () {
81+ void ConvertComplexToROCDLLibraryCallsPass ::runOnOperation () {
8182 Operation *op = getOperation ();
8283
8384 RewritePatternSet patterns (&getContext ());
84- populateComplexToROCDLConversionPatterns (patterns);
85+ populateComplexToROCDLLibraryCallsConversionPatterns (patterns);
8586
8687 ConversionTarget target (getContext ());
8788 target.addLegalDialect <func::FuncDialect>();
0 commit comments