blob: df1ef285de042bf74abe0cc7817b3504ebf48631 [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:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000042 case armnn::DataType::Boolean:
43 return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
Mike Kellya0766c32019-02-19 17:22:07 +000044 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000045 return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
Mike Kellya0766c32019-02-19 17:22:07 +000046 }
47}
48
Derek Lamberti0028d1b2019-02-20 13:57:42 +000049armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000050{
51 switch (dataType)
52 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000053 case armnn::DataType::Float32:
54 return armnnSerializer::DataType::DataType_Float32;
55 case armnn::DataType::Float16:
56 return armnnSerializer::DataType::DataType_Float16;
57 case armnn::DataType::Signed32:
58 return armnnSerializer::DataType::DataType_Signed32;
Derek Lambertif90c56d2020-01-10 17:14:08 +000059 case armnn::DataType::QSymmS16:
60 return armnnSerializer::DataType::DataType_QSymmS16;
61 case armnn::DataType::QAsymmU8:
62 return armnnSerializer::DataType::DataType_QAsymmU8;
Derek Lamberti0028d1b2019-02-20 13:57:42 +000063 case armnn::DataType::Boolean:
64 return armnnSerializer::DataType::DataType_Boolean;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000065 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000066 return armnnSerializer::DataType::DataType_Float16;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000067 }
68}
69
Derek Lamberti0028d1b2019-02-20 13:57:42 +000070armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000071{
72 switch (dataLayout)
73 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000074 case armnn::DataLayout::NHWC:
75 return armnnSerializer::DataLayout::DataLayout_NHWC;
76 case armnn::DataLayout::NCHW:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000077 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000078 return armnnSerializer::DataLayout::DataLayout_NCHW;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000079 }
80}
81
Derek Lamberti0028d1b2019-02-20 13:57:42 +000082armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000083{
84 switch (poolingAlgorithm)
85 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +000086 case armnn::PoolingAlgorithm::Average:
87 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
88 case armnn::PoolingAlgorithm::L2:
89 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
90 case armnn::PoolingAlgorithm::Max:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000091 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +000092 return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000093 }
94}
95
Derek Lamberti0028d1b2019-02-20 13:57:42 +000096armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +000097{
98 switch (outputShapeRounding)
99 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000100 case armnn::OutputShapeRounding::Ceiling:
101 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
102 case armnn::OutputShapeRounding::Floor:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000103 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000104 return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000105 }
106}
107
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000108armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000109{
110 switch (paddingMethod)
111 {
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000112 case armnn::PaddingMethod::IgnoreValue:
113 return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
114 case armnn::PaddingMethod::Exclude:
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000115 default:
Derek Lamberti0028d1b2019-02-20 13:57:42 +0000116 return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
Saoirse Stewart3166c3e2019-02-18 15:24:53 +0000117 }
118}
119
Nina Drozd57728782019-02-27 10:53:27 +0000120armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(
121 armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
122{
123 switch (normalizationAlgorithmChannel)
124 {
125 case armnn::NormalizationAlgorithmChannel::Across:
126 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
127 case armnn::NormalizationAlgorithmChannel::Within:
128 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
129 default:
130 return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
131 }
132}
133
134armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(
135 armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
136{
137 switch (normalizationAlgorithmMethod)
138 {
139 case armnn::NormalizationAlgorithmMethod::LocalBrightness:
140 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
141 case armnn::NormalizationAlgorithmMethod::LocalContrast:
142 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
143 default:
144 return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
145 }
146}
147
FinnWilliamsArm6fb339a2019-06-28 15:07:10 +0100148armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
149{
150 switch (method)
151 {
152 case armnn::ResizeMethod::NearestNeighbor:
153 return armnnSerializer::ResizeMethod_NearestNeighbor;
154 case armnn::ResizeMethod::Bilinear:
155 return armnnSerializer::ResizeMethod_Bilinear;
156 default:
157 return armnnSerializer::ResizeMethod_NearestNeighbor;
158 }
159}
160
Aron Virginas-Tare80ebd12019-10-17 16:11:54 +0100161} // namespace armnnSerializer