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 45 /// Returns the external elements data manager for this dialect. 46 TestExternalElementsDataManager &getExternalDataManager() { 47 return externalDataManager; 48 } 49 50 private: 51 // Storage for a custom fallback interface. 52 void *fallbackEffectOpInterfaces; 53 54 ::mlir::Type parseTestType(::mlir::AsmParser &parser, 55 ::llvm::SetVector<::mlir::Type> &stack) const; 56 void printTestType(::mlir::Type type, ::mlir::AsmPrinter &printer, 57 ::llvm::SetVector<::mlir::Type> &stack) const; 58 59 /// An external data manager used to test external elements data. 60 TestExternalElementsDataManager externalDataManager; 61 }]; 62} 63 64#endif // TEST_DIALECT 65