xref: /llvm-project/mlir/test/lib/Dialect/Test/TestDialect.td (revision 45c226d4521515ff1a38292331d82356b273fff7)
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 hasCanonicalizer = 1;
18  let hasConstantMaterializer = 1;
19  let hasOperationAttrVerify = 1;
20  let hasRegionArgAttrVerify = 1;
21  let hasRegionResultAttrVerify = 1;
22  let hasOperationInterfaceFallback = 1;
23  let hasNonDefaultDestructor = 1;
24  let useDefaultTypePrinterParser = 0;
25  let useDefaultAttributePrinterParser = 1;
26  let isExtensible = 1;
27  let dependentDialects = ["::mlir::DLTIDialect"];
28  let discardableAttrs = (ins
29     "mlir::IntegerAttr":$discardable_attr_key,
30     "SimpleAAttr":$other_discardable_attr_key
31  );
32
33  let extraClassDeclaration = [{
34    void registerAttributes();
35    void registerInterfaces();
36    void registerTypes();
37    void registerOpsSyntax();
38
39    // Provides a custom printing/parsing for some operations.
40    ::std::optional<ParseOpHook>
41      getParseOperationHook(::llvm::StringRef opName) const override;
42    ::llvm::unique_function<void(::mlir::Operation *,
43                                 ::mlir::OpAsmPrinter &printer)>
44     getOperationPrinter(::mlir::Operation *op) const override;
45
46     ::mlir::Type parseType(::mlir::DialectAsmParser &parser) const override;
47     void printType(::mlir::Type type,
48                    ::mlir::DialectAsmPrinter &printer) const override;
49
50  private:
51    // Storage for a custom fallback interface.
52    void *fallbackEffectOpInterfaces;
53  }];
54}
55
56#endif // TEST_DIALECT
57