blob: cf1d36656270c4e7f337d8e5774f35683923c011 [file] [log] [blame]
Kevin May42477c12020-03-26 13:34:14 +00001//
2// Copyright © 2020 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"
Sadik Armagan1153d1e2020-04-01 15:09:39 +010010#include "../ConversionUtils_1_3.hpp"
Kevin May42477c12020-03-26 13:34:14 +000011
12#include <HalInterfaces.h>
13
14#include <armnn/Types.hpp>
15
16namespace V1_3 = ::android::hardware::neuralnetworks::V1_3;
17
18namespace armnn_driver
19{
20namespace hal_1_3
21{
22
23class HalPolicy
24{
25public:
26 using Model = V1_3::Model;
27 using Operand = V1_3::Operand;
28 using OperandLifeTime = V1_3::OperandLifeTime;
29 using OperandType = V1_3::OperandType;
30 using Operation = V1_3::Operation;
31 using OperationType = V1_3::OperationType;
32 using ExecutionCallback = V1_3::IExecutionCallback;
33 using getSupportedOperations_cb = V1_3::IDevice::getSupportedOperations_1_3_cb;
34 using ErrorStatus = V1_3::ErrorStatus;
35
36 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
37
38private:
39 static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
40
41 static bool ConvertArgMinMax(const Operation& operation,
42 const Model& model,
43 ConversionData& data,
44 armnn::ArgMinMaxFunction argMinMaxFunction);
45
46 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
47
48 static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
49
Sadik Armagan92b5fd12021-04-26 09:52:06 +010050 static bool ConvertCast(const Operation& operation, const Model& model, ConversionData& data);
51
Kevin May42477c12020-03-26 13:34:14 +000052 static bool ConvertComparison(const Operation& operation,
53 const Model& model,
54 ConversionData& data,
55 armnn::ComparisonOperation comparisonOperation);
56
57 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
58
59 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
60
61 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
62
63 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
64
65 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
66
67 static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data);
68
69 static bool ConvertElementwiseUnary(const Operation& operation,
70 const Model& model,
71 ConversionData& data,
72 armnn::UnaryOperation unaryOperation);
73
Sadik Armagan51ba2c62020-03-31 15:36:25 +010074 static bool ConvertElu(const Operation& operation, const Model& model, ConversionData& data);
75
Kevin May42477c12020-03-26 13:34:14 +000076 static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data);
77
Sadik Armagan2e329612020-06-24 10:57:23 +010078 static bool ConvertFill(const Operation& operation, const Model& model, ConversionData& data);
79
Kevin May42477c12020-03-26 13:34:14 +000080 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
81
82 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
83
Teresa Charlinf931af92020-04-10 16:46:53 +010084 static bool ConvertGather(const Operation& operation, const Model& model, ConversionData& data);
85
Kevin May42477c12020-03-26 13:34:14 +000086 static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data);
87
Sadik Armagan51ba2c62020-03-31 15:36:25 +010088 static bool ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data);
89
Kevin May42477c12020-03-26 13:34:14 +000090 static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data);
91
92 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
93
94 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
95
96 static bool ConvertLocalResponseNormalization(const Operation& operation,
97 const Model& model,
98 ConversionData& data);
99
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +0000100 static bool ConvertLogicalBinary(const Operation& operation,
101 const Model& model,
102 ConversionData& data,
103 armnn::LogicalBinaryOperation logicalOperation);
104
Kevin May42477c12020-03-26 13:34:14 +0000105 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
106
107 static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data);
108
109 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
110
111 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
112
113 static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
114
Sadik Armagan6a284532021-03-12 09:12:29 +0000115 static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
Kevin May42477c12020-03-26 13:34:14 +0000116
117 static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);
118
119 static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
120
121 static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
122
123 static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data);
124
125 static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data);
126
127 static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data);
128
129 static bool ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data);
130
Sadik Armagan813f2302020-05-19 14:10:30 +0100131 static bool ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data);
132
Finn Williamsfc884b42020-06-11 17:35:44 +0100133 static bool ConvertRank(const Operation& operation, const Model& model, ConversionData& data);
134
Sadik Armagan6a284532021-03-12 09:12:29 +0000135 static bool ConvertReduce(const Operation& operation,
136 const Model& model,
137 ConversionData& data,
138 ReduceOperation reduceOperation);
139
Kevin May42477c12020-03-26 13:34:14 +0000140 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
141
142 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
143
144 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
145
146 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
147
148 static bool ConvertResize(const Operation& operation,
149 const Model& model,
150 ConversionData& data,
151 armnn::ResizeMethod resizeMethod);
152
153 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
154
155 static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
156
157 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
158
159 static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data);
160
161 static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
162
163 static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
164
165 static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data);
166
167 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
168
169 static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
170
171 static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
172};
173
174} // namespace hal_1_3
175} // namespace armnn_driver