36 template<
typename IType>
44 virtual void Reset(
void*) = 0;
46 virtual IType Get()
const = 0;
49 template<
typename IType>
57 virtual void Reset(
void*) = 0;
59 virtual void Set(IType right) = 0;
61 virtual IType Get()
const = 0;
64 template<
typename T,
typename Base>
69 : m_Iterator(data), m_Start(data)
74 m_Iterator =
reinterpret_cast<T*
>(data);
88 m_Iterator += increment;
95 m_Iterator -= increment;
102 m_Iterator = m_Start + index;
110 m_Iterator = m_Start + index;
128 float Get()
const override 135 const int32_t m_Offset;
147 float Get()
const override 154 const int32_t m_Offset;
166 float Get()
const override 173 const int32_t m_Offset;
185 float Get()
const override 192 const int32_t m_Offset;
204 float Get()
const override 221 float Get()
const override 238 float Get()
const override 253 float Get()
const override 255 return static_cast<float>(*m_Iterator) * m_Scale;
271 float Get()
const override 273 return static_cast<float>(*m_Iterator);
286 float Get()
const override 302 void Set(
float right)
override 304 *m_Iterator = armnn::Quantize<uint8_t>(right, m_Scale, m_Offset);
307 float Get()
const override 314 const int32_t m_Offset;
326 void Set(
float right)
override 328 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
331 float Get()
const override 338 const int32_t m_Offset;
350 void Set(
float right)
override 352 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
355 float Get()
const override 362 const int32_t m_Offset;
374 void Set(
float right)
override 376 *m_Iterator = armnn::Quantize<int16_t>(right, m_Scale, m_Offset);
379 float Get()
const override 386 const int32_t m_Offset;
398 void Set(
float right)
override 403 float Get()
const override 420 void Set(
float right)
override 425 float Get()
const override 442 void Set(
float right)
override 447 float Get()
const override 462 void Set(
float right)
override 464 *m_Iterator =
static_cast<int32_t
>(right);
467 float Get()
const override 469 return static_cast<float>(*m_Iterator);
482 void Set(
bool right)
override 494 template<
typename T,
typename Base>
500 : m_Iterator(data), m_Start(data), m_AxisIndex(0), m_AxisFactor(axisFactor)
507 m_Iterator = m_Start + index;
508 m_AxisIndex = axisIndex;
514 m_Iterator =
reinterpret_cast<T*
>(data);
515 m_Start = m_Iterator;
523 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
530 m_Iterator += increment;
531 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
538 m_Iterator -= decrement;
539 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
546 m_Iterator = m_Start + index;
547 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
564 float Get()
const override 572 return m_Scale[m_AxisIndex];
576 std::vector<float> m_Scale;
587 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale[m_AxisIndex], 0);
598 return m_Scale[m_AxisIndex];
602 std::vector<float> m_Scale;
611 float Get()
const override 619 return m_Scales[m_AxisIndex];
623 std::vector<float> m_Scales;
PerAxisIterator & operator++() override
Float32Decoder(const float *data)
QSymm8PerAxisDecoder(const int8_t *data, const std::vector< float > &scale, unsigned int axisFactor)
void Set(float right) override
ScaledInt32Decoder(const float scale)
BFloat16Decoder(const BFloat16 *data)
PerAxisIterator(T *data=nullptr, unsigned int axisFactor=0)
unsigned int m_AxisFactor
virtual BaseIterator & operator-=(const unsigned int increment)=0
float Get() const override
PerAxisIterator & operator[](const unsigned int index) override
QSymmS8Decoder(const float scale, const int32_t offset)
float Get() const override
QSymm16Encoder(const float scale, const int32_t offset)
static void ConvertBFloat16ToFloat32(const void *srcBFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
void Reset(void *data) override
void Set(float right) override
ScaledInt32Decoder(const int32_t *data, const float scale)
QSymm16Decoder(const int16_t *data, const float scale, const int32_t offset)
void Set(bool right) override
float Get() const override
QSymmS8Encoder(int8_t *data, const float scale, const int32_t offset)
ScaledInt32PerAxisDecoder(const int32_t *data, const std::vector< float > &scales, unsigned int axisFactor)
float Get() const override
BFloat16Encoder(armnn::BFloat16 *data)
void Set(float right) override
QSymmS8Decoder(const int8_t *data, const float scale, const int32_t offset)
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
float Get() const override
void Set(float right) override
float Get() const override
float Get() const override
QASymmS8Decoder(const int8_t *data, const float scale, const int32_t offset)
float Get() const override
Int32Decoder(const int32_t *data)
float Get() const override
virtual BaseIterator & operator[](const unsigned int index)=0
TypedIterator & operator[](const unsigned int index) override
QASymmS8Decoder(const float scale, const int32_t offset)
QASymm8Encoder(const float scale, const int32_t offset)
static void ConvertFloat32To16(const float *srcFloat32Buffer, size_t numElements, void *dstFloat16Buffer)
Converts a buffer of FP32 values to FP16, and stores in the given dstFloat16Buffer.
float Get() const override
QSymmS8Encoder(const float scale, const int32_t offset)
Int32Encoder(int32_t *data)
void Set(float right) override
void Reset(void *data) override
virtual BaseIterator & operator++()=0
#define ARMNN_ASSERT(COND)
float Get() const override
QASymm8Encoder(uint8_t *data, const float scale, const int32_t offset)
float Get() const override
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
BooleanEncoder(uint8_t *data)
float Get() const override
float Get() const override
float Get() const override
Float16Encoder(Half *data)
QSymm8PerAxisEncoder(int8_t *data, const std::vector< float > &scale, unsigned int axisFactor)
QASymm8Decoder(const float scale, const int32_t offset)
TypedIterator & operator++() override
Float16Decoder(const Half *data)
virtual BaseIterator & SetIndex(unsigned int index, unsigned int axisIndex=0)=0
float Get() const override
float Get() const override
PerAxisIterator & SetIndex(unsigned int index, unsigned int axisIndex) override
QASymmS8Encoder(const float scale, const int32_t offset)
PerAxisIterator & operator-=(const unsigned int decrement) override
virtual BaseIterator & operator+=(const unsigned int increment)=0
static void ConvertFloat32ToBFloat16(const float *srcFloat32Buffer, size_t numElements, void *dstBFloat16Buffer)
void Set(float right) override
QSymm16Decoder(const float scale, const int32_t offset)
Float32Encoder(float *data)
float Get() const override
QASymm8Decoder(const uint8_t *data, const float scale, const int32_t offset)
TypedIterator & operator+=(const unsigned int increment) override
float Get() const override
QSymm16Encoder(int16_t *data, const float scale, const int32_t offset)
PerAxisIterator & operator+=(const unsigned int increment) override
void Set(float right) override
QASymmS8Encoder(int8_t *data, const float scale, const int32_t offset)
BooleanDecoder(const uint8_t *data)
TypedIterator & SetIndex(unsigned int index, unsigned int axisIndex=0) override
TypedIterator & operator-=(const unsigned int increment) override
TypedIterator(T *data=nullptr)
void Set(float right) override
bool Get() const override
float Get() const override