39 llvm::function_ref<std::optional<End>(mlir::StringAttr)> endOf);
42 mlir::ModuleOp module,
43 llvm::function_ref<std::optional<End>(DeviceOp, mlir::StringAttr)> endOf);
46 bool apart(mlir::StringAttr a, mlir::StringAttr b)
const;
48 bool isUsed(mlir::StringAttr end)
const;
53 llvm::SmallVector<llvm::SmallVector<unsigned>>
54 groups(llvm::ArrayRef<mlir::StringAttr> ends)
const;
58 mlir::Operation *root,
59 llvm::function_ref<std::optional<End>(DeviceOp, mlir::StringAttr)> endOf);
61 llvm::DenseMap<mlir::StringAttr,
62 llvm::SmallVector<std::tuple<unsigned, int64_t, int64_t>>>
64 llvm::DenseSet<mlir::StringAttr> used;
65 llvm::DenseMap<mlir::StringAttr, llvm::SmallVector<mlir::StringAttr>>
67 llvm::DenseSet<std::pair<mlir::StringAttr, mlir::StringAttr>> overlaps;
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,...
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,...