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