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"
10*2bb25285SStella Laurenzo #include "mlir/IR/DialectImplementation.h"
11*2bb25285SStella Laurenzo #include "llvm/ADT/TypeSwitch.h"
1261352a58SStella Laurenzo 
1361352a58SStella Laurenzo using namespace mlir;
1461352a58SStella Laurenzo using namespace mlir::ml_program;
1561352a58SStella Laurenzo 
16*2bb25285SStella Laurenzo //===----------------------------------------------------------------------===//
17*2bb25285SStella Laurenzo /// Tablegen Definitions
18*2bb25285SStella Laurenzo //===----------------------------------------------------------------------===//
19*2bb25285SStella Laurenzo 
2061352a58SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramOpsDialect.cpp.inc"
21*2bb25285SStella Laurenzo #define GET_ATTRDEF_CLASSES
22*2bb25285SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
23*2bb25285SStella Laurenzo 
24*2bb25285SStella Laurenzo namespace {
25*2bb25285SStella Laurenzo struct MLProgramOpAsmDialectInterface : public OpAsmDialectInterface {
26*2bb25285SStella Laurenzo   using OpAsmDialectInterface::OpAsmDialectInterface;
27*2bb25285SStella Laurenzo 
28*2bb25285SStella Laurenzo   AliasResult getAlias(Attribute attr, raw_ostream &os) const override {
29*2bb25285SStella Laurenzo     if (attr.isa<ExternAttr>()) {
30*2bb25285SStella Laurenzo       os << "extern";
31*2bb25285SStella Laurenzo       return AliasResult::OverridableAlias;
32*2bb25285SStella Laurenzo     }
33*2bb25285SStella Laurenzo     return AliasResult::NoAlias;
34*2bb25285SStella Laurenzo   }
35*2bb25285SStella Laurenzo };
36*2bb25285SStella Laurenzo } // namespace
3761352a58SStella Laurenzo 
3861352a58SStella Laurenzo void ml_program::MLProgramDialect::initialize() {
39*2bb25285SStella Laurenzo #define GET_ATTRDEF_LIST
40*2bb25285SStella Laurenzo   addAttributes<
41*2bb25285SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramAttributes.cpp.inc"
42*2bb25285SStella Laurenzo       >();
4361352a58SStella Laurenzo   addOperations<
4461352a58SStella Laurenzo #define GET_OP_LIST
4561352a58SStella Laurenzo #include "mlir/Dialect/MLProgram/IR/MLProgramOps.cpp.inc"
4661352a58SStella Laurenzo       >();
47*2bb25285SStella Laurenzo   addInterfaces<MLProgramOpAsmDialectInterface>();
4861352a58SStella Laurenzo }
49