CIRCT 21.0.0git
Loading...
Searching...
No Matches
HandshakeInterfaces.h
Go to the documentation of this file.
1//===- HandshakeInterfaces.h - Handshake op interfaces ----------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file defines the interfaces of the handshake dialect.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef CIRCT_DIALECT_HANDSHAKE_HANDSHAKEINTERFACES_H
14#define CIRCT_DIALECT_HANDSHAKE_HANDSHAKEINTERFACES_H
15
17#include "circt/Support/LLVM.h"
18#include "mlir/IR/OpDefinition.h"
19#include "mlir/IR/OpImplementation.h"
20#include "mlir/IR/Operation.h"
21#include "mlir/Interfaces/CallInterfaces.h"
22#include "mlir/Interfaces/FunctionInterfaces.h"
23#include "mlir/Interfaces/InferTypeOpInterface.h"
24#include "mlir/Interfaces/SideEffectInterfaces.h"
25#include "llvm/ADT/Any.h"
26
27namespace circt {
28namespace handshake {
29
31 unsigned index;
32 mlir::Value addressIn;
33 mlir::Value dataOut;
34 mlir::Value doneOut;
35};
36
38 unsigned index;
39 mlir::Value addressIn;
40 mlir::Value dataIn;
41 mlir::Value doneOut;
42};
43
44/// Default implementation for checking whether an operation is a control
45/// operation. This function cannot be defined within ControlInterface
46/// because its implementation attempts to cast the operation to an
47/// SOSTInterface, which may not be declared at the point where the default
48/// trait's method is defined. Therefore, the default implementation of
49/// ControlInterface's isControl method simply calls this function.
50bool isControlOpImpl(Operation *op);
51} // end namespace handshake
52} // end namespace circt
53
54#include "circt/Dialect/Handshake/HandshakeInterfaces.h.inc"
55
56#endif // CIRCT_DIALECT_HANDSHAKE_HANDSHAKEINTERFACES_H
bool isControlOpImpl(Operation *op)
Default implementation for checking whether an operation is a control operation.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.