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))
44 if (sibling->
GetPriority() < lowestPriorityChild->GetPriority())
50 for (
auto lowestPriorityChildOut = lowestPriorityChild->BeginOutputSlots();
51 lowestPriorityChildOut != lowestPriorityChild->EndOutputSlots(); ++lowestPriorityChildOut)
53 siblingOut->MoveAllConnections(*lowestPriorityChildOut);
const std::vector< InputSlot * > & GetConnections() const
~SquashEqualSiblingsImpl()=default
void swap(OriginsDescriptor &first, OriginsDescriptor &second)
SquashEqualSiblingsImpl()=default
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
unsigned int GetNumConnections() const override
LayerPriority GetPriority() const
This layer represents a transpose operation.
std::vector< OutputSlot >::iterator BeginOutputSlots()
void Run(Graph &graph, InputSlot &connection) const
Run for every connection between a base Layer (any) and a child ComparableLayer.