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)11armnnSerializer::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)31armnnSerializer::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)45armnnSerializer::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)64armnnSerializer::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)89armnnSerializer::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)101armnnSerializer::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)122armnnSerializer::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)136armnnSerializer::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)148armnnSerializer::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)160armnnSerializer::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)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 GetFlatBufferResizeMethod(armnn::ResizeMethod method)188armnnSerializer::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