1//===-- TestDialect.td - Test dialect definition -----------*- tablegen -*-===//
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#ifndef TEST_DIALECT
10#define TEST_DIALECT
11
12include "mlir/IR/OpBase.td"
13
14def Test_Dialect : Dialect {
15  let name = "test";
16  let cppNamespace = "::test";
17  let emitAccessorPrefix = kEmitAccessorPrefix_Prefixed;
18  let hasCanonicalizer = 1;
19  let hasConstantMaterializer = 1;
20  let hasOperationAttrVerify = 1;
21  let hasRegionArgAttrVerify = 1;
22  let hasRegionResultAttrVerify = 1;
23  let hasOperationInterfaceFallback = 1;
24  let hasNonDefaultDestructor = 1;
25  let useDefaultTypePrinterParser = 0;
26  let useDefaultAttributePrinterParser = 1;
27  let isExtensible = 1;
28  let dependentDialects = ["::mlir::DLTIDialect"];
29
30  let extraClassDeclaration = [{
31    void registerAttributes();
32    void registerTypes();
33
34    // Provides a custom printing/parsing for some operations.
35    ::llvm::Optional<ParseOpHook>
36      getParseOperationHook(::llvm::StringRef opName) const override;
37    ::llvm::unique_function<void(::mlir::Operation *,
38                                 ::mlir::OpAsmPrinter &printer)>
39     getOperationPrinter(::mlir::Operation *op) const override;
40
41     ::mlir::Type parseType(::mlir::DialectAsmParser &parser) const override;
42     void printType(::mlir::Type type,
43                    ::mlir::DialectAsmPrinter &printer) const override;
44  private:
45    // Storage for a custom fallback interface.
46    void *fallbackEffectOpInterfaces;
47
48    ::mlir::Type parseTestType(::mlir::AsmParser &parser,
49                               ::llvm::SetVector<::mlir::Type> &stack) const;
50    void printTestType(::mlir::Type type, ::mlir::AsmPrinter &printer,
51                       ::llvm::SetVector<::mlir::Type> &stack) const;
52  }];
53}
54
55#endif // TEST_DIALECT
56