// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "BaseIterator.hpp" #include #include namespace armnn { template inline std::unique_ptr> MakeEncoder(const TensorInfo& info, void* data = nullptr); template<> inline std::unique_ptr> MakeEncoder(const TensorInfo& info, void* data) { switch(info.GetDataType()) { case armnn::DataType::QuantizedSymm8PerAxis: { std::pair> params = armnnUtils::GetPerAxisParams(info); return std::make_unique( static_cast(data), params.second, params.first); } case armnn::DataType::QAsymmU8: { return std::make_unique( static_cast(data), info.GetQuantizationScale(), info.GetQuantizationOffset()); } case DataType::QSymmS8: { return std::make_unique( static_cast(data), info.GetQuantizationScale(), info.GetQuantizationOffset()); } case armnn::DataType::QSymmS16: { return std::make_unique( static_cast(data), info.GetQuantizationScale(), info.GetQuantizationOffset()); } case armnn::DataType::Signed32: { return std::make_unique(static_cast(data)); } case armnn::DataType::Float16: { return std::make_unique(static_cast(data)); } case armnn::DataType::Float32: { return std::make_unique(static_cast(data)); } default: { BOOST_ASSERT_MSG(false, "Unsupported target Data Type!"); break; } } return nullptr; } template<> inline std::unique_ptr> MakeEncoder(const TensorInfo& info, void* data) { switch(info.GetDataType()) { case armnn::DataType::Boolean: { return std::make_unique(static_cast(data)); } default: { BOOST_ASSERT_MSG(false, "Cannot encode from boolean. Not supported target Data Type!"); break; } } return nullptr; } } //namespace armnn