14 #include <boost/assert.hpp> 15 #include <boost/core/ignore_unused.hpp> 38 template<
typename IType>
46 virtual void Reset(
void*) = 0;
48 virtual IType Get()
const = 0;
51 template<
typename IType>
59 virtual void Reset(
void*) = 0;
61 virtual void Set(IType right) = 0;
63 virtual IType Get()
const = 0;
66 template<
typename T,
typename Base>
71 : m_Iterator(data), m_Start(data)
76 m_Iterator =
reinterpret_cast<T*
>(data);
82 BOOST_ASSERT(m_Iterator);
89 BOOST_ASSERT(m_Iterator);
90 m_Iterator += increment;
96 BOOST_ASSERT(m_Iterator);
97 m_Iterator -= increment;
103 BOOST_ASSERT(m_Iterator);
104 m_Iterator = m_Start + index;
110 boost::ignore_unused(axisIndex);
111 BOOST_ASSERT(m_Iterator);
112 m_Iterator = m_Start + index;
130 float Get()
const override 137 const int32_t m_Offset;
149 float Get()
const override 156 const int32_t m_Offset;
168 float Get()
const override 175 const int32_t m_Offset;
187 float Get()
const override 194 const int32_t m_Offset;
206 float Get()
const override 223 float Get()
const override 238 float Get()
const override 240 return static_cast<float>(*m_Iterator) * m_Scale;
256 float Get()
const override 258 return static_cast<float>(*m_Iterator);
271 void Set(
float right)
override 273 *m_Iterator = armnn::Quantize<uint8_t>(right, m_Scale, m_Offset);
276 float Get()
const override 283 const int32_t m_Offset;
295 void Set(
float right)
override 297 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
300 float Get()
const override 307 const int32_t m_Offset;
319 void Set(
float right)
override 321 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
324 float Get()
const override 331 const int32_t m_Offset;
343 void Set(
float right)
override 345 *m_Iterator = armnn::Quantize<int16_t>(right, m_Scale, m_Offset);
348 float Get()
const override 355 const int32_t m_Offset;
367 void Set(
float right)
override 372 float Get()
const override 389 void Set(
float right)
override 394 float Get()
const override 409 void Set(
float right)
override 411 *m_Iterator =
static_cast<int32_t
>(right);
414 float Get()
const override 416 return static_cast<float>(*m_Iterator);
429 void Set(
bool right)
override 441 template<
typename T,
typename Base>
447 : m_Iterator(data), m_Start(data), m_AxisIndex(0), m_AxisFactor(axisFactor)
453 BOOST_ASSERT(m_Iterator);
454 m_Iterator = m_Start + index;
455 m_AxisIndex = axisIndex;
461 m_Iterator =
reinterpret_cast<T*
>(data);
462 m_Start = m_Iterator;
468 BOOST_ASSERT(m_Iterator);
470 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
476 BOOST_ASSERT(m_Iterator);
477 m_Iterator += increment;
478 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
484 BOOST_ASSERT(m_Iterator);
485 m_Iterator -= decrement;
486 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
492 BOOST_ASSERT(m_Iterator);
493 m_Iterator = m_Start + index;
494 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
511 float Get()
const override 519 return m_Scale[m_AxisIndex];
523 std::vector<float> m_Scale;
534 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale[m_AxisIndex], 0);
545 return m_Scale[m_AxisIndex];
549 std::vector<float> m_Scale;
558 float Get()
const override 566 return m_Scales[m_AxisIndex];
570 std::vector<float> m_Scales;
PerAxisIterator & operator+=(const unsigned int increment) override
QASymmS8Decoder(const float scale, const int32_t offset)
BooleanEncoder(uint8_t *data)
float Get() const override
void Set(float right) override
QSymmS8Decoder(const float scale, const int32_t offset)
QASymmS8Decoder(const int8_t *data, const float scale, const int32_t offset)
Float32Encoder(float *data)
ScaledInt32Decoder(const float scale)
QASymm8Encoder(const float scale, const int32_t offset)
void Reset(void *data) override
Float32Decoder(const float *data)
TypedIterator & operator[](const unsigned int index) override
TypedIterator & SetIndex(unsigned int index, unsigned int axisIndex=0) override
virtual BaseIterator & operator++()=0
PerAxisIterator & SetIndex(unsigned int index, unsigned int axisIndex) override
void Set(float right) override
void Set(float right) override
void Set(float right) override
float Get() const override
float Get() const override
float Get() const override
float Get() const override
void Set(bool right) override
QSymm16Decoder(const float scale, const int32_t offset)
QSymm8PerAxisEncoder(int8_t *data, const std::vector< float > &scale, unsigned int axisFactor)
QASymmS8Encoder(const float scale, const int32_t offset)
TypedIterator(T *data=nullptr)
unsigned int m_AxisFactor
bool Get() const override
QASymm8Encoder(uint8_t *data, const float scale, const int32_t offset)
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
virtual BaseIterator & SetIndex(unsigned int index, unsigned int axisIndex=0)=0
QASymm8Decoder(const float scale, const int32_t offset)
TypedIterator & operator-=(const unsigned int increment) override
float Get() const override
static void ConvertFloat32To16(const float *srcFloat32Buffer, size_t numElements, void *dstFloat16Buffer)
QSymmS8Encoder(int8_t *data, const float scale, const int32_t offset)
float Get() const override
void Set(float right) override
virtual BaseIterator & operator+=(const unsigned int increment)=0
QSymm16Decoder(const int16_t *data, const float scale, const int32_t offset)
PerAxisIterator & operator++() override
void Set(float right) override
Float16Decoder(const Half *data)
ScaledInt32PerAxisDecoder(const int32_t *data, const std::vector< float > &scales, unsigned int axisFactor)
QSymm8PerAxisDecoder(const int8_t *data, const std::vector< float > &scale, unsigned int axisFactor)
QASymm8Decoder(const uint8_t *data, const float scale, const int32_t offset)
float Get() const override
void Reset(void *data) override
Float16Encoder(Half *data)
float Get() const override
float Get() const override
float Get() const override
QSymmS8Decoder(const int8_t *data, const float scale, const int32_t offset)
Int32Encoder(int32_t *data)
QSymmS8Encoder(const float scale, const int32_t offset)
TypedIterator & operator++() override
PerAxisIterator & operator[](const unsigned int index) override
PerAxisIterator & operator-=(const unsigned int decrement) override
float Get() const override
void Set(float right) override
virtual BaseIterator & operator[](const unsigned int index)=0
QSymm16Encoder(const float scale, const int32_t offset)
float Get() const override
float Get() const override
QASymmS8Encoder(int8_t *data, const float scale, const int32_t offset)
QSymm16Encoder(int16_t *data, const float scale, const int32_t offset)
float Get() const override
float Get() const override
Int32Decoder(const int32_t *data)
PerAxisIterator(T *data=nullptr, unsigned int axisFactor=0)
TypedIterator & operator+=(const unsigned int increment) override
virtual BaseIterator & operator-=(const unsigned int increment)=0
ScaledInt32Decoder(const int32_t *data, const float scale)
float Get() const override