• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "SerializerUtils.hpp"
7 
8 namespace armnnSerializer
9 {
10 
GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)11 armnnSerializer::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 }
30 
GetFlatBufferLogicalBinaryOperation(armnn::LogicalBinaryOperation logicalBinaryOperation)31 armnnSerializer::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 
GetFlatBufferConstTensorData(armnn::DataType dataType)45 armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
46 {
47     switch (dataType)
48     {
49         case armnn::DataType::Float32:
50         case armnn::DataType::Signed32:
51             return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
52         case armnn::DataType::Float16:
53         case armnn::DataType::QSymmS16:
54             return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
55         case armnn::DataType::QAsymmU8:
56         case armnn::DataType::QSymmS8:
57         case armnn::DataType::Boolean:
58             return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
59         default:
60             return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
61     }
62 }
63 
GetFlatBufferDataType(armnn::DataType dataType)64 armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
65 {
66     switch (dataType)
67     {
68         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;
74         case armnn::DataType::QSymmS16:
75             return armnnSerializer::DataType::DataType_QSymmS16;
76         case armnn::DataType::QAsymmS8:
77             return armnnSerializer::DataType::DataType_QAsymmS8;
78         case armnn::DataType::QAsymmU8:
79             return armnnSerializer::DataType::DataType_QAsymmU8;
80         case armnn::DataType::QSymmS8:
81             return armnnSerializer::DataType::DataType_QSymmS8;
82         case armnn::DataType::Boolean:
83             return armnnSerializer::DataType::DataType_Boolean;
84         default:
85             return armnnSerializer::DataType::DataType_Float16;
86     }
87 }
88 
GetFlatBufferDataLayout(armnn::DataLayout dataLayout)89 armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
90 {
91     switch (dataLayout)
92     {
93         case armnn::DataLayout::NHWC:
94             return armnnSerializer::DataLayout::DataLayout_NHWC;
95         case armnn::DataLayout::NCHW:
96         default:
97             return armnnSerializer::DataLayout::DataLayout_NCHW;
98     }
99 }
100 
GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)101 armnnSerializer::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;
115         case armnn::UnaryOperation::LogicalNot:
116             return armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot;
117         default:
118             throw armnn::InvalidArgumentException("Unary operation unknown");
119     }
120 }
121 
GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)122 armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
123 {
124     switch (poolingAlgorithm)
125     {
126         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:
131         default:
132             return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
133     }
134 }
135 
GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)136 armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
137 {
138     switch (outputShapeRounding)
139     {
140         case armnn::OutputShapeRounding::Ceiling:
141             return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
142         case armnn::OutputShapeRounding::Floor:
143         default:
144             return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
145     }
146 }
147 
GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)148 armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
149 {
150     switch (paddingMethod)
151     {
152         case armnn::PaddingMethod::IgnoreValue:
153             return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
154         case armnn::PaddingMethod::Exclude:
155         default:
156             return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
157     }
158 }
159 
GetFlatBufferNormalizationAlgorithmChannel(armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)160 armnnSerializer::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 
GetFlatBufferNormalizationAlgorithmMethod(armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)174 armnnSerializer::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 
GetFlatBufferResizeMethod(armnn::ResizeMethod method)188 armnnSerializer::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 
201 } // namespace armnnSerializer
202