blob: 592f258b81711bebc5e23f5956b4baf9b178fac4 [file] [log] [blame]
Saoirse Stewart3166c3e2019-02-18 15:24:53 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "SerializerUtils.hpp"
7
8namespace armnnSerializer
9{
10
11using namespace armnn;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000012
Derek Lamberti0028d1b2019-02-20 13:57:42 +000013armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
Mike Kellya0766c32019-02-19 17:22:07 +000014{
15 switch (dataType)
16 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000017 case armnn::DataType::Float32:
18 case armnn::DataType::Signed32:
19 return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
20 case armnn::DataType::Float16:
21 return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
22 case armnn::DataType::QuantisedAsymm8:
23 case armnn::DataType::Boolean:
24 return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
Mike Kellya0766c32019-02-19 17:22:07 +000025 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000026 return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
Mike Kellya0766c32019-02-19 17:22:07 +000027 }
28}
29
Derek Lamberti0028d1b2019-02-20 13:57:42 +000030armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000031{
32 switch (dataType)
33 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000034 case armnn::DataType::Float32:
35 return armnnSerializer::DataType::DataType_Float32;
36 case armnn::DataType::Float16:
37 return armnnSerializer::DataType::DataType_Float16;
38 case armnn::DataType::Signed32:
39 return armnnSerializer::DataType::DataType_Signed32;
40 case armnn::DataType::QuantisedAsymm8:
41 return armnnSerializer::DataType::DataType_QuantisedAsymm8;
42 case armnn::DataType::Boolean:
43 return armnnSerializer::DataType::DataType_Boolean;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000044 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000045 return armnnSerializer::DataType::DataType_Float16;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000046 }
47}
48
Derek Lamberti0028d1b2019-02-20 13:57:42 +000049armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000050{
51 switch (dataLayout)
52 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000053 case armnn::DataLayout::NHWC:
54 return armnnSerializer::DataLayout::DataLayout_NHWC;
55 case armnn::DataLayout::NCHW:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000056 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000057 return armnnSerializer::DataLayout::DataLayout_NCHW;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000058 }
59}
60
Derek Lamberti0028d1b2019-02-20 13:57:42 +000061armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000062{
63 switch (poolingAlgorithm)
64 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000065 case armnn::PoolingAlgorithm::Average:
66 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
67 case armnn::PoolingAlgorithm::L2:
68 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
69 case armnn::PoolingAlgorithm::Max:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000070 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000071 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000072 }
73}
74
Derek Lamberti0028d1b2019-02-20 13:57:42 +000075armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000076{
77 switch (outputShapeRounding)
78 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000079 case armnn::OutputShapeRounding::Ceiling:
80 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
81 case armnn::OutputShapeRounding::Floor:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000082 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000083 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000084 }
85}
86
Derek Lamberti0028d1b2019-02-20 13:57:42 +000087armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000088{
89 switch (paddingMethod)
90 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000091 case armnn::PaddingMethod::IgnoreValue:
92 return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
93 case armnn::PaddingMethod::Exclude:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000094 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000095 return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000096 }
97}
98
99} // namespace armnnSerializer