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 24 namespace { 25 struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface { 26 using OpAsmDialectInterface::OpAsmDialectInterface; 27 28 AliasResult getAlias(Attribute attr, raw_ostream &os) const override { 29 if (attr.isa<ExternAttr>()) { 30 os << "extern"; 31 return AliasResult::OverridableAlias; 32 } 33 return AliasResult::NoAlias; 34 } 35 }; 36 } // namespace 37 38 void ml_program::MLProgramDialect::initialize() { 39 #define GET_ATTRDEF_LIST 40 addAttributes< 41 #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc" 42 >(); 43 addOperations< 44 #define GET_OP_LIST 45 #include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc" 46 >(); 47 addInterfaces<MLProgramOpAsmDialectInterface>(); 48 } 49