17template <
typename Comparable>
30 if (!child.IsOutputUnconnected())
38 Layer* lowestPriorityChild = &child;
41 Layer* sibling = &it->GetOwningLayer();
42 if ((sibling != lowestPriorityChild) && comparableChild.IsEqual(*sibling))
46 std::swap(sibling, lowestPriorityChild);
51 lowestPriorityChildOut != lowestPriorityChild->
EndOutputSlots(); ++lowestPriorityChildOut)
53 siblingOut->MoveAllConnections(*lowestPriorityChildOut);
std::vector< OutputSlot >::iterator BeginOutputSlots()
LayerPriority GetPriority() const
std::vector< OutputSlot >::iterator EndOutputSlots()
unsigned int GetNumConnections() const override
const std::vector< InputSlot * > & GetConnections() const
This layer represents a transpose operation.
~SquashEqualSiblingsImpl()=default
void Run(Graph &graph, InputSlot &connection) const
Run for every connection between a base Layer (any) and a child ComparableLayer.
SquashEqualSiblingsImpl()=default
OptimizeForConnection< Layer, TransposeLayer, SquashEqualSiblingsImpl< TransposeLayer > > SquashEqualTransposeSiblings
OptimizeForConnection< Layer, ReshapeLayer, SquashEqualSiblingsImpl< ReshapeLayer > > SquashEqualReshapeSiblings
OptimizeForConnection< Layer, PermuteLayer, SquashEqualSiblingsImpl< PermuteLayer > > SquashEqualPermuteSiblings
Copyright (c) 2021 ARM Limited and Contributors.
DestType PolymorphicDowncast(SourceType *value)
Polymorphic downcast for build in pointers only.
void IgnoreUnused(Ts &&...)