The DialectResourceBlobManager class provides functionality for managing resource blobs in a generic, dialect-agnostic fashion. In addition to this class, a dialect interface and custom resource handle are provided to simplify referencing and interacting with the manager. These classes intend to simplify the work required for dialects that want to manage resource blobs during compilation, such as for large elements attrs. The old manager for the resource example in the test dialect has been updated to use this, which provides and cleaner and more consistent API. This commit also adds new HeapAsmResourceBlob and ImmortalAsmResourceBlob to simplify creating resource blobs in common scenarios. Differential Revision: https://reviews.llvm.org/D130021
57 lines
2.0 KiB
TableGen
57 lines
2.0 KiB
TableGen
//===-- TestDialect.td - Test dialect definition -----------*- tablegen -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef TEST_DIALECT
|
|
#define TEST_DIALECT
|
|
|
|
include "mlir/IR/OpBase.td"
|
|
|
|
def Test_Dialect : Dialect {
|
|
let name = "test";
|
|
let cppNamespace = "::test";
|
|
let emitAccessorPrefix = kEmitAccessorPrefix_Prefixed;
|
|
let hasCanonicalizer = 1;
|
|
let hasConstantMaterializer = 1;
|
|
let hasOperationAttrVerify = 1;
|
|
let hasRegionArgAttrVerify = 1;
|
|
let hasRegionResultAttrVerify = 1;
|
|
let hasOperationInterfaceFallback = 1;
|
|
let hasNonDefaultDestructor = 1;
|
|
let useDefaultTypePrinterParser = 0;
|
|
let useDefaultAttributePrinterParser = 1;
|
|
let isExtensible = 1;
|
|
let dependentDialects = ["::mlir::DLTIDialect"];
|
|
|
|
let extraClassDeclaration = [{
|
|
void registerAttributes();
|
|
void registerTypes();
|
|
|
|
// Provides a custom printing/parsing for some operations.
|
|
::llvm::Optional<ParseOpHook>
|
|
getParseOperationHook(::llvm::StringRef opName) const override;
|
|
::llvm::unique_function<void(::mlir::Operation *,
|
|
::mlir::OpAsmPrinter &printer)>
|
|
getOperationPrinter(::mlir::Operation *op) const override;
|
|
|
|
::mlir::Type parseType(::mlir::DialectAsmParser &parser) const override;
|
|
void printType(::mlir::Type type,
|
|
::mlir::DialectAsmPrinter &printer) const override;
|
|
|
|
private:
|
|
// Storage for a custom fallback interface.
|
|
void *fallbackEffectOpInterfaces;
|
|
|
|
::mlir::Type parseTestType(::mlir::AsmParser &parser,
|
|
::llvm::SetVector<::mlir::Type> &stack) const;
|
|
void printTestType(::mlir::Type type, ::mlir::AsmPrinter &printer,
|
|
::llvm::SetVector<::mlir::Type> &stack) const;
|
|
}];
|
|
}
|
|
|
|
#endif // TEST_DIALECT
|