8#ifndef AIE_DIALECT_AIE_TRANSFORMS_AIESHIMSHARING_H
9#define AIE_DIALECT_AIE_TRANSFORMS_AIESHIMSHARING_H
13#include "llvm/ADT/DenseMap.h"
14#include "llvm/ADT/STLFunctionalExtras.h"
15#include "llvm/ADT/SmallVector.h"
43 llvm::function_ref<std::optional<End>(mlir::StringAttr)> endOf);
46 bool apart(mlir::StringAttr a, mlir::StringAttr b)
const;
50 llvm::SmallVector<llvm::SmallVector<unsigned>>
51 groups(llvm::ArrayRef<mlir::StringAttr> ends)
const;
55 int64_t first = std::numeric_limits<int64_t>::max();
57 int64_t lastIssue = -1;
58 int64_t lastDone = -1;
61 llvm::SmallVector<llvm::DenseMap<mlir::StringAttr, Span>> spans;
ShimTransferSpans(DeviceOp device, llvm::function_ref< std::optional< End >(mlir::StringAttr)> endOf)
endOf maps a symbol a runtime sequence transfers through to the objectFIFO end it belongs to,...
bool apart(mlir::StringAttr a, mlir::StringAttr b) const
Whether the ends of a and b are never in flight together.
llvm::SmallVector< llvm::SmallVector< unsigned > > groups(llvm::ArrayRef< mlir::StringAttr > ends) const
Splits ends into groups whose members are pairwise apart, each group taking one channel: first fit,...
A shim end a runtime sequence transfers through.
bool sends
An MM2S end, sending into the array.