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 Herhutvoid 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