forked from OSchip/llvm-project
[mlir] Add derived attribute op interface
Interface provides uniform access to the the derived attribute query method.
This commit is contained in:
parent
bc9b6b33a0
commit
36e018b941
|
@ -8,6 +8,11 @@ mlir_tablegen(ControlFlowInterfaces.h.inc -gen-op-interface-decls)
|
|||
mlir_tablegen(ControlFlowInterfaces.cpp.inc -gen-op-interface-defs)
|
||||
add_public_tablegen_target(MLIRControlFlowInterfacesIncGen)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS DerivedAttributeOpInterface.td)
|
||||
mlir_tablegen(DerivedAttributeOpInterface.h.inc -gen-op-interface-decls)
|
||||
mlir_tablegen(DerivedAttributeOpInterface.cpp.inc -gen-op-interface-defs)
|
||||
add_public_tablegen_target(MLIRDerivedAttributeOpInterfaceIncGen)
|
||||
|
||||
set(LLVM_TARGET_DEFINITIONS InferTypeOpInterface.td)
|
||||
mlir_tablegen(InferTypeOpInterface.h.inc -gen-op-interface-decls)
|
||||
mlir_tablegen(InferTypeOpInterface.cpp.inc -gen-op-interface-defs)
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
//===- DerivedAttributeOpInterface.h ----------------------------*- C++ -*-===//
|
||||
//
|
||||
// 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_INTERFACES_DERIVEDATTRIBUTEOPINTERFACE_H_
|
||||
#define MLIR_INTERFACES_DERIVEDATTRIBUTEOPINTERFACE_H_
|
||||
|
||||
#include "mlir/IR/OpDefinition.h"
|
||||
|
||||
namespace mlir {
|
||||
#include "mlir/Interfaces/DerivedAttributeOpInterface.h.inc"
|
||||
} // namespace mlir
|
||||
|
||||
#endif // MLIR_INTERFACES_DERIVEDATTRIBUTEOPINTERFACE_H_
|
|
@ -0,0 +1,37 @@
|
|||
//===- 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 methods = [
|
||||
StaticInterfaceMethod<
|
||||
/*desc=*/"Returns whether name corresponds to a derived attribute.",
|
||||
/*retTy=*/"bool",
|
||||
/*methodName=*/"isDerivedAttribute",
|
||||
/*args=*/(ins "StringRef":$name)
|
||||
>,
|
||||
];
|
||||
}
|
||||
|
||||
#endif // MLIR_DERIVEDATTRIBUTEOPINTERFACE
|
|
@ -1,6 +1,7 @@
|
|||
set(LLVM_OPTIONAL_SOURCES
|
||||
CallInterfaces.cpp
|
||||
ControlFlowInterfaces.cpp
|
||||
DerivedAttributeOpInterface.cpp
|
||||
InferTypeOpInterface.cpp
|
||||
SideEffects.cpp
|
||||
)
|
||||
|
@ -33,6 +34,20 @@ target_link_libraries(MLIRControlFlowInterfaces
|
|||
MLIRIR
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRDerivedAttributeOpInterface
|
||||
DerivedAttributeOpInterface.cpp
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
${MLIR_MAIN_INCLUDE_DIR}/mlir/Interfaces
|
||||
)
|
||||
add_dependencies(MLIRDerivedAttributeOpInterface
|
||||
MLIRDerivedAttributeOpInterfaceIncGen
|
||||
)
|
||||
target_link_libraries(MLIRDerivedAttributeOpInterface
|
||||
PUBLIC
|
||||
MLIRIR
|
||||
)
|
||||
|
||||
add_llvm_library(MLIRInferTypeOpInterface
|
||||
InferTypeOpInterface.cpp
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
//===- DerivedAttributeOpInterface.cpp -- Derived Attribute interfaces ----===//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "mlir/Interfaces/DerivedAttributeOpInterface.h"
|
||||
|
||||
using namespace mlir;
|
||||
|
||||
namespace mlir {
|
||||
#include "mlir/Interfaces/DerivedAttributeOpInterface.cpp.inc"
|
||||
} // namespace mlir
|
Loading…
Reference in New Issue