blob: 5566abf7e46e2678b362ea919735eaa628b5389f [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
Aron Virginas-Tare80ebd12019-10-17 16:11:54 +010011armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
12{
13 switch (comparisonOperation)
14 {
15 case armnn::ComparisonOperation::Equal:
16 return armnnSerializer::ComparisonOperation::ComparisonOperation_Equal;
17 case armnn::ComparisonOperation::Greater:
18 return armnnSerializer::ComparisonOperation::ComparisonOperation_Greater;
19 case armnn::ComparisonOperation::GreaterOrEqual:
20 return armnnSerializer::ComparisonOperation::ComparisonOperation_GreaterOrEqual;
21 case armnn::ComparisonOperation::Less:
22 return armnnSerializer::ComparisonOperation::ComparisonOperation_Less;
23 case armnn::ComparisonOperation::LessOrEqual:
24 return armnnSerializer::ComparisonOperation::ComparisonOperation_LessOrEqual;
25 case armnn::ComparisonOperation::NotEqual:
26 default:
27 return armnnSerializer::ComparisonOperation::ComparisonOperation_NotEqual;
28 }
29}
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000030
Derek Lamberti0028d1b2019-02-20 13:57:42 +000031armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
Mike Kellya0766c32019-02-19 17:22:07 +000032{
33 switch (dataType)
34 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000035 case armnn::DataType::Float32:
36 case armnn::DataType::Signed32:
37 return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
38 case armnn::DataType::Float16:
Derek Lambertif90c56d2020-01-10 17:14:08 +000039 case armnn::DataType::QSymmS16:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000040 return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
Derek Lambertif90c56d2020-01-10 17:14:08 +000041 case armnn::DataType::QAsymmU8:
Sadik Armagan1a84fe32020-03-27 15:56:57 +000042 case armnn::DataType::QSymmS8:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000043 case armnn::DataType::Boolean:
44 return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
Mike Kellya0766c32019-02-19 17:22:07 +000045 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000046 return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
Mike Kellya0766c32019-02-19 17:22:07 +000047 }
48}
49
Derek Lamberti0028d1b2019-02-20 13:57:42 +000050armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000051{
52 switch (dataType)
53 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000054 case armnn::DataType::Float32:
55 return armnnSerializer::DataType::DataType_Float32;
56 case armnn::DataType::Float16:
57 return armnnSerializer::DataType::DataType_Float16;
58 case armnn::DataType::Signed32:
59 return armnnSerializer::DataType::DataType_Signed32;
Derek Lambertif90c56d2020-01-10 17:14:08 +000060 case armnn::DataType::QSymmS16:
61 return armnnSerializer::DataType::DataType_QSymmS16;
Francis Murtaghddb1d062020-03-10 13:51:45 +000062 case armnn::DataType::QAsymmS8:
63 return armnnSerializer::DataType::DataType_QAsymmS8;
Derek Lambertif90c56d2020-01-10 17:14:08 +000064 case armnn::DataType::QAsymmU8:
65 return armnnSerializer::DataType::DataType_QAsymmU8;
Sadik Armagan1a84fe32020-03-27 15:56:57 +000066 case armnn::DataType::QSymmS8:
67 return armnnSerializer::DataType::DataType_QSymmS8;
Derek Lamberti0028d1b2019-02-20 13:57:42 +000068 case armnn::DataType::Boolean:
69 return armnnSerializer::DataType::DataType_Boolean;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000070 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000071 return armnnSerializer::DataType::DataType_Float16;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000072 }
73}
74
Derek Lamberti0028d1b2019-02-20 13:57:42 +000075armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000076{
77 switch (dataLayout)
78 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000079 case armnn::DataLayout::NHWC:
80 return armnnSerializer::DataLayout::DataLayout_NHWC;
81 case armnn::DataLayout::NCHW:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000082 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000083 return armnnSerializer::DataLayout::DataLayout_NCHW;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000084 }
85}
86
josh minor4a3c6102020-01-06 16:40:46 -060087armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
88{
89 switch (comparisonOperation)
90 {
91 case armnn::UnaryOperation::Abs:
92 return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
93 case armnn::UnaryOperation::Rsqrt:
94 return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
95 case armnn::UnaryOperation::Sqrt:
96 return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
97 case armnn::UnaryOperation::Exp:
98 return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
99 case armnn::UnaryOperation::Neg:
100 return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
101 default:
102 throw armnn::InvalidArgumentException("Unary operation unknown");
103 }
104}
105
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000106armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000107{
108 switch (poolingAlgorithm)
109 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000110 case armnn::PoolingAlgorithm::Average:
111 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
112 case armnn::PoolingAlgorithm::L2:
113 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
114 case armnn::PoolingAlgorithm::Max:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000115 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000116 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000117 }
118}
119
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000120armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000121{
122 switch (outputShapeRounding)
123 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000124 case armnn::OutputShapeRounding::Ceiling:
125 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
126 case armnn::OutputShapeRounding::Floor:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000127 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000128 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000129 }
130}
131
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000132armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000133{
134 switch (paddingMethod)
135 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000136 case armnn::PaddingMethod::IgnoreValue:
137 return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
138 case armnn::PaddingMethod::Exclude:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000139 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000140 return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000141 }
142}
143
Nina Drozd57728782019-02-27 10:53:27 +0000144armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
145 armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
146{
147 switch (normalizationAlgorithmChannel)
148 {
149 case armnn::NormalizationAlgorithmChannel::Across:
150 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
151 case armnn::NormalizationAlgorithmChannel::Within:
152 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
153 default:
154 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
155 }
156}
157
158armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
159 armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
160{
161 switch (normalizationAlgorithmMethod)
162 {
163 case armnn::NormalizationAlgorithmMethod::LocalBrightness:
164 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
165 case armnn::NormalizationAlgorithmMethod::LocalContrast:
166 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
167 default:
168 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
169 }
170}
171
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100172armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
173{
174 switch (method)
175 {
176 case armnn::ResizeMethod::NearestNeighbor:
177 return armnnSerializer::ResizeMethod_NearestNeighbor;
178 case armnn::ResizeMethod::Bilinear:
179 return armnnSerializer::ResizeMethod_Bilinear;
180 default:
181 return armnnSerializer::ResizeMethod_NearestNeighbor;
182 }
183}
184
Aron Virginas-Tare80ebd12019-10-17 16:11:54 +0100185} // namespace armnnSerializer