xref: /llvm-project/mlir/lib/Dialect/Math/IR/MathDialect.cpp (revision 35d55f2894a2a2cdca5db494f519aa5ec7273678)
14348d8abSStephan Herhut //===- MathDialect.cpp - MLIR dialect for Math implementation -------------===//
24348d8abSStephan Herhut //
34348d8abSStephan Herhut // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44348d8abSStephan Herhut // See https://llvm.org/LICENSE.txt for license information.
54348d8abSStephan Herhut // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
64348d8abSStephan Herhut //
74348d8abSStephan Herhut //===----------------------------------------------------------------------===//
84348d8abSStephan Herhut 
9b43c5049SJustin Fargnoli #include "mlir/Conversion/ConvertToLLVM/ToLLVMInterface.h"
104348d8abSStephan Herhut #include "mlir/Dialect/Math/IR/Math.h"
115dce7481SIvan Butygin #include "mlir/Dialect/UB/IR/UBOps.h"
124348d8abSStephan Herhut #include "mlir/Transforms/InliningUtils.h"
134348d8abSStephan Herhut 
144348d8abSStephan Herhut using namespace mlir;
154348d8abSStephan Herhut using namespace mlir::math;
164348d8abSStephan Herhut 
17485cc55eSStella Laurenzo #include "mlir/Dialect/Math/IR/MathOpsDialect.cpp.inc"
18485cc55eSStella Laurenzo 
194348d8abSStephan Herhut namespace {
204348d8abSStephan Herhut /// This class defines the interface for handling inlining with math
214348d8abSStephan Herhut /// operations.
224348d8abSStephan Herhut struct MathInlinerInterface : public DialectInlinerInterface {
234348d8abSStephan Herhut   using DialectInlinerInterface::DialectInlinerInterface;
244348d8abSStephan Herhut 
254348d8abSStephan Herhut   /// All operations within math ops can be inlined.
isLegalToInline__anon380f2e240111::MathInlinerInterface264d67b278SJeff Niu   bool isLegalToInline(Operation *, Region *, bool, IRMapping &) const final {
274348d8abSStephan Herhut     return true;
284348d8abSStephan Herhut   }
294348d8abSStephan Herhut };
30be0a7e9fSMehdi Amini } // namespace
314348d8abSStephan Herhut 
initialize()324348d8abSStephan Herhut void mlir::math::MathDialect::initialize() {
334348d8abSStephan Herhut   addOperations<
344348d8abSStephan Herhut #define GET_OP_LIST
354348d8abSStephan Herhut #include "mlir/Dialect/Math/IR/MathOps.cpp.inc"
364348d8abSStephan Herhut       >();
374348d8abSStephan Herhut   addInterfaces<MathInlinerInterface>();
38*35d55f28SJustin Fargnoli   declarePromisedInterface<ConvertToLLVMPatternInterface, MathDialect>();
394348d8abSStephan Herhut }
40