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 int32_t
Get()
const override 301 float Get()
const override 317 void Set(
float right)
override 319 *m_Iterator = armnn::Quantize<uint8_t>(right, m_Scale, m_Offset);
322 float Get()
const override 329 const int32_t m_Offset;
341 void Set(
float right)
override 343 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
346 float Get()
const override 353 const int32_t m_Offset;
365 void Set(
float right)
override 367 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale, m_Offset);
370 float Get()
const override 377 const int32_t m_Offset;
389 void Set(
float right)
override 391 *m_Iterator = armnn::Quantize<int16_t>(right, m_Scale, m_Offset);
394 float Get()
const override 401 const int32_t m_Offset;
413 void Set(
float right)
override 418 float Get()
const override 435 void Set(
float right)
override 440 float Get()
const override 457 void Set(
float right)
override 462 float Get()
const override 477 void Set(
float right)
override 479 *m_Iterator =
static_cast<int32_t
>(right);
482 float Get()
const override 484 return static_cast<float>(*m_Iterator);
497 void Set(int32_t right)
override 502 int32_t
Get()
const override 517 void Set(
bool right)
override 529 template<
typename T,
typename Base>
535 : m_Iterator(data), m_Start(data), m_AxisIndex(0), m_AxisFactor(axisFactor)
542 m_Iterator = m_Start + index;
543 m_AxisIndex = axisIndex;
549 m_Iterator =
reinterpret_cast<T*
>(data);
550 m_Start = m_Iterator;
558 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
565 m_Iterator += increment;
566 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
573 m_Iterator -= decrement;
574 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
581 m_Iterator = m_Start + index;
582 m_AxisIndex =
static_cast<unsigned int>(*m_Iterator) % m_AxisFactor;
599 float Get()
const override 607 return m_Scale[m_AxisIndex];
611 std::vector<float> m_Scale;
622 *m_Iterator = armnn::Quantize<int8_t>(right, m_Scale[m_AxisIndex], 0);
633 return m_Scale[m_AxisIndex];
637 std::vector<float> m_Scale;
646 float Get()
const override 654 return m_Scales[m_AxisIndex];
658 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)
void Set(int32_t right) override
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
Int32ToInt32tEncoder(int32_t *data)
void Set(float right) override
ScaledInt32Decoder(const int32_t *data, const float scale)
int32_t Get() const override
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)
int32_t Get() const override
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)
Int32ToInt32tDecoder(const int32_t *data)
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