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