10#include "mlir/Pass/PassManager.h"
11#include "mlir/Pass/PassRegistry.h"
18struct ObjectFifoLoweringOptions
19 :
public PassPipelineOptions<ObjectFifoLoweringOptions> {
20 Option<bool> packetSwitched{
21 *
this,
"packet-sw-objFifos",
23 "Flag to enable aie.packetflow lowering from objectfifos."),
24 llvm::cl::init(
false)};
25 Option<bool> reserveControllerPacketIds{
26 *
this,
"reserve-controller-packet-ids",
27 llvm::cl::desc(
"Reserve the tile controllers' packet IDs."),
28 llvm::cl::init(
false)};
29 Option<bool> skipVerify{
31 llvm::cl::desc(
"Skip structural verification of split objectFifo IR."),
32 llvm::cl::init(
false)};
33 Option<bool> checkQueueSpace{
34 *
this,
"check-queue-space",
35 llvm::cl::desc(
"Wait for room on the task queue before each push a core "
36 "makes onto an out-of-order channel."),
37 llvm::cl::init(
true)};
44 bool reserveControllerPacketIds,
45 bool checkQueueSpace) {
53 AIEObjectFifoInsertCoreQueuePushesOptions pushOptions;
54 pushOptions.checkQueueSpace = checkQueueSpace;
62 PassPipelineRegistration<ObjectFifoLoweringOptions>(
63 "aie-objectFifo-stateful-transform",
64 "Lower aie.objectfifo to buffers, locks, flows and DMA programs",
65 [](OpPassManager &pm,
const ObjectFifoLoweringOptions &options) {
67 pm, options.packetSwitched, options.skipVerify,
68 options.reserveControllerPacketIds, options.checkQueueSpace);
void addObjectFifoLoweringPasses(mlir::OpPassManager &pm, bool packetSwitched, bool skipVerify, bool reserveControllerPacketIds=false, bool checkQueueSpace=true)
Adds the passes of aie-objectFifo-stateful-transform to pm, which anchors on DeviceOp.
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerCoresPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoInsertCoreQueuePushesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoAllocatePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignPacketIdsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoErasePoolsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoVerifyPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerDMAsPass()
void registerAIEObjectFifoPipeline()
Register aie-objectFifo-stateful-transform as a pipeline over the passes that lower aie....
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoSplitPass()