blob: d58ac6c6b0117cea6ed2541545ccd6e45589745a [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);
36 case V1_3::OperationType::CONCATENATION:
37 return ConvertConcatenation(operation, model, data);
38 case V1_3::OperationType::CONV_2D:
39 return ConvertConv2d(operation, model, data);
40 case V1_3::OperationType::DEPTH_TO_SPACE:
41 return ConvertDepthToSpace(operation, model, data);
42 case V1_3::OperationType::DEPTHWISE_CONV_2D:
43 return ConvertDepthwiseConv2d(operation, model, data);
44 case V1_3::OperationType::DEQUANTIZE:
45 return ConvertDequantize(operation, model, data);
46 case V1_3::OperationType::DIV:
47 return ConvertDiv(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010048 case V1_3::OperationType::ELU:
49 return ConvertElu(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000050 case V1_3::OperationType::EQUAL:
51 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
Teresa Charlincb31b3b2020-09-30 18:28:18 +010052 case V1_3::OperationType::EXP:
53 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
Kevin May42477c12020-03-26 13:34:14 +000054 case V1_3::OperationType::EXPAND_DIMS:
55 return ConvertExpandDims(operation, model, data);
Sadik Armagan2e329612020-06-24 10:57:23 +010056 case V1_3::OperationType::FILL:
57 return ConvertFill(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000058 case V1_3::OperationType::FLOOR:
59 return ConvertFloor(operation, model, data);
60 case V1_3::OperationType::FULLY_CONNECTED:
61 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010062 case V1_3::OperationType::GATHER:
63 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000064 case V1_3::OperationType::GREATER:
65 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
66 case V1_3::OperationType::GREATER_EQUAL:
67 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
68 case V1_3::OperationType::GROUPED_CONV_2D:
69 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010070 case V1_3::OperationType::HARD_SWISH:
71 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000072 case V1_3::OperationType::INSTANCE_NORMALIZATION:
73 return ConvertInstanceNormalization(operation, model, data);
74 case V1_3::OperationType::L2_NORMALIZATION:
75 return ConvertL2Normalization(operation, model, data);
76 case V1_3::OperationType::L2_POOL_2D:
77 return ConvertL2Pool2d(operation, model, data);
78 case V1_3::OperationType::LESS:
79 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
80 case V1_3::OperationType::LESS_EQUAL:
81 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
82 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
83 return ConvertLocalResponseNormalization(operation, model, data);
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +000084 case V1_3::OperationType::LOGICAL_AND:
85 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalAnd);
86 case V1_3::OperationType::LOGICAL_NOT:
87 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::LogicalNot);
88 case V1_3::OperationType::LOGICAL_OR:
89 return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalOr);
Kevin May42477c12020-03-26 13:34:14 +000090 case V1_3::OperationType::LOGISTIC:
91 return ConvertLogistic(operation, model, data);
92 case V1_3::OperationType::LOG_SOFTMAX:
93 return ConvertLogSoftmax(operation, model, data);
94 case V1_3::OperationType::LSTM:
95 return ConvertLstm(operation, model, data);
96 case V1_3::OperationType::MAX_POOL_2D:
97 return ConvertMaxPool2d(operation, model, data);
98 case V1_3::OperationType::MAXIMUM:
99 return ConvertMaximum(operation, model, data);
100 case V1_3::OperationType::MEAN:
Sadik Armagan6a284532021-03-12 09:12:29 +0000101 return ConvertMean(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000102 case V1_3::OperationType::MINIMUM:
103 return ConvertMinimum(operation, model, data);
104 case V1_3::OperationType::MUL:
105 return ConvertMul(operation, model, data);
106 case V1_3::OperationType::NEG:
107 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
108 case V1_3::OperationType::NOT_EQUAL:
109 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
110 case V1_3::OperationType::PAD:
111 return ConvertPad(operation, model, data);
112 case V1_3::OperationType::PAD_V2:
113 return ConvertPadV2(operation, model, data);
114 case V1_3::OperationType::PRELU:
115 return ConvertPrelu(operation, model, data);
116 case V1_3::OperationType::QUANTIZE:
117 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100118 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000119 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100120 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
121 return ConvertQuantized16BitLstm(operation, model, data);
Finn Williamsfc884b42020-06-11 17:35:44 +0100122 case V1_3::OperationType::RANK:
123 return ConvertRank(operation, model, data);
Teresa Charlin89cbb3a2021-02-11 21:00:47 +0000124 case V1_3::OperationType::REDUCE_MAX:
125 return ConvertReduce(operation, model, data, ReduceOperation::Max);
126 case V1_3::OperationType::REDUCE_MIN:
127 return ConvertReduce(operation, model, data, ReduceOperation::Min);
128 case V1_3::OperationType::REDUCE_SUM:
129 return ConvertReduce(operation, model, data, ReduceOperation::Sum);
Kevin May42477c12020-03-26 13:34:14 +0000130 case V1_3::OperationType::RELU:
131 return ConvertReLu(operation, model, data);
132 case V1_3::OperationType::RELU1:
133 return ConvertReLu1(operation, model, data);
134 case V1_3::OperationType::RELU6:
135 return ConvertReLu6(operation, model, data);
136 case V1_3::OperationType::RESHAPE:
137 return ConvertReshape(operation, model, data);
138 case V1_3::OperationType::RESIZE_BILINEAR:
139 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
140 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
141 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
142 case V1_3::OperationType::RSQRT:
143 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
144 case V1_3::OperationType::SQRT:
145 return ConvertSqrt(operation, model, data);
146 case V1_3::OperationType::SQUEEZE:
147 return ConvertSqueeze(operation, model, data);
148 case V1_3::OperationType::STRIDED_SLICE:
149 return ConvertStridedSlice(operation, model, data);
150 case V1_3::OperationType::TRANSPOSE:
151 return ConvertTranspose(operation, model, data);
152 case V1_3::OperationType::TRANSPOSE_CONV_2D:
153 return ConvertTransposeConv2d(operation, model, data);
154 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);
160 case V1_3::OperationType::SUB:
161 return ConvertSub(operation, model, data);
162 case V1_3::OperationType::TANH:
163 return ConvertTanH(operation, model, data);
164 default:
165 return Fail("%s: Operation type %s not supported in ArmnnDriver",
166 __func__, toString(operation.type).c_str());
167 }
168}
169
170bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
171{
172 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
173 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
174}
175
176bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
177 const V1_3::Model& model,
178 ConversionData& data,
179 armnn::ArgMinMaxFunction argMinMaxFunction)
180{
181 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
182 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
183}
184
185bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
186{
187 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
188 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
189}
190
191bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
192{
193 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
194 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
195}
196
197bool HalPolicy::ConvertComparison(const Operation& operation,
198 const Model& model,
199 ConversionData& data,
200 ComparisonOperation comparisonOperation)
201{
202 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
203 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
204}
205
206
207bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
208{
209 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
210 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
211}
212
213bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
214{
215 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
216 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
217}
218
219bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
220{
221 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
222 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
223}
224
225bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
226{
227 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
228 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
229}
230
231bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
232{
233 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
234 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
235}
236
237bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
238{
239 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
240 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
241}
242
243bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
244 const Model& model,
245 ConversionData& data,
246 UnaryOperation unaryOperation)
247{
248 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
249 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
250}
251
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100252bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
253{
254 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100255 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100256}
257
Kevin May42477c12020-03-26 13:34:14 +0000258bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
259{
260 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
261 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
262}
263
Sadik Armagan2e329612020-06-24 10:57:23 +0100264bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
265{
266 ALOGV("hal_1_3::HalPolicy::ConvertFill()");
267 return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
268}
269
Kevin May42477c12020-03-26 13:34:14 +0000270bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
271{
272 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
273 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
274}
275
276bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
277{
278 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
279 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
280}
281
Teresa Charlinf931af92020-04-10 16:46:53 +0100282bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
283{
284 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
285 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
286}
287
Kevin May42477c12020-03-26 13:34:14 +0000288bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
289{
290 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
291 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
292}
293
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100294bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
295{
296 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
297 ActivationDescriptor desc;
298 desc.m_Function = ActivationFunction::HardSwish;
299
300 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
301}
302
Kevin May42477c12020-03-26 13:34:14 +0000303bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
304{
305 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
306 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
307}
308
309bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
310{
311 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
312 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
313}
314
315bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
316{
317 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
318 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
319}
320
321bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
322 const Model& model,
323 ConversionData& data)
324{
325 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
326 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
327}
328
Narumol Prangnawarat0629eb82020-11-12 18:27:37 +0000329bool HalPolicy::ConvertLogicalBinary(const Operation& operation,
330 const Model& model,
331 ConversionData& data,
332 armnn::LogicalBinaryOperation logicalOperation)
333{
334 ALOGV("hal_1_3::HalPolicy::ConvertLogicalBinary()");
335 return ::ConvertLogicalBinary<hal_1_3::HalPolicy>(operation, model, data, logicalOperation);
336}
337
Kevin May42477c12020-03-26 13:34:14 +0000338bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
339{
340 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
341 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
342}
343
344bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
345{
346 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
347 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
348}
349
350bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
351{
352 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
353 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
354}
355
356bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
357{
358 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
359 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
360}
361
362bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
363{
Teresa Charlin5821aa22020-11-17 19:23:47 +0000364 ALOGV("hal_1_3::HalPolicy::ConvertMaximum()");
Kevin May42477c12020-03-26 13:34:14 +0000365 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
366}
367
Sadik Armagan6a284532021-03-12 09:12:29 +0000368bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
Kevin May42477c12020-03-26 13:34:14 +0000369{
Sadik Armagan6a284532021-03-12 09:12:29 +0000370 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
371 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000372}
373
374bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
375{
376 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
377 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
378}
379
380bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
381{
382 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
383 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
384}
385
386bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
387{
388 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
389 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
390}
391
392bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
393{
394 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
395 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
396}
397
398bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
399{
400 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
401 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
402}
403
404bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
405{
406 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
407 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
408}
409
410bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
411{
412 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
413 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
414}
415
Sadik Armagan813f2302020-05-19 14:10:30 +0100416bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
417{
418 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
419 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
420}
421
Finn Williamsfc884b42020-06-11 17:35:44 +0100422bool HalPolicy::ConvertRank(const Operation& operation, const Model& model, ConversionData& data)
423{
424 ALOGV("hal_1_3::HalPolicy::ConvertRank()");
425 return ::ConvertRank<hal_1_3::HalPolicy>(operation, model, data);
426}
427
Sadik Armagan6a284532021-03-12 09:12:29 +0000428bool HalPolicy::ConvertReduce(const Operation& operation,
429 const Model& model,
430 ConversionData& data,
431 ReduceOperation reduceOperation)
432{
433 ALOGV("hal_1_3::HalPolicy::ConvertReduce()");
434 return ::ConvertReduce<hal_1_3::HalPolicy>(operation, model, data, reduceOperation);
435}
436
Kevin May42477c12020-03-26 13:34:14 +0000437bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
438{
439 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
440 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
441}
442
443bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
444{
445 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
446 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
447}
448
449bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
450{
451 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
452 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
453}
454
455bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
456{
457 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
458 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
459}
460
461bool HalPolicy::ConvertResize(const Operation& operation,
462 const Model& model,
463 ConversionData& data,
464 ResizeMethod resizeMethod)
465{
466 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
467 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
468}
469
470bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
471{
472 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
473 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
474}
475
476bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
477{
478 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
479 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
480}
481
482bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
483{
484 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
485 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
486}
487
488bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
489{
490 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
491 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
492}
493
494bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
495{
496 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
497 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
498}
499
500bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
501{
502 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
503 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
504}
505
506bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
507{
508 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
509 ActivationDescriptor desc;
510 desc.m_Function = ActivationFunction::Sqrt;
511
512 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
513}
514
515bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
516{
517 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
518 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
519}
520
521bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
522{
523 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
524 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
525}
526
527bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
528{
529 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
530 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
531}
532
533} // namespace hal_1_3
534} // namespace armnn_driver