blob: de48742355d979e858a1690329492b7e5a84bf0b [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);
Teresa Charlin7f5b51e2021-09-01 14:19:38 +010038 case V1_3::OperationType::CHANNEL_SHUFFLE:
39 return ConvertChannelShuffle(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000040 case V1_3::OperationType::CONCATENATION:
41 return ConvertConcatenation(operation, model, data);
42 case V1_3::OperationType::CONV_2D:
43 return ConvertConv2d(operation, model, data);
44 case V1_3::OperationType::DEPTH_TO_SPACE:
45 return ConvertDepthToSpace(operation, model, data);
46 case V1_3::OperationType::DEPTHWISE_CONV_2D:
47 return ConvertDepthwiseConv2d(operation, model, data);
48 case V1_3::OperationType::DEQUANTIZE:
49 return ConvertDequantize(operation, model, data);
50 case V1_3::OperationType::DIV:
51 return ConvertDiv(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010052 case V1_3::OperationType::ELU:
53 return ConvertElu(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000054 case V1_3::OperationType::EQUAL:
55 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
Teresa Charlincb31b3b2020-09-30 18:28:18 +010056 case V1_3::OperationType::EXP:
57 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
Kevin May42477c12020-03-26 13:34:14 +000058 case V1_3::OperationType::EXPAND_DIMS:
59 return ConvertExpandDims(operation, model, data);
Sadik Armagan2e329612020-06-24 10:57:23 +010060 case V1_3::OperationType::FILL:
61 return ConvertFill(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000062 case V1_3::OperationType::FLOOR:
63 return ConvertFloor(operation, model, data);
64 case V1_3::OperationType::FULLY_CONNECTED:
65 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010066 case V1_3::OperationType::GATHER:
67 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000068 case V1_3::OperationType::GREATER:
69 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
70 case V1_3::OperationType::GREATER_EQUAL:
71 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
72 case V1_3::OperationType::GROUPED_CONV_2D:
73 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010074 case V1_3::OperationType::HARD_SWISH:
75 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000076 case V1_3::OperationType::INSTANCE_NORMALIZATION:
77 return ConvertInstanceNormalization(operation, model, data);
78 case V1_3::OperationType::L2_NORMALIZATION:
79 return ConvertL2Normalization(operation, model, data);
80 case V1_3::OperationType::L2_POOL_2D:
81 return ConvertL2Pool2d(operation, model, data);
82 case V1_3::OperationType::LESS:
83 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
84 case V1_3::OperationType::LESS_EQUAL:
85 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
86 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
87 return ConvertLocalResponseNormalization(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +010088 case V1_3::OperationType::LOG:
89 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Log);
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +000090 case V1_3::OperationType::LOGICAL_AND:
91 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalAnd);
92 case V1_3::OperationType::LOGICAL_NOT:
93 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::LogicalNot);
94 case V1_3::OperationType::LOGICAL_OR:
95 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalOr);
Kevin May42477c12020-03-26 13:34:14 +000096 case V1_3::OperationType::LOGISTIC:
97 return ConvertLogistic(operation, model, data);
98 case V1_3::OperationType::LOG_SOFTMAX:
99 return ConvertLogSoftmax(operation, model, data);
100 case V1_3::OperationType::LSTM:
101 return ConvertLstm(operation, model, data);
102 case V1_3::OperationType::MAX_POOL_2D:
103 return ConvertMaxPool2d(operation, model, data);
104 case V1_3::OperationType::MAXIMUM:
105 return ConvertMaximum(operation, model, data);
106 case V1_3::OperationType::MEAN:
Sadik Armagan6a284532021-03-12 09:12:29 +0000107 return ConvertMean(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000108 case V1_3::OperationType::MINIMUM:
109 return ConvertMinimum(operation, model, data);
110 case V1_3::OperationType::MUL:
111 return ConvertMul(operation, model, data);
112 case V1_3::OperationType::NEG:
113 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
114 case V1_3::OperationType::NOT_EQUAL:
115 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
116 case V1_3::OperationType::PAD:
117 return ConvertPad(operation, model, data);
118 case V1_3::OperationType::PAD_V2:
119 return ConvertPadV2(operation, model, data);
120 case V1_3::OperationType::PRELU:
121 return ConvertPrelu(operation, model, data);
122 case V1_3::OperationType::QUANTIZE:
123 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100124 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000125 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100126 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
127 return ConvertQuantized16BitLstm(operation, model, data);
Finn Williamsfc884b42020-06-11 17:35:44 +0100128 case V1_3::OperationType::RANK:
129 return ConvertRank(operation, model, data);
Teresa Charlin89cbb3a2021-02-11 21:00:47 +0000130 case V1_3::OperationType::REDUCE_MAX:
131 return ConvertReduce(operation, model, data, ReduceOperation::Max);
132 case V1_3::OperationType::REDUCE_MIN:
133 return ConvertReduce(operation, model, data, ReduceOperation::Min);
Teresa Charlin69e38612021-08-05 12:39:37 +0100134 case V1_3::OperationType::REDUCE_PROD:
135 return ConvertReduce(operation, model, data, ReduceOperation::Prod);
Teresa Charlin89cbb3a2021-02-11 21:00:47 +0000136 case V1_3::OperationType::REDUCE_SUM:
137 return ConvertReduce(operation, model, data, ReduceOperation::Sum);
Kevin May42477c12020-03-26 13:34:14 +0000138 case V1_3::OperationType::RELU:
139 return ConvertReLu(operation, model, data);
140 case V1_3::OperationType::RELU1:
141 return ConvertReLu1(operation, model, data);
142 case V1_3::OperationType::RELU6:
143 return ConvertReLu6(operation, model, data);
144 case V1_3::OperationType::RESHAPE:
145 return ConvertReshape(operation, model, data);
146 case V1_3::OperationType::RESIZE_BILINEAR:
147 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
148 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
149 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
150 case V1_3::OperationType::RSQRT:
151 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
Teresa Charlin2d710022021-05-31 19:35:58 +0100152 case V1_3::OperationType::SIN:
153 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Sin);
Kevin May42477c12020-03-26 13:34:14 +0000154 case V1_3::OperationType::SOFTMAX:
155 return ConvertSoftmax(operation, model, data);
156 case V1_3::OperationType::SPACE_TO_BATCH_ND :
157 return ConvertSpaceToBatchNd(operation, model, data);
158 case V1_3::OperationType::SPACE_TO_DEPTH:
159 return ConvertSpaceToDepth(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +0100160 case V1_3::OperationType::SQRT:
161 return ConvertSqrt(operation, model, data);
162 case V1_3::OperationType::SQUEEZE:
163 return ConvertSqueeze(operation, model, data);
164 case V1_3::OperationType::STRIDED_SLICE:
165 return ConvertStridedSlice(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000166 case V1_3::OperationType::SUB:
167 return ConvertSub(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +0100168 case V1_3::OperationType::TRANSPOSE:
169 return ConvertTranspose(operation, model, data);
170 case V1_3::OperationType::TRANSPOSE_CONV_2D:
171 return ConvertTransposeConv2d(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000172 case V1_3::OperationType::TANH:
173 return ConvertTanH(operation, model, data);
174 default:
175 return Fail("%s: Operation type %s not supported in ArmnnDriver",
176 __func__, toString(operation.type).c_str());
177 }
178}
179
180bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
181{
182 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
183 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
184}
185
186bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
187 const V1_3::Model& model,
188 ConversionData& data,
189 armnn::ArgMinMaxFunction argMinMaxFunction)
190{
191 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
192 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
193}
194
195bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
196{
197 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
198 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
199}
200
201bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
202{
203 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
204 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
205}
206
Sadik Armagan92b5fd12021-04-26 09:52:06 +0100207bool HalPolicy::ConvertCast(const Operation& operation, const Model& model, ConversionData& data)
208{
209 ALOGV("hal_1_3::HalPolicy::ConvertCast()");
210 return ::ConvertCast<hal_1_3::HalPolicy>(operation, model, data);
211}
212
Teresa Charlin7f5b51e2021-09-01 14:19:38 +0100213bool HalPolicy::ConvertChannelShuffle(const Operation& operation, const Model& model, ConversionData& data)
214{
215 ALOGV("hal_1_3::HalPolicy::ConvertChannelShuffle()");
216 return ::ConvertChannelShuffle<hal_1_3::HalPolicy>(operation, model, data);
217}
218
Kevin May42477c12020-03-26 13:34:14 +0000219bool HalPolicy::ConvertComparison(const Operation& operation,
220 const Model& model,
221 ConversionData& data,
222 ComparisonOperation comparisonOperation)
223{
224 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
225 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
226}
227
Kevin May42477c12020-03-26 13:34:14 +0000228bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
229{
230 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
231 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
232}
233
234bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
235{
236 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
237 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
238}
239
240bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
241{
242 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
243 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
244}
245
246bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
247{
248 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
249 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
250}
251
252bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
253{
254 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
255 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
256}
257
258bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
259{
260 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
261 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
262}
263
264bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
265 const Model& model,
266 ConversionData& data,
267 UnaryOperation unaryOperation)
268{
269 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
270 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
271}
272
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100273bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
274{
275 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100276 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100277}
278
Kevin May42477c12020-03-26 13:34:14 +0000279bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
280{
281 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
282 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
283}
284
Sadik Armagan2e329612020-06-24 10:57:23 +0100285bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
286{
287 ALOGV("hal_1_3::HalPolicy::ConvertFill()");
288 return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
289}
290
Kevin May42477c12020-03-26 13:34:14 +0000291bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
292{
293 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
294 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
295}
296
297bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
298{
299 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
300 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
301}
302
Teresa Charlinf931af92020-04-10 16:46:53 +0100303bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
304{
305 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
306 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
307}
308
Kevin May42477c12020-03-26 13:34:14 +0000309bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
310{
311 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
312 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
313}
314
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100315bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
316{
317 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
318 ActivationDescriptor desc;
319 desc.m_Function = ActivationFunction::HardSwish;
320
321 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
322}
323
Kevin May42477c12020-03-26 13:34:14 +0000324bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
325{
326 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
327 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
328}
329
330bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
331{
332 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
333 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
334}
335
336bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
337{
338 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
339 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
340}
341
342bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
343 const Model& model,
344 ConversionData& data)
345{
346 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
347 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
348}
349
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +0000350bool HalPolicy::ConvertLogicalBinary(const Operation& operation,
351 const Model& model,
352 ConversionData& data,
353 armnn::LogicalBinaryOperation logicalOperation)
354{
355 ALOGV("hal_1_3::HalPolicy::ConvertLogicalBinary()");
356 return ::ConvertLogicalBinary<hal_1_3::HalPolicy>(operation, model, data, logicalOperation);
357}
358
Kevin May42477c12020-03-26 13:34:14 +0000359bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
360{
361 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
362 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
363}
364
365bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
366{
367 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
368 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
369}
370
371bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
372{
373 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
374 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
375}
376
377bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
378{
379 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
380 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
381}
382
383bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
384{
Teresa Charlin5821aa22020-11-17 19:23:47 +0000385 ALOGV("hal_1_3::HalPolicy::ConvertMaximum()");
Kevin May42477c12020-03-26 13:34:14 +0000386 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
387}
388
Sadik Armagan6a284532021-03-12 09:12:29 +0000389bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
Kevin May42477c12020-03-26 13:34:14 +0000390{
Sadik Armagan6a284532021-03-12 09:12:29 +0000391 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
392 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000393}
394
395bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
396{
397 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
398 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
399}
400
401bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
402{
403 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
404 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
405}
406
407bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
408{
409 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
410 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
411}
412
413bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
414{
415 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
416 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
417}
418
419bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
420{
421 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
422 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
423}
424
425bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
426{
427 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
428 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
429}
430
431bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
432{
433 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
434 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
435}
436
Sadik Armagan813f2302020-05-19 14:10:30 +0100437bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
438{
439 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
440 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
441}
442
Finn Williamsfc884b42020-06-11 17:35:44 +0100443bool HalPolicy::ConvertRank(const Operation& operation, const Model& model, ConversionData& data)
444{
445 ALOGV("hal_1_3::HalPolicy::ConvertRank()");
446 return ::ConvertRank<hal_1_3::HalPolicy>(operation, model, data);
447}
448
Sadik Armagan6a284532021-03-12 09:12:29 +0000449bool HalPolicy::ConvertReduce(const Operation& operation,
450 const Model& model,
451 ConversionData& data,
452 ReduceOperation reduceOperation)
453{
454 ALOGV("hal_1_3::HalPolicy::ConvertReduce()");
455 return ::ConvertReduce<hal_1_3::HalPolicy>(operation, model, data, reduceOperation);
456}
457
Kevin May42477c12020-03-26 13:34:14 +0000458bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
459{
460 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
461 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
462}
463
464bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
465{
466 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
467 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
468}
469
470bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
471{
472 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
473 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
474}
475
476bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
477{
478 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
479 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
480}
481
482bool HalPolicy::ConvertResize(const Operation& operation,
483 const Model& model,
484 ConversionData& data,
485 ResizeMethod resizeMethod)
486{
487 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
488 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
489}
490
491bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
492{
493 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
494 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
495}
496
497bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
498{
499 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
500 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
501}
502
503bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
504{
505 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
506 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
507}
508
509bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
510{
511 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
512 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
513}
514
515bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
516{
517 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
518 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
519}
520
521bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
522{
523 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
524 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
525}
526
527bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
528{
529 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
530 ActivationDescriptor desc;
531 desc.m_Function = ActivationFunction::Sqrt;
532
533 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
534}
535
536bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
537{
538 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
539 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
540}
541
542bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
543{
544 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
545 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
546}
547
548bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
549{
550 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
551 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
552}
553
554} // namespace hal_1_3
555} // namespace armnn_driver