xref: /llvm-project/mlir/lib/Dialect/MLProgram/IR/MLProgramDialect.cpp (revision dbbdee2ea2156170062813fb3d7f2c023d65e02d)
161352a58SStella Laurenzo //===- MLProgramDialect.cpp - MLProgram dialect implementation ------------===//
261352a58SStella Laurenzo //
361352a58SStella Laurenzo // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
461352a58SStella Laurenzo // See https://llvm.org/LICENSE.txt for license information.
561352a58SStella Laurenzo // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
661352a58SStella Laurenzo //
761352a58SStella Laurenzo //===----------------------------------------------------------------------===//
861352a58SStella Laurenzo 
961352a58SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgram.h"
102bb25285SStella Laurenzo #include "mlir/IR/DialectImplementation.h"
11*dbbdee2eSStella Laurenzo #include "mlir/Transforms/InliningUtils.h"
122bb25285SStella Laurenzo #include "llvm/ADT/TypeSwitch.h"
1361352a58SStella Laurenzo 
1461352a58SStella Laurenzo using namespace mlir;
1561352a58SStella Laurenzo using namespace mlir::ml_program;
1661352a58SStella Laurenzo 
172bb25285SStella Laurenzo //===----------------------------------------------------------------------===//
182bb25285SStella Laurenzo /// Tablegen Definitions
192bb25285SStella Laurenzo //===----------------------------------------------------------------------===//
202bb25285SStella Laurenzo 
2161352a58SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramOpsDialect.cpp.inc"
222bb25285SStella Laurenzo #define GET_ATTRDEF_CLASSES
232bb25285SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
243bb79993SStella Laurenzo #define GET_TYPEDEF_CLASSES
253bb79993SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"
262bb25285SStella Laurenzo 
272bb25285SStella Laurenzo namespace {
28*dbbdee2eSStella Laurenzo 
29*dbbdee2eSStella Laurenzo struct MLProgramInlinerInterface : public DialectInlinerInterface {
30*dbbdee2eSStella Laurenzo   using DialectInlinerInterface::DialectInlinerInterface;
31*dbbdee2eSStella Laurenzo 
isLegalToInline__anond5c0b2320111::MLProgramInlinerInterface32*dbbdee2eSStella Laurenzo   bool isLegalToInline(Operation *, Region *, bool,
33*dbbdee2eSStella Laurenzo                        IRMapping &) const override {
34*dbbdee2eSStella Laurenzo     // We have no specific opinion on whether ops defined in this dialect should
35*dbbdee2eSStella Laurenzo     // be inlined.
36*dbbdee2eSStella Laurenzo     return true;
37*dbbdee2eSStella Laurenzo   }
38*dbbdee2eSStella Laurenzo };
39*dbbdee2eSStella Laurenzo 
402bb25285SStella Laurenzo struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface {
412bb25285SStella Laurenzo   using OpAsmDialectInterface::OpAsmDialectInterface;
422bb25285SStella Laurenzo 
getAlias__anond5c0b2320111::MLProgramOpAsmDialectInterface432bb25285SStella Laurenzo   AliasResult getAlias(Attribute attr, raw_ostream &os) const override {
44c1fa60b4STres Popp     if (llvm::isa<ExternAttr>(attr)) {
452bb25285SStella Laurenzo       os << "extern";
462bb25285SStella Laurenzo       return AliasResult::OverridableAlias;
472bb25285SStella Laurenzo     }
482bb25285SStella Laurenzo     return AliasResult::NoAlias;
492bb25285SStella Laurenzo   }
502bb25285SStella Laurenzo };
512bb25285SStella Laurenzo } // namespace
5261352a58SStella Laurenzo 
initialize()5361352a58SStella Laurenzo void ml_program::MLProgramDialect::initialize() {
542bb25285SStella Laurenzo #define GET_ATTRDEF_LIST
552bb25285SStella Laurenzo   addAttributes<
562bb25285SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
572bb25285SStella Laurenzo       >();
583bb79993SStella Laurenzo 
593bb79993SStella Laurenzo #define GET_TYPEDEF_LIST
603bb79993SStella Laurenzo   addTypes<
613bb79993SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc"
623bb79993SStella Laurenzo       >();
633bb79993SStella Laurenzo 
6461352a58SStella Laurenzo   addOperations<
6561352a58SStella Laurenzo #define GET_OP_LIST
6661352a58SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc"
6761352a58SStella Laurenzo       >();
683bb79993SStella Laurenzo 
69*dbbdee2eSStella Laurenzo   addInterfaces<MLProgramInlinerInterface, MLProgramOpAsmDialectInterface>();
7061352a58SStella Laurenzo }
71