1 // 2 // Copyright © 2017-2021,2023 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "../ConversionUtils.hpp" 9 10 #include <HalInterfaces.h> 11 12 namespace V1_0 = ::android::hardware::neuralnetworks::V1_0; 13 14 namespace armnn_driver 15 { 16 namespace hal_1_0 17 { 18 19 class HalPolicy 20 { 21 public: 22 using Model = V1_0::Model; 23 using Operand = V1_0::Operand; 24 using OperandLifeTime = V1_0::OperandLifeTime; 25 using OperandType = V1_0::OperandType; 26 using Operation = V1_0::Operation; 27 using OperationType = V1_0::OperationType; 28 using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb; 29 using ErrorStatus = V1_0::ErrorStatus; 30 31 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data); 32 33 private: 34 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data); 35 36 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data); 37 38 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data); 39 40 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data); 41 42 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data); 43 44 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data); 45 46 static bool ConvertElementwiseBinary(const Operation& operation, 47 const Model& model, 48 ConversionData& data, 49 armnn::BinaryOperation binaryOperation); 50 51 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data); 52 53 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data); 54 55 static bool ConvertLocalResponseNormalization(const Operation& operation, 56 const Model& model, 57 ConversionData& data); 58 59 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data); 60 61 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data); 62 63 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data); 64 65 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data); 66 67 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data); 68 69 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data); 70 71 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data); 72 73 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data); 74 75 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data); 76 77 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data); 78 79 static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data); 80 81 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data); 82 83 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data); 84 85 static bool ValidateConv2dParameters(const Operation& operation); 86 87 static bool ValidateDepthwiseConv2dParameters(const Operation& operation); 88 }; 89 90 } // namespace hal_1_0 91 } // namespace armnn_driver 92