blob: ed7cf274fee2592a05b287db37b459f8a4e821b5 [file] [log] [blame]
Finn Williamsb454c5c2021-02-09 15:56:23 +00001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "armnn/LayerVisitorBase.hpp"
9#include "RangeTracker.hpp"
10
11#include <armnn/INetwork.hpp>
12#include <armnnQuantizer/INetworkQuantizer.hpp>
13
14
15namespace armnn
16{
17
18class StaticRangeStrategy : public IStrategy
19{
20public:
21 StaticRangeStrategy(RangeTracker& rangeTracker);
22 ~StaticRangeStrategy() = default;
23
24 void ExecuteStrategy(const armnn::IConnectableLayer *layer,
25 const BaseDescriptor &descriptor,
26 const std::vector<armnn::ConstTensor> &constants,
27 const char *name,
28 const armnn::LayerBindingId id) override;
29
30private:
31 /// Set the range for an output slot on a layer
32 void SetRange(const IConnectableLayer* layer, unsigned int outputIdx, float min, float max);
33
34 void ForwardParentParameters(const IConnectableLayer* layer);
35
36 /// Mapping from a layer Guid to an array of ranges for outputs
37 RangeTracker& m_RangeTracker;
38
39};
40
41} //namespace armnn