blob: 929bf92d240c4050f63aa037c067d9e64574719e [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
James Conroyaba90cd2020-11-06 16:28:18 +000031armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(
32 armnn::LogicalBinaryOperation logicalBinaryOperation)
33{
34 switch (logicalBinaryOperation)
35 {
36 case armnn::LogicalBinaryOperation::LogicalAnd:
37 return armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalAnd;
38 case armnn::LogicalBinaryOperation::LogicalOr:
39 return armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalOr;
40 default:
41 throw armnn::InvalidArgumentException("Logical Binary operation unknown");
42 }
43}
44
Derek Lamberti0028d1b2019-02-20 13:57:42 +000045armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
Mike Kellya0766c32019-02-19 17:22:07 +000046{
47 switch (dataType)
48 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000049 case armnn::DataType::Float32:
50 case armnn::DataType::Signed32:
51 return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
52 case armnn::DataType::Float16:
Derek Lambertif90c56d2020-01-10 17:14:08 +000053 case armnn::DataType::QSymmS16:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000054 return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
Teresa Charlin8e0d6082021-03-14 15:05:32 +000055 case armnn::DataType::QAsymmS8:
Derek Lambertif90c56d2020-01-10 17:14:08 +000056 case armnn::DataType::QAsymmU8:
Sadik Armagan1a84fe32020-03-27 15:56:57 +000057 case armnn::DataType::QSymmS8:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000058 case armnn::DataType::Boolean:
59 return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
Mike Kellya0766c32019-02-19 17:22:07 +000060 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000061 return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
Mike Kellya0766c32019-02-19 17:22:07 +000062 }
63}
64
Derek Lamberti0028d1b2019-02-20 13:57:42 +000065armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000066{
67 switch (dataType)
68 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000069 case armnn::DataType::Float32:
70 return armnnSerializer::DataType::DataType_Float32;
71 case armnn::DataType::Float16:
72 return armnnSerializer::DataType::DataType_Float16;
73 case armnn::DataType::Signed32:
74 return armnnSerializer::DataType::DataType_Signed32;
Derek Lambertif90c56d2020-01-10 17:14:08 +000075 case armnn::DataType::QSymmS16:
76 return armnnSerializer::DataType::DataType_QSymmS16;
Francis Murtaghddb1d062020-03-10 13:51:45 +000077 case armnn::DataType::QAsymmS8:
78 return armnnSerializer::DataType::DataType_QAsymmS8;
Derek Lambertif90c56d2020-01-10 17:14:08 +000079 case armnn::DataType::QAsymmU8:
80 return armnnSerializer::DataType::DataType_QAsymmU8;
Sadik Armagan1a84fe32020-03-27 15:56:57 +000081 case armnn::DataType::QSymmS8:
82 return armnnSerializer::DataType::DataType_QSymmS8;
Derek Lamberti0028d1b2019-02-20 13:57:42 +000083 case armnn::DataType::Boolean:
84 return armnnSerializer::DataType::DataType_Boolean;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000085 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000086 return armnnSerializer::DataType::DataType_Float16;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000087 }
88}
89
Derek Lamberti0028d1b2019-02-20 13:57:42 +000090armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000091{
92 switch (dataLayout)
93 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000094 case armnn::DataLayout::NHWC:
95 return armnnSerializer::DataLayout::DataLayout_NHWC;
96 case armnn::DataLayout::NCHW:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000097 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000098 return armnnSerializer::DataLayout::DataLayout_NCHW;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000099 }
100}
101
josh minor4a3c6102020-01-06 16:40:46 -0600102armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
103{
104 switch (comparisonOperation)
105 {
106 case armnn::UnaryOperation::Abs:
107 return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
108 case armnn::UnaryOperation::Rsqrt:
109 return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
110 case armnn::UnaryOperation::Sqrt:
111 return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
112 case armnn::UnaryOperation::Exp:
113 return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
114 case armnn::UnaryOperation::Neg:
115 return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
James Conroyaba90cd2020-11-06 16:28:18 +0000116 case armnn::UnaryOperation::LogicalNot:
117 return armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot;
josh minor4a3c6102020-01-06 16:40:46 -0600118 default:
119 throw armnn::InvalidArgumentException("Unary operation unknown");
120 }
121}
122
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000123armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000124{
125 switch (poolingAlgorithm)
126 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000127 case armnn::PoolingAlgorithm::Average:
128 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
129 case armnn::PoolingAlgorithm::L2:
130 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
131 case armnn::PoolingAlgorithm::Max:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000132 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000133 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000134 }
135}
136
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000137armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000138{
139 switch (outputShapeRounding)
140 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000141 case armnn::OutputShapeRounding::Ceiling:
142 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
143 case armnn::OutputShapeRounding::Floor:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000144 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000145 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000146 }
147}
148
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000149armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000150{
151 switch (paddingMethod)
152 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000153 case armnn::PaddingMethod::IgnoreValue:
154 return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
155 case armnn::PaddingMethod::Exclude:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000156 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000157 return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000158 }
159}
160
Nina Drozd57728782019-02-27 10:53:27 +0000161armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
162 armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
163{
164 switch (normalizationAlgorithmChannel)
165 {
166 case armnn::NormalizationAlgorithmChannel::Across:
167 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
168 case armnn::NormalizationAlgorithmChannel::Within:
169 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
170 default:
171 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
172 }
173}
174
175armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
176 armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
177{
178 switch (normalizationAlgorithmMethod)
179 {
180 case armnn::NormalizationAlgorithmMethod::LocalBrightness:
181 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
182 case armnn::NormalizationAlgorithmMethod::LocalContrast:
183 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
184 default:
185 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
186 }
187}
188
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100189armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
190{
191 switch (method)
192 {
193 case armnn::ResizeMethod::NearestNeighbor:
194 return armnnSerializer::ResizeMethod_NearestNeighbor;
195 case armnn::ResizeMethod::Bilinear:
196 return armnnSerializer::ResizeMethod_Bilinear;
197 default:
198 return armnnSerializer::ResizeMethod_NearestNeighbor;
199 }
200}
201
Sadik Armagan0c3ea5b2021-02-03 09:29:30 +0000202armnnSerializer::ReduceOperation GetFlatBufferReduceOperation(armnn::ReduceOperation reduceOperation)
203{
204 switch (reduceOperation)
205 {
206 case armnn::ReduceOperation::Sum:
207 return armnnSerializer::ReduceOperation::ReduceOperation_Sum;
208 case armnn::ReduceOperation::Max:
209 return armnnSerializer::ReduceOperation::ReduceOperation_Max;
210 case armnn::ReduceOperation::Mean:
211 return armnnSerializer::ReduceOperation::ReduceOperation_Mean;
212 case armnn::ReduceOperation::Min:
213 return armnnSerializer::ReduceOperation::ReduceOperation_Min;
214 default:
215 return armnnSerializer::ReduceOperation::ReduceOperation_Sum;
216 }
217}
218
Aron Virginas-Tare80ebd12019-10-17 16:11:54 +0100219} // namespace armnnSerializer