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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "mlir/Dialect/MLProgram/IR/MLProgram.h" 10 #include "mlir/IR/DialectImplementation.h" 11 #include "llvm/ADT/TypeSwitch.h" 12 13 using namespace mlir; 14 using namespace mlir::ml_program; 15 16 //===----------------------------------------------------------------------===// 17 /// Tablegen Definitions 18 //===----------------------------------------------------------------------===// 19 20 #include "mlir/Dialect/MLProgram/IR/MLProgramOpsDialect.cpp.inc" 21 #define GET_ATTRDEF_CLASSES 22 #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc" 23 #define GET_TYPEDEF_CLASSES 24 #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc" 25 26 namespace { 27 struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface { 28 using OpAsmDialectInterface::OpAsmDialectInterface; 29 30 AliasResult getAlias(Attribute attr, raw_ostream &os) const override { 31 if (attr.isa<ExternAttr>()) { 32 os << "extern"; 33 return AliasResult::OverridableAlias; 34 } 35 return AliasResult::NoAlias; 36 } 37 }; 38 } // namespace 39 40 void ml_program::MLProgramDialect::initialize() { 41 #define GET_ATTRDEF_LIST 42 addAttributes< 43 #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc" 44 >(); 45 46 #define GET_TYPEDEF_LIST 47 addTypes< 48 #include "mlir/Dialect/MLProgram/IR/MLProgramTypes.cpp.inc" 49 >(); 50 51 addOperations< 52 #define GET_OP_LIST 53 #include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc" 54 >(); 55 56 addInterfaces<MLProgramOpAsmDialectInterface>(); 57 } 58