13 namespace optimizations
16 template <
typename Comparable>
29 if (!child.IsOutputUnconnected())
35 auto& comparableChild = *boost::polymorphic_downcast<Comparable*>(&child);
37 Layer* lowestPriorityChild = &child;
40 Layer* sibling = &it->GetOwningLayer();
41 if ((sibling != lowestPriorityChild) && comparableChild.IsEqual(*sibling))
43 if (sibling->
GetPriority() < lowestPriorityChild->GetPriority())
49 for (
auto lowestPriorityChildOut = lowestPriorityChild->BeginOutputSlots();
50 lowestPriorityChildOut != lowestPriorityChild->EndOutputSlots(); ++lowestPriorityChildOut)
52 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.