The MoveOpPastFork() transformation is more flexible because it uses deepcopies of an original node (the get_attrs_fxn parameter is not needed anymore)
Some transformations (MoveScalarLinearPastInvariants, MakeMaxPoolNHWC, MakeScaleResizeNHWC) are fixed to check whether the node to be moved is a fork node, in which case the MoveOpPastFork would be called
InferDuplicateStreamsLayer() transform in src/finn/transformation/fpgadataflow/convert_to_hw_layers.py is fixed and every output of a fork node is checked (the transform used to be applying the transform just for the first output of a node)
The MoveOpPastFork() transformation is more flexible because it uses deepcopies of an original node (the get_attrs_fxn parameter is not needed anymore)
Some transformations (MoveScalarLinearPastInvariants, MakeMaxPoolNHWC, MakeScaleResizeNHWC) are fixed to check whether the node to be moved is a fork node, in which case the MoveOpPastFork would be called
InferDuplicateStreamsLayer() transform in src/finn/transformation/fpgadataflow/convert_to_hw_layers.py is fixed and every output of a fork node is checked (the transform used to be applying the transform just for the first output of a node)
InsertFIFO() transform in src/finn/transformation/fpgadataflow/insert_fifo.py is fixed for the case of the last node in the graph being a fork node (the transform was breaking the graph in such a case)