13 #ifndef CIRCT_DIALECT_HANDSHAKE_HANDSHAKEPASSES_H
14 #define CIRCT_DIALECT_HANDSHAKE_HANDSHAKEPASSES_H
22 #include "mlir/Dialect/Func/IR/FuncOps.h"
23 #include "mlir/Dialect/MemRef/IR/MemRef.h"
24 #include "mlir/Dialect/SCF/IR/SCF.h"
30 std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
32 std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
38 std::unique_ptr<mlir::Pass>
41 std::unique_ptr<mlir::OperationPass<handshake::FuncOp>>
43 unsigned bufferSize = 2);
53 std::string &topLevel,
54 SmallVectorImpl<std::string> &sortedFuncs);
61 LogicalResult
addSinkOps(Region &r, OpBuilder &rewriter);
64 LogicalResult
addForkOps(Region &r, OpBuilder &rewriter);
65 void insertFork(Value result,
bool isLazy, OpBuilder &rewriter);
68 LogicalResult
lockRegion(Region &r, OpBuilder &rewriter);
71 LogicalResult
bufferRegion(Region &r, OpBuilder &rewriter, StringRef strategy,
75 #define GEN_PASS_REGISTRATION
76 #include "circt/Dialect/Handshake/HandshakePasses.h.inc"
std::unique_ptr< mlir::OperationPass< handshake::FuncOp > > createHandshakeInsertBuffersPass(const std::string &strategy="all", unsigned bufferSize=2)
std::unique_ptr< mlir::Pass > createHandshakeMaterializeForksSinksPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createHandshakeOpCountPass()
std::map< std::string, std::set< std::string > > InstanceGraph
Iterates over the handshake::FuncOp's in the program to build an instance graph.
LogicalResult resolveInstanceGraph(ModuleOp moduleOp, InstanceGraph &instanceGraph, std::string &topLevel, SmallVectorImpl< std::string > &sortedFuncs)
Iterates over the handshake::FuncOp's in the program to build an instance graph.
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createHandshakeDotPrintPass()
LogicalResult addForkOps(Region &r, OpBuilder &rewriter)
LogicalResult verifyAllValuesHasOneUse(handshake::FuncOp op)
std::unique_ptr< mlir::Pass > createHandshakeLowerExtmemToHWPass(std::optional< bool > createESIWrapper={})
std::unique_ptr< mlir::Pass > createHandshakeDematerializeForksSinksPass()
void insertFork(Value result, bool isLazy, OpBuilder &rewriter)
std::unique_ptr< mlir::Pass > createHandshakeLegalizeMemrefsPass()
std::unique_ptr< mlir::Pass > createHandshakeRemoveBuffersPass()
std::unique_ptr< mlir::Pass > createHandshakeLockFunctionsPass()
std::unique_ptr< mlir::Pass > createHandshakeAddIDsPass()
LogicalResult bufferRegion(Region &r, OpBuilder &rewriter, StringRef strategy, unsigned bufferSize)
LogicalResult lockRegion(Region &r, OpBuilder &rewriter)
LogicalResult addSinkOps(Region &r, OpBuilder &rewriter)
This file defines an intermediate representation for circuits acting as an abstraction for constraint...