blob: bf80c81e6ff1858ad9c16c5187ecf671cbdea5b6 [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#include "HalPolicy.hpp"
7
8namespace armnn_driver
9{
10namespace hal_1_3
11{
12
13using namespace armnn;
14
15namespace
16{
17
18} // anonymouse namespace
19
20bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, ConversionData& data)
21{
22 switch (operation.type)
23 {
24 case V1_3::OperationType::ABS:
25 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Abs);
26 case V1_3::OperationType::ADD:
27 return ConvertAdd(operation, model, data);
28 case V1_3::OperationType::ARGMAX:
29 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Max);
30 case V1_3::OperationType::ARGMIN:
31 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Min);
32 case V1_3::OperationType::AVERAGE_POOL_2D:
33 return ConvertAveragePool2d(operation, model, data);
34 case V1_3::OperationType::BATCH_TO_SPACE_ND:
35 return ConvertBatchToSpaceNd(operation, model, data);
Sadik Armagan92b5fd12021-04-26 09:52:06 +010036 case V1_3::OperationType::CAST:
37 return ConvertCast(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000038 case V1_3::OperationType::CONCATENATION:
39 return ConvertConcatenation(operation, model, data);
40 case V1_3::OperationType::CONV_2D:
41 return ConvertConv2d(operation, model, data);
42 case V1_3::OperationType::DEPTH_TO_SPACE:
43 return ConvertDepthToSpace(operation, model, data);
44 case V1_3::OperationType::DEPTHWISE_CONV_2D:
45 return ConvertDepthwiseConv2d(operation, model, data);
46 case V1_3::OperationType::DEQUANTIZE:
47 return ConvertDequantize(operation, model, data);
48 case V1_3::OperationType::DIV:
49 return ConvertDiv(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010050 case V1_3::OperationType::ELU:
51 return ConvertElu(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000052 case V1_3::OperationType::EQUAL:
53 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
Teresa Charlincb31b3b2020-09-30 18:28:18 +010054 case V1_3::OperationType::EXP:
55 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
Kevin May42477c12020-03-26 13:34:14 +000056 case V1_3::OperationType::EXPAND_DIMS:
57 return ConvertExpandDims(operation, model, data);
Sadik Armagan2e329612020-06-24 10:57:23 +010058 case V1_3::OperationType::FILL:
59 return ConvertFill(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000060 case V1_3::OperationType::FLOOR:
61 return ConvertFloor(operation, model, data);
62 case V1_3::OperationType::FULLY_CONNECTED:
63 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010064 case V1_3::OperationType::GATHER:
65 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000066 case V1_3::OperationType::GREATER:
67 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
68 case V1_3::OperationType::GREATER_EQUAL:
69 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
70 case V1_3::OperationType::GROUPED_CONV_2D:
71 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010072 case V1_3::OperationType::HARD_SWISH:
73 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000074 case V1_3::OperationType::INSTANCE_NORMALIZATION:
75 return ConvertInstanceNormalization(operation, model, data);
76 case V1_3::OperationType::L2_NORMALIZATION:
77 return ConvertL2Normalization(operation, model, data);
78 case V1_3::OperationType::L2_POOL_2D:
79 return ConvertL2Pool2d(operation, model, data);
80 case V1_3::OperationType::LESS:
81 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
82 case V1_3::OperationType::LESS_EQUAL:
83 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
84 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
85 return ConvertLocalResponseNormalization(operation, model, data);
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +000086 case V1_3::OperationType::LOGICAL_AND:
87 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalAnd);
88 case V1_3::OperationType::LOGICAL_NOT:
89 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::LogicalNot);
90 case V1_3::OperationType::LOGICAL_OR:
91 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalOr);
Kevin May42477c12020-03-26 13:34:14 +000092 case V1_3::OperationType::LOGISTIC:
93 return ConvertLogistic(operation, model, data);
94 case V1_3::OperationType::LOG_SOFTMAX:
95 return ConvertLogSoftmax(operation, model, data);
96 case V1_3::OperationType::LSTM:
97 return ConvertLstm(operation, model, data);
98 case V1_3::OperationType::MAX_POOL_2D:
99 return ConvertMaxPool2d(operation, model, data);
100 case V1_3::OperationType::MAXIMUM:
101 return ConvertMaximum(operation, model, data);
102 case V1_3::OperationType::MEAN:
Sadik Armagan6a284532021-03-12 09:12:29 +0000103 return ConvertMean(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000104 case V1_3::OperationType::MINIMUM:
105 return ConvertMinimum(operation, model, data);
106 case V1_3::OperationType::MUL:
107 return ConvertMul(operation, model, data);
108 case V1_3::OperationType::NEG:
109 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
110 case V1_3::OperationType::NOT_EQUAL:
111 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
112 case V1_3::OperationType::PAD:
113 return ConvertPad(operation, model, data);
114 case V1_3::OperationType::PAD_V2:
115 return ConvertPadV2(operation, model, data);
116 case V1_3::OperationType::PRELU:
117 return ConvertPrelu(operation, model, data);
118 case V1_3::OperationType::QUANTIZE:
119 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100120 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000121 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100122 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
123 return ConvertQuantized16BitLstm(operation, model, data);
Finn Williamsfc884b42020-06-11 17:35:44 +0100124 case V1_3::OperationType::RANK:
125 return ConvertRank(operation, model, data);
Teresa Charlin89cbb3a2021-02-11 21:00:47 +0000126 case V1_3::OperationType::REDUCE_MAX:
127 return ConvertReduce(operation, model, data, ReduceOperation::Max);
128 case V1_3::OperationType::REDUCE_MIN:
129 return ConvertReduce(operation, model, data, ReduceOperation::Min);
130 case V1_3::OperationType::REDUCE_SUM:
131 return ConvertReduce(operation, model, data, ReduceOperation::Sum);
Kevin May42477c12020-03-26 13:34:14 +0000132 case V1_3::OperationType::RELU:
133 return ConvertReLu(operation, model, data);
134 case V1_3::OperationType::RELU1:
135 return ConvertReLu1(operation, model, data);
136 case V1_3::OperationType::RELU6:
137 return ConvertReLu6(operation, model, data);
138 case V1_3::OperationType::RESHAPE:
139 return ConvertReshape(operation, model, data);
140 case V1_3::OperationType::RESIZE_BILINEAR:
141 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
142 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
143 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
144 case V1_3::OperationType::RSQRT:
145 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
146 case V1_3::OperationType::SQRT:
147 return ConvertSqrt(operation, model, data);
148 case V1_3::OperationType::SQUEEZE:
149 return ConvertSqueeze(operation, model, data);
150 case V1_3::OperationType::STRIDED_SLICE:
151 return ConvertStridedSlice(operation, model, data);
152 case V1_3::OperationType::TRANSPOSE:
153 return ConvertTranspose(operation, model, data);
154 case V1_3::OperationType::TRANSPOSE_CONV_2D:
155 return ConvertTransposeConv2d(operation, model, data);
156 case V1_3::OperationType::SOFTMAX:
157 return ConvertSoftmax(operation, model, data);
158 case V1_3::OperationType::SPACE_TO_BATCH_ND :
159 return ConvertSpaceToBatchNd(operation, model, data);
160 case V1_3::OperationType::SPACE_TO_DEPTH:
161 return ConvertSpaceToDepth(operation, model, data);
162 case V1_3::OperationType::SUB:
163 return ConvertSub(operation, model, data);
164 case V1_3::OperationType::TANH:
165 return ConvertTanH(operation, model, data);
166 default:
167 return Fail("%s: Operation type %s not supported in ArmnnDriver",
168 __func__, toString(operation.type).c_str());
169 }
170}
171
172bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
173{
174 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
175 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
176}
177
178bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
179 const V1_3::Model& model,
180 ConversionData& data,
181 armnn::ArgMinMaxFunction argMinMaxFunction)
182{
183 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
184 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
185}
186
187bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
188{
189 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
190 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
191}
192
193bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
194{
195 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
196 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
197}
198
Sadik Armagan92b5fd12021-04-26 09:52:06 +0100199bool HalPolicy::ConvertCast(const Operation& operation, const Model& model, ConversionData& data)
200{
201 ALOGV("hal_1_3::HalPolicy::ConvertCast()");
202 return ::ConvertCast<hal_1_3::HalPolicy>(operation, model, data);
203}
204
Kevin May42477c12020-03-26 13:34:14 +0000205bool HalPolicy::ConvertComparison(const Operation& operation,
206 const Model& model,
207 ConversionData& data,
208 ComparisonOperation comparisonOperation)
209{
210 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
211 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
212}
213
214
215bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
216{
217 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
218 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
219}
220
221bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
222{
223 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
224 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
225}
226
227bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
228{
229 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
230 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
231}
232
233bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
234{
235 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
236 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
237}
238
239bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
240{
241 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
242 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
243}
244
245bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
246{
247 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
248 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
249}
250
251bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
252 const Model& model,
253 ConversionData& data,
254 UnaryOperation unaryOperation)
255{
256 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
257 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
258}
259
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100260bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
261{
262 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100263 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100264}
265
Kevin May42477c12020-03-26 13:34:14 +0000266bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
267{
268 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
269 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
270}
271
Sadik Armagan2e329612020-06-24 10:57:23 +0100272bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
273{
274 ALOGV("hal_1_3::HalPolicy::ConvertFill()");
275 return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
276}
277
Kevin May42477c12020-03-26 13:34:14 +0000278bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
279{
280 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
281 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
282}
283
284bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
285{
286 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
287 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
288}
289
Teresa Charlinf931af92020-04-10 16:46:53 +0100290bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
291{
292 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
293 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
294}
295
Kevin May42477c12020-03-26 13:34:14 +0000296bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
297{
298 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
299 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
300}
301
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100302bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
303{
304 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
305 ActivationDescriptor desc;
306 desc.m_Function = ActivationFunction::HardSwish;
307
308 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
309}
310
Kevin May42477c12020-03-26 13:34:14 +0000311bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
312{
313 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
314 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
315}
316
317bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
318{
319 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
320 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
321}
322
323bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
324{
325 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
326 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
327}
328
329bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
330 const Model& model,
331 ConversionData& data)
332{
333 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
334 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
335}
336
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +0000337bool HalPolicy::ConvertLogicalBinary(const Operation& operation,
338 const Model& model,
339 ConversionData& data,
340 armnn::LogicalBinaryOperation logicalOperation)
341{
342 ALOGV("hal_1_3::HalPolicy::ConvertLogicalBinary()");
343 return ::ConvertLogicalBinary<hal_1_3::HalPolicy>(operation, model, data, logicalOperation);
344}
345
Kevin May42477c12020-03-26 13:34:14 +0000346bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
347{
348 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
349 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
350}
351
352bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
353{
354 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
355 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
356}
357
358bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
359{
360 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
361 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
362}
363
364bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
365{
366 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
367 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
368}
369
370bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
371{
Teresa Charlin5821aa22020-11-17 19:23:47 +0000372 ALOGV("hal_1_3::HalPolicy::ConvertMaximum()");
Kevin May42477c12020-03-26 13:34:14 +0000373 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
374}
375
Sadik Armagan6a284532021-03-12 09:12:29 +0000376bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
Kevin May42477c12020-03-26 13:34:14 +0000377{
Sadik Armagan6a284532021-03-12 09:12:29 +0000378 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
379 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000380}
381
382bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
383{
384 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
385 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
386}
387
388bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
389{
390 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
391 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
392}
393
394bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
395{
396 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
397 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
398}
399
400bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
401{
402 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
403 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
404}
405
406bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
407{
408 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
409 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
410}
411
412bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
413{
414 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
415 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
416}
417
418bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
419{
420 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
421 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
422}
423
Sadik Armagan813f2302020-05-19 14:10:30 +0100424bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
425{
426 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
427 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
428}
429
Finn Williamsfc884b42020-06-11 17:35:44 +0100430bool HalPolicy::ConvertRank(const Operation& operation, const Model& model, ConversionData& data)
431{
432 ALOGV("hal_1_3::HalPolicy::ConvertRank()");
433 return ::ConvertRank<hal_1_3::HalPolicy>(operation, model, data);
434}
435
Sadik Armagan6a284532021-03-12 09:12:29 +0000436bool HalPolicy::ConvertReduce(const Operation& operation,
437 const Model& model,
438 ConversionData& data,
439 ReduceOperation reduceOperation)
440{
441 ALOGV("hal_1_3::HalPolicy::ConvertReduce()");
442 return ::ConvertReduce<hal_1_3::HalPolicy>(operation, model, data, reduceOperation);
443}
444
Kevin May42477c12020-03-26 13:34:14 +0000445bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
446{
447 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
448 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
449}
450
451bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
452{
453 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
454 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
455}
456
457bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
458{
459 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
460 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
461}
462
463bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
464{
465 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
466 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
467}
468
469bool HalPolicy::ConvertResize(const Operation& operation,
470 const Model& model,
471 ConversionData& data,
472 ResizeMethod resizeMethod)
473{
474 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
475 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
476}
477
478bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
479{
480 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
481 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
482}
483
484bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
485{
486 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
487 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
488}
489
490bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
491{
492 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
493 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
494}
495
496bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
497{
498 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
499 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
500}
501
502bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
503{
504 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
505 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
506}
507
508bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
509{
510 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
511 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
512}
513
514bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
515{
516 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
517 ActivationDescriptor desc;
518 desc.m_Function = ActivationFunction::Sqrt;
519
520 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
521}
522
523bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
524{
525 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
526 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
527}
528
529bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
530{
531 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
532 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
533}
534
535bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
536{
537 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
538 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
539}
540
541} // namespace hal_1_3
542} // namespace armnn_driver