13 #ifndef CIRCT_HANDSHAKEOPS_OPS_H_
14 #define CIRCT_HANDSHAKEOPS_OPS_H_
19 #include "mlir/IR/Attributes.h"
20 #include "mlir/IR/Builders.h"
21 #include "mlir/IR/BuiltinOps.h"
22 #include "mlir/IR/BuiltinTypes.h"
23 #include "mlir/IR/Dialect.h"
24 #include "mlir/IR/OpDefinition.h"
25 #include "mlir/IR/OpImplementation.h"
26 #include "mlir/IR/Operation.h"
27 #include "mlir/IR/RegionKindInterface.h"
28 #include "mlir/IR/TypeSupport.h"
29 #include "mlir/IR/Types.h"
30 #include "mlir/Interfaces/CallInterfaces.h"
31 #include "mlir/Interfaces/FunctionInterfaces.h"
32 #include "mlir/Interfaces/InferTypeOpInterface.h"
33 #include "mlir/Interfaces/SideEffectInterfaces.h"
34 #include "mlir/Pass/Pass.h"
35 #include "llvm/ADT/Any.h"
39 template <
typename ConcreteType>
42 template <
typename InterfaceType>
45 template <
typename ConcreteType>
47 HasParentInterface<InterfaceType>::Impl> {
50 if (llvm::isa_and_nonnull<InterfaceType>(op->getParentOp()))
56 return op->emitOpError() <<
"expects parent op to be of the interface "
57 "parent type required by the given op type";
65 #define GET_ATTRDEF_CLASSES
66 #include "circt/Dialect/Handshake/HandshakeAttributes.h.inc"
68 #define GET_OP_CLASSES
69 #include "circt/Dialect/Handshake/Handshake.h.inc"
static LogicalResult verifyTrait(Operation *op)