14 namespace optimizations
17 template <
typename Comparable>
30 if (!child.IsOutputUnconnected())
36 auto& comparableChild = *PolymorphicDowncast<Comparable*>(&child);
38 Layer* lowestPriorityChild = &child;
41 Layer* sibling = &it->GetOwningLayer();
42 if ((sibling != lowestPriorityChild) && comparableChild.IsEqual(*sibling))
51 lowestPriorityChildOut != lowestPriorityChild->
EndOutputSlots(); ++lowestPriorityChildOut)
53 siblingOut->MoveAllConnections(*lowestPriorityChildOut);
std::vector< OutputSlot >::iterator EndOutputSlots()
std::vector< OutputSlot >::iterator BeginOutputSlots()
LayerPriority GetPriority() const
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
Copyright (c) 2021 ARM Limited and Contributors.
void swap(OriginsDescriptor &first, OriginsDescriptor &second)
void IgnoreUnused(Ts &&...)