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