23 mlir::DenseMap<std::pair<int, int>, mlir::Value> tilesByCoordinate;
24 mlir::Value getTileKey(mlir::Value tile);
27 mlir::DenseMap<std::tuple<mlir::Value, DMAChannelDir, int>, mlir::Operation *>
31 mlir::DenseMap<std::tuple<mlir::Value, DMAChannelDir, int>, mlir::Operation *>
35 mlir::DenseSet<std::tuple<mlir::Value, DMAChannelDir, int>> sharedChannels;
36 mlir::DenseMap<std::tuple<mlir::Value, DMAChannelDir, int>, mlir::Operation *>
41 mlir::Operation *owner;
44 mlir::DenseMap<std::tuple<mlir::Value, DMAChannelDir, int>, StreamClaim>
52 bool requiresAdjacentTileAccessChannels);
59 bool requiresAdjacentTileAccessChannels,
60 mlir::Operation *owner =
nullptr);
64 bool isChannelFree(TileLike tile, DMAChannelDir dir,
int channel);
71 mlir::Operation *owner =
nullptr,
72 bool shareable =
false);
81 mlir::Operation *user,
int getDMAChannelIndex(TileLike tile, DMAChannelDir dir, bool requiresAdjacentTileAccessChannels, mlir::Operation *owner=nullptr)
Next free channel of tile in dir, or -1 when the tile has none left.
mlir::LogicalResult checkAIEStreamIndex(TileLike tile, DMAChannel chan, mlir::Operation *user, bool packet=false)
Claim a raw stream port for user, reporting on it when the port is taken; packet users may share it w...
int reservePinnedChannel(TileLike tile, DMAChannelDir dir, int channel, mlir::Operation *owner=nullptr, bool shareable=false)
Claim channel for (tile, dir) so first-free assignment cannot take it.