blob: 045d6aac5c9e4e8888ba07e42d369e864ef62f06 [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;
Derek Lambertif90c56d2020-01-10 17:14:08 +000055 case armnn::DataType::QAsymmU8:
Sadik Armagan1a84fe32020-03-27 15:56:57 +000056 case armnn::DataType::QSymmS8:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000057 case armnn::DataType::Boolean:
58 return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
Mike Kellya0766c32019-02-19 17:22:07 +000059 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000060 return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
Mike Kellya0766c32019-02-19 17:22:07 +000061 }
62}
63
Derek Lamberti0028d1b2019-02-20 13:57:42 +000064armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000065{
66 switch (dataType)
67 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000068 case armnn::DataType::Float32:
69 return armnnSerializer::DataType::DataType_Float32;
70 case armnn::DataType::Float16:
71 return armnnSerializer::DataType::DataType_Float16;
72 case armnn::DataType::Signed32:
73 return armnnSerializer::DataType::DataType_Signed32;
Derek Lambertif90c56d2020-01-10 17:14:08 +000074 case armnn::DataType::QSymmS16:
75 return armnnSerializer::DataType::DataType_QSymmS16;
Francis Murtaghddb1d062020-03-10 13:51:45 +000076 case armnn::DataType::QAsymmS8:
77 return armnnSerializer::DataType::DataType_QAsymmS8;
Derek Lambertif90c56d2020-01-10 17:14:08 +000078 case armnn::DataType::QAsymmU8:
79 return armnnSerializer::DataType::DataType_QAsymmU8;
Sadik Armagan1a84fe32020-03-27 15:56:57 +000080 case armnn::DataType::QSymmS8:
81 return armnnSerializer::DataType::DataType_QSymmS8;
Derek Lamberti0028d1b2019-02-20 13:57:42 +000082 case armnn::DataType::Boolean:
83 return armnnSerializer::DataType::DataType_Boolean;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000084 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000085 return armnnSerializer::DataType::DataType_Float16;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000086 }
87}
88
Derek Lamberti0028d1b2019-02-20 13:57:42 +000089armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000090{
91 switch (dataLayout)
92 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000093 case armnn::DataLayout::NHWC:
94 return armnnSerializer::DataLayout::DataLayout_NHWC;
95 case armnn::DataLayout::NCHW:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000096 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000097 return armnnSerializer::DataLayout::DataLayout_NCHW;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000098 }
99}
100
josh minor4a3c6102020-01-06 16:40:46 -0600101armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
102{
103 switch (comparisonOperation)
104 {
105 case armnn::UnaryOperation::Abs:
106 return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
107 case armnn::UnaryOperation::Rsqrt:
108 return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
109 case armnn::UnaryOperation::Sqrt:
110 return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
111 case armnn::UnaryOperation::Exp:
112 return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
113 case armnn::UnaryOperation::Neg:
114 return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
James Conroyaba90cd2020-11-06 16:28:18 +0000115 case armnn::UnaryOperation::LogicalNot:
116 return armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot;
josh minor4a3c6102020-01-06 16:40:46 -0600117 default:
118 throw armnn::InvalidArgumentException("Unary operation unknown");
119 }
120}
121
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000122armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000123{
124 switch (poolingAlgorithm)
125 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000126 case armnn::PoolingAlgorithm::Average:
127 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
128 case armnn::PoolingAlgorithm::L2:
129 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
130 case armnn::PoolingAlgorithm::Max:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000131 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000132 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000133 }
134}
135
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000136armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000137{
138 switch (outputShapeRounding)
139 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000140 case armnn::OutputShapeRounding::Ceiling:
141 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
142 case armnn::OutputShapeRounding::Floor:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000143 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000144 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000145 }
146}
147
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000148armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000149{
150 switch (paddingMethod)
151 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000152 case armnn::PaddingMethod::IgnoreValue:
153 return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
154 case armnn::PaddingMethod::Exclude:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000155 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000156 return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000157 }
158}
159
Nina Drozd57728782019-02-27 10:53:27 +0000160armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
161 armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
162{
163 switch (normalizationAlgorithmChannel)
164 {
165 case armnn::NormalizationAlgorithmChannel::Across:
166 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
167 case armnn::NormalizationAlgorithmChannel::Within:
168 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
169 default:
170 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
171 }
172}
173
174armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
175 armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
176{
177 switch (normalizationAlgorithmMethod)
178 {
179 case armnn::NormalizationAlgorithmMethod::LocalBrightness:
180 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
181 case armnn::NormalizationAlgorithmMethod::LocalContrast:
182 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
183 default:
184 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
185 }
186}
187
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100188armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
189{
190 switch (method)
191 {
192 case armnn::ResizeMethod::NearestNeighbor:
193 return armnnSerializer::ResizeMethod_NearestNeighbor;
194 case armnn::ResizeMethod::Bilinear:
195 return armnnSerializer::ResizeMethod_Bilinear;
196 default:
197 return armnnSerializer::ResizeMethod_NearestNeighbor;
198 }
199}
200
Aron Virginas-Tare80ebd12019-10-17 16:11:54 +0100201} // namespace armnnSerializer