aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/StaticRangeVisitor.cpp
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2019-02-14 09:56:36 +0000
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-02-15 15:00:11 +0000
commite870bef8c93a3c711362b3530aa49c353f048d01 (patch)
treee2c63e9ef64b345c837ecfd656ecd42f14ac2221 /src/armnn/StaticRangeVisitor.cpp
parent43e7864cf81cd55fb53f8b98b4d387da859eae0d (diff)
downloadarmnn-e870bef8c93a3c711362b3530aa49c353f048d01.tar.gz
IVGCVSW-2621 Add static quantization of Merger
Change-Id: I19f01698a6f9b361cd1737d76e6ec2020fab77a6 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'src/armnn/StaticRangeVisitor.cpp')
-rw-r--r--src/armnn/StaticRangeVisitor.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/armnn/StaticRangeVisitor.cpp b/src/armnn/StaticRangeVisitor.cpp
index cc1255e56e..44b05ca6cb 100644
--- a/src/armnn/StaticRangeVisitor.cpp
+++ b/src/armnn/StaticRangeVisitor.cpp
@@ -177,7 +177,24 @@ void StaticRangeVisitor::VisitConstantLayer(const IConnectableLayer* layer,
min = std::min(min, inputValue);
max = std::max(max, inputValue);
}
+ SetRange(layer, 0, min, max);
+}
+void StaticRangeVisitor::VisitMergerLayer(const IConnectableLayer* layer,
+ const OriginsDescriptor& mergerDescriptor,
+ const char* name)
+{
+ float min = std::numeric_limits<float>::max();
+ float max = std::numeric_limits<float>::lowest();
+ for (unsigned int i = 0; i < layer->GetNumInputSlots(); ++i)
+ {
+ const IOutputSlot* outputSlot = layer->GetInputSlot(i).GetConnection();
+ LayerGuid layerId = outputSlot->GetOwningLayerGuid();
+ unsigned int slotIndex = outputSlot->CalculateIndexOnOwner();
+ RangeTracker::MinMaxRange range = m_RangeTracker.GetRange(layerId, slotIndex);
+ min = std::min(min, range.first);
+ max = std::max(max, range.second);
+ }
SetRange(layer, 0, min, max);
}