MLIR-AIE 1.4.5.dev
AIEObjectFifoPipeline.cpp
Go to the documentation of this file.
1//===- AIEObjectFifoPipeline.cpp --------------------------------*- C++ -*-===//
2//
3// Copyright (C) 2026 Advanced Micro Devices, Inc.
4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5//
6//===----------------------------------------------------------------------===//
7
9
10#include "mlir/Pass/PassManager.h"
11#include "mlir/Pass/PassRegistry.h"
12
13using namespace mlir;
14using namespace xilinx;
15using namespace xilinx::AIE;
16
17namespace {
18struct ObjectFifoLoweringOptions
19 : public PassPipelineOptions<ObjectFifoLoweringOptions> {
20 Option<bool> packetSwitched{
21 *this, "packet-sw-objFifos",
22 llvm::cl::desc(
23 "Flag to enable aie.packetflow lowering from objectfifos."),
24 llvm::cl::init(false)};
25 Option<bool> skipVerify{
26 *this, "skip-verify",
27 llvm::cl::desc("Skip structural verification of split objectFifo IR."),
28 llvm::cl::init(false)};
29};
30} // namespace
31
32void xilinx::AIE::addObjectFifoLoweringPasses(OpPassManager &pm,
33 bool packetSwitched,
34 bool skipVerify) {
35 pm.addPass(createAIEObjectFifoSplitPass());
36 if (!skipVerify) {
38 }
39 pm.addPass(createAIEAssignPacketIdsPass(packetSwitched));
44}
45
47 PassPipelineRegistration<ObjectFifoLoweringOptions>(
48 "aie-objectFifo-stateful-transform",
49 "Lower aie.objectfifo to buffers, locks, flows and DMA programs",
50 [](OpPassManager &pm, const ObjectFifoLoweringOptions &options) {
51 addObjectFifoLoweringPasses(pm, options.packetSwitched,
52 options.skipVerify);
53 });
54}
void addObjectFifoLoweringPasses(mlir::OpPassManager &pm, bool packetSwitched, bool skipVerify)
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 > > 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()