This revision adds support to ODS for generating interfaces for attributes and types, in addition to operations. These interfaces can be specified using `AttrInterface` and `TypeInterface` in place of `OpInterface`. All of the features of `OpInterface` are supported except for the `verify` method, which does not have a matching representation in the Attribute/Type world. Generating these interface can be done using `gen-(attr|type)-interface-(defs|decls|docs)`. Differential Revision: https://reviews.llvm.org/D81884
47 lines
1.4 KiB
TableGen
47 lines
1.4 KiB
TableGen
//===-- TestInterfaces.td - Test dialect interfaces --------*- 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_INTERFACES
|
|
#define TEST_INTERFACES
|
|
|
|
include "mlir/IR/OpBase.td"
|
|
|
|
// A type interface used to test the ODS generation of type interfaces.
|
|
def TestTypeInterface : TypeInterface<"TestTypeInterface"> {
|
|
let methods = [
|
|
InterfaceMethod<"Prints the type name.",
|
|
"void", "printTypeA", (ins "Location":$loc), [{
|
|
emitRemark(loc) << $_type << " - TestA";
|
|
}]
|
|
>,
|
|
InterfaceMethod<"Prints the type name.",
|
|
"void", "printTypeB", (ins "Location":$loc),
|
|
[{}], /*defaultImplementation=*/[{
|
|
emitRemark(loc) << $_type << " - TestB";
|
|
}]
|
|
>,
|
|
InterfaceMethod<"Prints the type name.",
|
|
"void", "printTypeC", (ins "Location":$loc)
|
|
>,
|
|
];
|
|
let extraClassDeclaration = [{
|
|
/// Prints the type name.
|
|
void printTypeD(Location loc) const {
|
|
emitRemark(loc) << *this << " - TestD";
|
|
}
|
|
}];
|
|
let extraTraitClassDeclaration = [{
|
|
/// Prints the type name.
|
|
void printTypeE(Location loc) const {
|
|
emitRemark(loc) << $_type << " - TestE";
|
|
}
|
|
}];
|
|
}
|
|
|
|
#endif // TEST_INTERFACES
|