15#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
16#include "mlir/Dialect/SCF/IR/SCF.h"
17#include "mlir/Pass/Pass.h"
20std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
37 "aie.objectfifo.object_slot";
63#include "aie/Dialect/AIE/Transforms/AIEPasses.h.inc"
66std::unique_ptr<mlir::OperationPass<DeviceOp>>
69std::unique_ptr<mlir::OperationPass<DeviceOp>>
71std::unique_ptr<mlir::OperationPass<DeviceOp>>
73 const AIEAssignBufferAddressesOptions &options);
74std::unique_ptr<mlir::OperationPass<DeviceOp>>
77std::unique_ptr<mlir::OperationPass<DeviceOp>>
79std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
81std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
83std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
85std::unique_ptr<mlir::OperationPass<DeviceOp>>
87std::unique_ptr<mlir::OperationPass<DeviceOp>>
89std::unique_ptr<mlir::OperationPass<DeviceOp>>
91 const AIEObjectFifoInsertCoreQueuePushesOptions &options);
95std::unique_ptr<mlir::OperationPass<DeviceOp>>
98std::unique_ptr<mlir::OperationPass<DeviceOp>>
100std::unique_ptr<mlir::OperationPass<DeviceOp>>
102std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
104std::unique_ptr<mlir::OperationPass<DeviceOp>>
107std::unique_ptr<mlir::OperationPass<DeviceOp>>
109std::unique_ptr<mlir::OperationPass<DeviceOp>>
111 llvm::ArrayRef<std::pair<TileID, Port>> avoidedPorts);
113std::unique_ptr<mlir::OperationPass<DeviceOp>>
118std::unique_ptr<mlir::OperationPass<DeviceOp>>
120 bool reserveControllerPacketIds =
false);
121std::unique_ptr<mlir::OperationPass<DeviceOp>>
123std::unique_ptr<mlir::OperationPass<DeviceOp>>
125std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
127std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
129std::unique_ptr<mlir::OperationPass<DeviceOp>>
131std::unique_ptr<mlir::OperationPass<DeviceOp>>
134std::unique_ptr<mlir::OperationPass<DeviceOp>>
136std::unique_ptr<mlir::OperationPass<DeviceOp>>
138std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
140std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
142std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
144 const AIEGenerateColumnControlOverlayOptions &options);
147std::unique_ptr<mlir::OperationPass<DeviceOp>>
152#define GEN_PASS_REGISTRATION
153#include "aie/Dialect/AIE/Transforms/AIEPasses.h.inc"
159 bool reserveControllerPacketIds =
false,
160 bool checkQueueSpace =
true);
bool isForeverForLoop(mlir::scf::ForOp forOp)
Whether forOp counts from 0 to INT64_MAX in steps of 1 and never reads its induction variable.
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 > > createAIEInsertTraceFlowsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEHoistVectorTransferPointersPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceRegPackWritesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPrepareBuffersPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIECoreIntRangeNarrowingPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerCoresPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELowerCoreIssuedConfigurationPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoInsertCoreQueuePushesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignTileCtrlIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELowerCascadeFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoAllocatePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIENormalizeDmaBdDimsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEFindFlowsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECoreToStandardPass()
constexpr llvm::StringLiteral kObjectFifoObjectSlotAttrName
Discardable attribute set by --aie-objectfifo-lower-cores on the rank-0 memref.allocas that hold a co...
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECheckAgainstImagePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLivenessPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEVectorToPointerLoopsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEGenerateColumnControlOverlayPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignLockIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPlaceTilesPass()
mlir::scf::WhileOp replaceWithForeverLoop(mlir::scf::ForOp forOp)
Replace forOp, which isForeverForLoop accepts, with an scf.while that isForeverLoop accepts and that ...
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoUnrollPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIENormalizeAddressSpacesPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIERouteFlowsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignPacketIdsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEAnnotateShimSharingPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIESplitFlowViasPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignCoreLinkFilesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoErasePoolsPass()
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIECanonicalizeDevicePass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferAddressesPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoVerifyPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIELocalizeLocksPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIETraceToConfigPass()
constexpr llvm::StringLiteral kObjectFifoUnrollHintAttrName
Discardable attribute set by --aie-objectfifo-lower-cores on scf.for and forever scf....
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEAssignBufferDescriptorIDsPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoLowerDMAsPass()
bool isForeverLoop(mlir::scf::WhileOp whileOp)
Whether whileOp repeats forever: its condition is a constant true, and its condition region does noth...
void registerAIEObjectFifoPipeline()
Register aie-objectFifo-stateful-transform as a pipeline over the passes that lower aie....
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEPathfinderPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEVectorTransferLoweringPass()
std::unique_ptr< mlir::OperationPass< DeviceOp > > createAIEObjectFifoSplitPass()
mlir::Operation * getObjectFifoLoopParent(mlir::Operation *op)
The innermost loop around op that isObjectFifoLoop accepts, or null.
std::unique_ptr< mlir::OperationPass< mlir::ModuleOp > > createAIEImportOverlayPass()
bool isObjectFifoLoop(mlir::Operation *op)
Whether op is a loop that objectFifo lowering unrolls by the rotation period of the objectFifos acces...