8#ifndef AIE_DIALECT_AIE_TRANSFORMS_AIECHANNELTURNS_H
9#define AIE_DIALECT_AIE_TRANSFORMS_AIECHANNELTURNS_H
13#include "llvm/ADT/ArrayRef.h"
14#include "llvm/ADT/SmallVector.h"
33 mlir::LogicalResult
read(llvm::ArrayRef<ObjectFifoCoreEndpointOp> ends,
37 mlir::LogicalResult
read(CoreOp core, llvm::ArrayRef<mlir::StringAttr> names,
38 bool coreDrains, std::string &reason);
42 llvm::ArrayRef<unsigned>
turns()
const {
return order; }
47 bool keepsUp(llvm::ArrayRef<int64_t> depths);
50 bool keepsUp(llvm::ArrayRef<unsigned> order,
51 llvm::ArrayRef<int64_t> depths)
const;
59 llvm::SmallVector<Event> period;
60 llvm::SmallVector<unsigned> order;
62 bool coreDrains =
true;
The order one core moves objects through several pools, read off its program, so that one DMA channel...
mlir::LogicalResult read(llvm::ArrayRef< ObjectFifoCoreEndpointOp > ends, std::string &reason)
Reads the order off the program of the core working through ends, all draining (the channel fills the...
bool keepsUp(llvm::ArrayRef< int64_t > depths)
Whether a channel moving objects in turns() order forever, through pools of depths,...
mlir::LogicalResult read(CoreOp core, llvm::ArrayRef< mlir::StringAttr > names, bool coreDrains, std::string &reason)
The same, before split: names are objectFIFOs core acquires from (coreDrains) or into.
llvm::ArrayRef< unsigned > turns() const
Indices into ends, one per object the channel moves in a period of the core's steady state.