63 lines · cpp
1//===- MLProgramDialect.cpp - MLProgram dialect implementation ------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/Dialect/MLProgram/IR/MLProgram.h"10#include "mlir/IR/DialectImplementation.h"11#include "mlir/Transforms/InliningUtils.h"12#include "llvm/ADT/TypeSwitch.h"13 14using namespace mlir;15using namespace mlir::ml_program;16 17//===----------------------------------------------------------------------===//18/// Tablegen Definitions19//===----------------------------------------------------------------------===//20 21#include "mlir/Dialect/MLProgram/IR/MLProgramOpsDialect.cpp.inc"22#define GET_ATTRDEF_CLASSES23#include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"24#define GET_TYPEDEF_CLASSES25#include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"26 27namespace {28 29struct MLProgramInlinerInterface : public DialectInlinerInterface {30 using DialectInlinerInterface::DialectInlinerInterface;31 32 bool isLegalToInline(Operation *, Region *, bool,33 IRMapping &) const override {34 // We have no specific opinion on whether ops defined in this dialect should35 // be inlined.36 return true;37 }38};39 40struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface {41 using OpAsmDialectInterface::OpAsmDialectInterface;42};43} // namespace44 45void ml_program::MLProgramDialect::initialize() {46#define GET_ATTRDEF_LIST47 addAttributes<48#include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"49 >();50 51#define GET_TYPEDEF_LIST52 addTypes<53#include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"54 >();55 56 addOperations<57#define GET_OP_LIST58#include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc"59 >();60 61 addInterfaces<MLProgramInlinerInterface, MLProgramOpAsmDialectInterface>();62}63