| //===- DerivedAttributeOpInterface.td ----------------------*- 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 |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains a set of interfaces for derived attribute op interface. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef MLIR_DERIVEDATTRIBUTEOPINTERFACE |
| #define MLIR_DERIVEDATTRIBUTEOPINTERFACE |
| |
| include "mlir/IR/OpBase.td" |
| |
| def DerivedAttributeOpInterface : OpInterface<"DerivedAttributeOpInterface"> { |
| let description = [{ |
| Interface to query derived attribute characteristics. |
| |
| Derived attributes are not stored in the operation but are instead derived |
| from information of the operation. ODS generates convenience accessors for |
| derived attributes and can be used to simplify translations. |
| }]; |
| let cppNamespace = "::mlir"; |
| |
| let methods = [ |
| StaticInterfaceMethod< |
| /*desc=*/"Returns whether name corresponds to a derived attribute.", |
| /*retTy=*/"bool", |
| /*methodName=*/"isDerivedAttribute", |
| /*args=*/(ins "::mlir::StringRef":$name) |
| >, |
| InterfaceMethod< |
| /*desc=*/[{ |
| Materializes the derived attributes. Returns null attribute where |
| unable to materialize a derived attribute as attribute. |
| }], |
| /*retTy=*/"::mlir::DictionaryAttr", |
| /*methodName=*/"materializeDerivedAttributes" |
| >, |
| ]; |
| } |
| |
| #endif // MLIR_DERIVEDATTRIBUTEOPINTERFACE |