1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #pragma once 7 8 #include "../ConversionUtils.hpp" 9 #include "../ConversionUtils_1_2.hpp" 10 11 #include <HalInterfaces.h> 12 13 #include <armnn/Types.hpp> 14 15 namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 16 17 namespace armnn_driver 18 { 19 namespace hal_1_2 20 { 21 22 class HalPolicy 23 { 24 public: 25 using Model = V1_2::Model; 26 using Operand = V1_2::Operand; 27 using OperandLifeTime = V1_0::OperandLifeTime; 28 using OperandType = V1_2::OperandType; 29 using Operation = V1_2::Operation; 30 using OperationType = V1_2::OperationType; 31 using ExecutionCallback = V1_2::IExecutionCallback; 32 using getSupportedOperations_cb = V1_2::IDevice::getSupportedOperations_1_2_cb; 33 using ErrorStatus = V1_0::ErrorStatus; 34 35 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data); 36 37 private: 38 static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data); 39 40 static bool ConvertArgMinMax(const Operation& operation, 41 const Model& model, 42 ConversionData& data, 43 armnn::ArgMinMaxFunction argMinMaxFunction); 44 45 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data); 46 47 static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data); 48 49 static bool ConvertComparison(const Operation& operation, 50 const Model& model, 51 ConversionData& data, 52 armnn::ComparisonOperation comparisonOperation); 53 54 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data); 55 56 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data); 57 58 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data); 59 60 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data); 61 62 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data); 63 64 static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data); 65 66 static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data); 67 68 static bool ConvertElementwiseUnary(const Operation& operation, 69 const Model& model, 70 ConversionData& data, 71 armnn::UnaryOperation unaryOperation); 72 73 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data); 74 75 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data); 76 77 static bool ConvertGather(const Operation& operation, const Model& model, ConversionData& data); 78 79 static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data); 80 81 static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data); 82 83 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data); 84 85 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data); 86 87 static bool ConvertLocalResponseNormalization(const Operation& operation, 88 const Model& model, 89 ConversionData& data); 90 91 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data); 92 93 static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data); 94 95 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data); 96 97 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data); 98 99 static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data); 100 101 static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data); 102 103 static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data); 104 105 static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data); 106 107 static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data); 108 109 static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data); 110 111 static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data); 112 113 static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data); 114 115 static bool ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data); 116 117 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data); 118 119 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data); 120 121 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data); 122 123 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data); 124 125 static bool ConvertResize(const Operation& operation, 126 const Model& model, 127 ConversionData& data, 128 armnn::ResizeMethod resizeMethod); 129 130 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data); 131 132 static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data); 133 134 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data); 135 136 static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data); 137 138 static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data); 139 140 static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data); 141 142 static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data); 143 144 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data); 145 146 static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data); 147 148 static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data); 149 }; 150 151 } // namespace hal_1_2 152 } // namespace armnn_driver 153