18 inline std::unique_ptr<Encoder<T>>
MakeEncoder(
const TensorInfo& info,
void* data =
nullptr);
23 switch(
info.GetDataType())
27 return std::make_unique<QASymmS8Encoder>(
28 static_cast<int8_t*
>(data),
29 info.GetQuantizationScale(),
30 info.GetQuantizationOffset());
34 return std::make_unique<QASymm8Encoder>(
35 static_cast<uint8_t*
>(data),
36 info.GetQuantizationScale(),
37 info.GetQuantizationOffset());
41 if (
info.HasPerAxisQuantization())
44 return std::make_unique<QSymm8PerAxisEncoder>(
45 static_cast<int8_t*
>(data),
51 return std::make_unique<QSymmS8Encoder>(
52 static_cast<int8_t*
>(data),
53 info.GetQuantizationScale(),
54 info.GetQuantizationOffset());
59 return std::make_unique<QSymm16Encoder>(
60 static_cast<int16_t*
>(data),
61 info.GetQuantizationScale(),
62 info.GetQuantizationOffset());
66 return std::make_unique<Int32Encoder>(
static_cast<int32_t*
>(data));
70 return std::make_unique<Float16Encoder>(
static_cast<Half*
>(data));
74 return std::make_unique<Float32Encoder>(
static_cast<float*
>(data));
86 inline std::unique_ptr<Encoder<bool>>
MakeEncoder(
const TensorInfo& info,
void* data)
88 switch(info.GetDataType())
92 return std::make_unique<BooleanEncoder>(
static_cast<uint8_t*
>(data));
96 ARMNN_ASSERT_MSG(
false,
"Cannot encode from boolean. Not supported target Data Type!");
104 inline std::unique_ptr<Encoder<int32_t>>
MakeEncoder(
const TensorInfo& info,
void* data)
106 switch(
info.GetDataType())
110 return std::make_unique<Int32ToInt32tEncoder>(
static_cast<int32_t*
>(data));