blob: 1c4a1e361de76aa361987940ffdfeb2aaebb90bc [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);
52 case V1_3::OperationType::EXPAND_DIMS:
53 return ConvertExpandDims(operation, model, data);
Sadik Armagan2e329612020-06-24 10:57:23 +010054 case V1_3::OperationType::FILL:
55 return ConvertFill(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000056 case V1_3::OperationType::FLOOR:
57 return ConvertFloor(operation, model, data);
58 case V1_3::OperationType::FULLY_CONNECTED:
59 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010060 case V1_3::OperationType::GATHER:
61 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000062 case V1_3::OperationType::GREATER:
63 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
64 case V1_3::OperationType::GREATER_EQUAL:
65 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
66 case V1_3::OperationType::GROUPED_CONV_2D:
67 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010068 case V1_3::OperationType::HARD_SWISH:
69 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000070 case V1_3::OperationType::INSTANCE_NORMALIZATION:
71 return ConvertInstanceNormalization(operation, model, data);
72 case V1_3::OperationType::L2_NORMALIZATION:
73 return ConvertL2Normalization(operation, model, data);
74 case V1_3::OperationType::L2_POOL_2D:
75 return ConvertL2Pool2d(operation, model, data);
76 case V1_3::OperationType::LESS:
77 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
78 case V1_3::OperationType::LESS_EQUAL:
79 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
80 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
81 return ConvertLocalResponseNormalization(operation, model, data);
82 case V1_3::OperationType::LOGISTIC:
83 return ConvertLogistic(operation, model, data);
84 case V1_3::OperationType::LOG_SOFTMAX:
85 return ConvertLogSoftmax(operation, model, data);
86 case V1_3::OperationType::LSTM:
87 return ConvertLstm(operation, model, data);
88 case V1_3::OperationType::MAX_POOL_2D:
89 return ConvertMaxPool2d(operation, model, data);
90 case V1_3::OperationType::MAXIMUM:
91 return ConvertMaximum(operation, model, data);
92 case V1_3::OperationType::MEAN:
93 return ConvertMean(operation, model, data);
94 case V1_3::OperationType::MINIMUM:
95 return ConvertMinimum(operation, model, data);
96 case V1_3::OperationType::MUL:
97 return ConvertMul(operation, model, data);
98 case V1_3::OperationType::NEG:
99 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
100 case V1_3::OperationType::NOT_EQUAL:
101 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
102 case V1_3::OperationType::PAD:
103 return ConvertPad(operation, model, data);
104 case V1_3::OperationType::PAD_V2:
105 return ConvertPadV2(operation, model, data);
106 case V1_3::OperationType::PRELU:
107 return ConvertPrelu(operation, model, data);
108 case V1_3::OperationType::QUANTIZE:
109 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100110 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000111 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100112 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
113 return ConvertQuantized16BitLstm(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000114 case V1_3::OperationType::RELU:
115 return ConvertReLu(operation, model, data);
116 case V1_3::OperationType::RELU1:
117 return ConvertReLu1(operation, model, data);
118 case V1_3::OperationType::RELU6:
119 return ConvertReLu6(operation, model, data);
120 case V1_3::OperationType::RESHAPE:
121 return ConvertReshape(operation, model, data);
122 case V1_3::OperationType::RESIZE_BILINEAR:
123 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
124 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
125 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
126 case V1_3::OperationType::RSQRT:
127 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
128 case V1_3::OperationType::SQRT:
129 return ConvertSqrt(operation, model, data);
130 case V1_3::OperationType::SQUEEZE:
131 return ConvertSqueeze(operation, model, data);
132 case V1_3::OperationType::STRIDED_SLICE:
133 return ConvertStridedSlice(operation, model, data);
134 case V1_3::OperationType::TRANSPOSE:
135 return ConvertTranspose(operation, model, data);
136 case V1_3::OperationType::TRANSPOSE_CONV_2D:
137 return ConvertTransposeConv2d(operation, model, data);
138 case V1_3::OperationType::SOFTMAX:
139 return ConvertSoftmax(operation, model, data);
140 case V1_3::OperationType::SPACE_TO_BATCH_ND :
141 return ConvertSpaceToBatchNd(operation, model, data);
142 case V1_3::OperationType::SPACE_TO_DEPTH:
143 return ConvertSpaceToDepth(operation, model, data);
144 case V1_3::OperationType::SUB:
145 return ConvertSub(operation, model, data);
146 case V1_3::OperationType::TANH:
147 return ConvertTanH(operation, model, data);
148 default:
149 return Fail("%s: Operation type %s not supported in ArmnnDriver",
150 __func__, toString(operation.type).c_str());
151 }
152}
153
154bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
155{
156 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
157 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
158}
159
160bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
161 const V1_3::Model& model,
162 ConversionData& data,
163 armnn::ArgMinMaxFunction argMinMaxFunction)
164{
165 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
166 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
167}
168
169bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
170{
171 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
172 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
173}
174
175bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
176{
177 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
178 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
179}
180
181bool HalPolicy::ConvertComparison(const Operation& operation,
182 const Model& model,
183 ConversionData& data,
184 ComparisonOperation comparisonOperation)
185{
186 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
187 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
188}
189
190
191bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
192{
193 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
194 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
195}
196
197bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
198{
199 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
200 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
201}
202
203bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
204{
205 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
206 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
207}
208
209bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
210{
211 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
212 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
213}
214
215bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
216{
217 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
218 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
219}
220
221bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
222{
223 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
224 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
225}
226
227bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
228 const Model& model,
229 ConversionData& data,
230 UnaryOperation unaryOperation)
231{
232 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
233 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
234}
235
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100236bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
237{
238 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100239 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100240}
241
Kevin May42477c12020-03-26 13:34:14 +0000242bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
243{
244 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
245 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
246}
247
Sadik Armagan2e329612020-06-24 10:57:23 +0100248bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
249{
250 ALOGV("hal_1_3::HalPolicy::ConvertFill()");
251 return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
252}
253
Kevin May42477c12020-03-26 13:34:14 +0000254bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
255{
256 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
257 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
258}
259
260bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
261{
262 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
263 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
264}
265
Teresa Charlinf931af92020-04-10 16:46:53 +0100266bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
267{
268 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
269 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
270}
271
Kevin May42477c12020-03-26 13:34:14 +0000272bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
273{
274 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
275 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
276}
277
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100278bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
279{
280 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
281 ActivationDescriptor desc;
282 desc.m_Function = ActivationFunction::HardSwish;
283
284 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
285}
286
Kevin May42477c12020-03-26 13:34:14 +0000287bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
288{
289 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
290 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
291}
292
293bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
294{
295 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
296 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
297}
298
299bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
300{
301 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
302 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
303}
304
305bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
306 const Model& model,
307 ConversionData& data)
308{
309 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
310 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
311}
312
313bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
314{
315 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
316 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
317}
318
319bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
320{
321 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
322 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
323}
324
325bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
326{
327 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
328 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
329}
330
331bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
332{
333 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
334 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
335}
336
337bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
338{
339 ALOGV("hal_1_3::HalPolicy::ConvertConvertMaximumMaximum()");
340 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
341}
342
343bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
344{
345 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
346 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
347}
348
349bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
350{
351 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
352 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
353}
354
355bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
356{
357 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
358 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
359}
360
361bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
362{
363 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
364 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
365}
366
367bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
368{
369 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
370 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
371}
372
373bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
374{
375 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
376 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
377}
378
379bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
380{
381 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
382 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
383}
384
385bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
386{
387 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
388 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
389}
390
Sadik Armagan813f2302020-05-19 14:10:30 +0100391bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
392{
393 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
394 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
395}
396
Kevin May42477c12020-03-26 13:34:14 +0000397bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
398{
399 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
400 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
401}
402
403bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
404{
405 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
406 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
407}
408
409bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
410{
411 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
412 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
413}
414
415bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
416{
417 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
418 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
419}
420
421bool HalPolicy::ConvertResize(const Operation& operation,
422 const Model& model,
423 ConversionData& data,
424 ResizeMethod resizeMethod)
425{
426 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
427 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
428}
429
430bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
431{
432 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
433 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
434}
435
436bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
437{
438 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
439 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
440}
441
442bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
443{
444 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
445 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
446}
447
448bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
449{
450 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
451 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
452}
453
454bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
455{
456 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
457 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
458}
459
460bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
461{
462 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
463 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
464}
465
466bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
467{
468 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
469 ActivationDescriptor desc;
470 desc.m_Function = ActivationFunction::Sqrt;
471
472 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
473}
474
475bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
476{
477 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
478 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
479}
480
481bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
482{
483 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
484 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
485}
486
487bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
488{
489 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
490 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
491}
492
493} // namespace hal_1_3
494} // namespace armnn_driver