• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "HalPolicy.hpp"
7 
8 namespace armnn_driver
9 {
10 namespace hal_1_3
11 {
12 
13 using namespace armnn;
14 
15 namespace
16 {
17 
18 } // anonymouse namespace
19 
ConvertOperation(const Operation & operation,const Model & model,ConversionData & data)20 bool 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);
48         case V1_3::OperationType::ELU:
49             return ConvertElu(operation, model, data);
50         case V1_3::OperationType::EQUAL:
51             return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
52         case V1_3::OperationType::EXP:
53             return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
54         case V1_3::OperationType::EXPAND_DIMS:
55             return ConvertExpandDims(operation, model, data);
56         case V1_3::OperationType::FILL:
57             return ConvertFill(operation, model, data);
58         case V1_3::OperationType::FLOOR:
59             return ConvertFloor(operation, model, data);
60         case V1_3::OperationType::FULLY_CONNECTED:
61             return ConvertFullyConnected(operation, model, data);
62         case V1_3::OperationType::GATHER:
63             return ConvertGather(operation, model, data);
64         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);
70         case V1_3::OperationType::HARD_SWISH:
71             return ConvertHardSwish(operation, model, data);
72         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);
84         case V1_3::OperationType::LOGISTIC:
85             return ConvertLogistic(operation, model, data);
86         case V1_3::OperationType::LOG_SOFTMAX:
87             return ConvertLogSoftmax(operation, model, data);
88         case V1_3::OperationType::LSTM:
89             return ConvertLstm(operation, model, data);
90         case V1_3::OperationType::MAX_POOL_2D:
91             return ConvertMaxPool2d(operation, model, data);
92         case V1_3::OperationType::MAXIMUM:
93             return ConvertMaximum(operation, model, data);
94         case V1_3::OperationType::MEAN:
95             return ConvertMean(operation, model, data);
96         case V1_3::OperationType::MINIMUM:
97             return ConvertMinimum(operation, model, data);
98         case V1_3::OperationType::MUL:
99             return ConvertMul(operation, model, data);
100         case V1_3::OperationType::NEG:
101             return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
102         case V1_3::OperationType::NOT_EQUAL:
103             return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
104         case V1_3::OperationType::PAD:
105             return ConvertPad(operation, model, data);
106         case V1_3::OperationType::PAD_V2:
107             return ConvertPadV2(operation, model, data);
108         case V1_3::OperationType::PRELU:
109             return ConvertPrelu(operation, model, data);
110         case V1_3::OperationType::QUANTIZE:
111             return ConvertQuantize(operation, model, data);
112         case V1_3::OperationType::QUANTIZED_LSTM:
113             return ConvertQuantizedLstm(operation, model, data);
114         case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
115             return ConvertQuantized16BitLstm(operation, model, data);
116         case V1_3::OperationType::RANK:
117             return ConvertRank(operation, model, data);
118         case V1_3::OperationType::RELU:
119             return ConvertReLu(operation, model, data);
120         case V1_3::OperationType::RELU1:
121             return ConvertReLu1(operation, model, data);
122         case V1_3::OperationType::RELU6:
123             return ConvertReLu6(operation, model, data);
124         case V1_3::OperationType::RESHAPE:
125             return ConvertReshape(operation, model, data);
126         case V1_3::OperationType::RESIZE_BILINEAR:
127             return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
128         case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
129             return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
130         case V1_3::OperationType::RSQRT:
131             return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
132         case V1_3::OperationType::SQRT:
133             return ConvertSqrt(operation, model, data);
134         case V1_3::OperationType::SQUEEZE:
135             return ConvertSqueeze(operation, model, data);
136         case V1_3::OperationType::STRIDED_SLICE:
137             return ConvertStridedSlice(operation, model, data);
138         case V1_3::OperationType::TRANSPOSE:
139             return ConvertTranspose(operation, model, data);
140         case V1_3::OperationType::TRANSPOSE_CONV_2D:
141             return ConvertTransposeConv2d(operation, model, data);
142         case V1_3::OperationType::SOFTMAX:
143             return ConvertSoftmax(operation, model, data);
144         case V1_3::OperationType::SPACE_TO_BATCH_ND  :
145             return ConvertSpaceToBatchNd(operation, model, data);
146         case V1_3::OperationType::SPACE_TO_DEPTH:
147             return ConvertSpaceToDepth(operation, model, data);
148         case V1_3::OperationType::SUB:
149             return ConvertSub(operation, model, data);
150         case V1_3::OperationType::TANH:
151             return ConvertTanH(operation, model, data);
152         default:
153             return Fail("%s: Operation type %s not supported in ArmnnDriver",
154                         __func__, toString(operation.type).c_str());
155     }
156 }
157 
ConvertAdd(const Operation & operation,const Model & model,ConversionData & data)158 bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
159 {
160     ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
161     return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
162 }
163 
ConvertArgMinMax(const V1_3::Operation & operation,const V1_3::Model & model,ConversionData & data,armnn::ArgMinMaxFunction argMinMaxFunction)164 bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
165                                  const V1_3::Model& model,
166                                  ConversionData& data,
167                                  armnn::ArgMinMaxFunction argMinMaxFunction)
168 {
169     ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
170     return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
171 }
172 
ConvertAveragePool2d(const Operation & operation,const Model & model,ConversionData & data)173 bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
174 {
175     ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
176     return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
177 }
178 
ConvertBatchToSpaceNd(const Operation & operation,const Model & model,ConversionData & data)179 bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
180 {
181     ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
182     return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
183 }
184 
ConvertComparison(const Operation & operation,const Model & model,ConversionData & data,ComparisonOperation comparisonOperation)185 bool HalPolicy::ConvertComparison(const Operation& operation,
186                                   const Model& model,
187                                   ConversionData& data,
188                                   ComparisonOperation comparisonOperation)
189 {
190     ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
191     return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
192 }
193 
194 
ConvertConcatenation(const Operation & operation,const Model & model,ConversionData & data)195 bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
196 {
197     ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
198     return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
199 }
200 
ConvertConv2d(const Operation & operation,const Model & model,ConversionData & data)201 bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
202 {
203     ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
204     return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
205 }
206 
ConvertDepthToSpace(const Operation & operation,const Model & model,ConversionData & data)207 bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
208 {
209     ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
210     return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
211 }
212 
ConvertDepthwiseConv2d(const Operation & operation,const Model & model,ConversionData & data)213 bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
214 {
215     ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
216     return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
217 }
218 
ConvertDequantize(const Operation & operation,const Model & model,ConversionData & data)219 bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
220 {
221     ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
222     return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
223 }
224 
ConvertDiv(const Operation & operation,const Model & model,ConversionData & data)225 bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
226 {
227     ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
228     return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
229 }
230 
ConvertElementwiseUnary(const Operation & operation,const Model & model,ConversionData & data,UnaryOperation unaryOperation)231 bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
232                                         const Model& model,
233                                         ConversionData& data,
234                                         UnaryOperation unaryOperation)
235 {
236     ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
237     return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
238 }
239 
ConvertElu(const Operation & operation,const Model & model,ConversionData & data)240 bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
241 {
242     ALOGV("hal_1_3::HalPolicy::ConvertElu()");
243     return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
244 }
245 
ConvertExpandDims(const Operation & operation,const Model & model,ConversionData & data)246 bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
247 {
248     ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
249     return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
250 }
251 
ConvertFill(const Operation & operation,const Model & model,ConversionData & data)252 bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
253 {
254     ALOGV("hal_1_3::HalPolicy::ConvertFill()");
255     return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
256 }
257 
ConvertFloor(const Operation & operation,const Model & model,ConversionData & data)258 bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
259 {
260     ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
261     return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
262 }
263 
ConvertFullyConnected(const Operation & operation,const Model & model,ConversionData & data)264 bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
265 {
266     ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
267     return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
268 }
269 
ConvertGather(const Operation & operation,const Model & model,ConversionData & data)270 bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
271 {
272     ALOGV("hal_1_3::HalPolicy::ConvertGather()");
273     return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
274 }
275 
ConvertGroupedConv2d(const Operation & operation,const Model & model,ConversionData & data)276 bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
277 {
278     ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
279     return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
280 }
281 
ConvertHardSwish(const Operation & operation,const Model & model,ConversionData & data)282 bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
283 {
284     ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
285     ActivationDescriptor desc;
286     desc.m_Function = ActivationFunction::HardSwish;
287 
288     return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
289 }
290 
ConvertInstanceNormalization(const Operation & operation,const Model & model,ConversionData & data)291 bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
292 {
293     ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
294     return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
295 }
296 
ConvertL2Normalization(const Operation & operation,const Model & model,ConversionData & data)297 bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
298 {
299     ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
300     return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
301 }
302 
ConvertL2Pool2d(const Operation & operation,const Model & model,ConversionData & data)303 bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
304 {
305     ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
306     return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
307 }
308 
ConvertLocalResponseNormalization(const Operation & operation,const Model & model,ConversionData & data)309 bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
310                                                   const Model& model,
311                                                   ConversionData& data)
312 {
313     ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
314     return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
315 }
316 
ConvertLogistic(const Operation & operation,const Model & model,ConversionData & data)317 bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
318 {
319     ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
320     return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
321 }
322 
ConvertLogSoftmax(const Operation & operation,const Model & model,ConversionData & data)323 bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
324 {
325     ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
326     return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
327 }
328 
ConvertLstm(const Operation & operation,const Model & model,ConversionData & data)329 bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
330 {
331     ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
332     return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
333 }
334 
ConvertMaxPool2d(const Operation & operation,const Model & model,ConversionData & data)335 bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
336 {
337     ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
338     return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
339 }
340 
ConvertMaximum(const Operation & operation,const Model & model,ConversionData & data)341 bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
342 {
343     ALOGV("hal_1_3::HalPolicy::ConvertMaximum()");
344     return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
345 }
346 
ConvertMean(const Operation & operation,const Model & model,ConversionData & data)347 bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
348 {
349     ALOGV("hal_1_3::HalPolicy::ConvertMean()");
350     return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
351 }
352 
ConvertMinimum(const Operation & operation,const Model & model,ConversionData & data)353 bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
354 {
355     ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
356     return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
357 }
358 
ConvertMul(const Operation & operation,const Model & model,ConversionData & data)359 bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
360 {
361     ALOGV("hal_1_3::HalPolicy::ConvertMul()");
362     return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
363 }
364 
ConvertPad(const Operation & operation,const Model & model,ConversionData & data)365 bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
366 {
367     ALOGV("hal_1_3::HalPolicy::ConvertPad()");
368     return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
369 }
370 
ConvertPadV2(const Operation & operation,const Model & model,ConversionData & data)371 bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
372 {
373     ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
374     return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
375 }
376 
ConvertPrelu(const Operation & operation,const Model & model,ConversionData & data)377 bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
378 {
379     ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
380     return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
381 }
382 
ConvertQuantize(const Operation & operation,const Model & model,ConversionData & data)383 bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
384 {
385     ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
386     return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
387 }
388 
ConvertQuantizedLstm(const Operation & operation,const Model & model,ConversionData & data)389 bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
390 {
391     ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
392     return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
393 }
394 
ConvertQuantized16BitLstm(const Operation & operation,const Model & model,ConversionData & data)395 bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
396 {
397     ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
398     return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
399 }
400 
ConvertRank(const Operation & operation,const Model & model,ConversionData & data)401 bool HalPolicy::ConvertRank(const Operation& operation, const Model& model, ConversionData& data)
402 {
403     ALOGV("hal_1_3::HalPolicy::ConvertRank()");
404     return ::ConvertRank<hal_1_3::HalPolicy>(operation, model, data);
405 }
406 
ConvertReLu(const Operation & operation,const Model & model,ConversionData & data)407 bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
408 {
409     ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
410     return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
411 }
412 
ConvertReLu1(const Operation & operation,const Model & model,ConversionData & data)413 bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
414 {
415     ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
416     return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
417 }
418 
ConvertReLu6(const Operation & operation,const Model & model,ConversionData & data)419 bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
420 {
421     ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
422     return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
423 }
424 
ConvertReshape(const Operation & operation,const Model & model,ConversionData & data)425 bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
426 {
427     ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
428     return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
429 }
430 
ConvertResize(const Operation & operation,const Model & model,ConversionData & data,ResizeMethod resizeMethod)431 bool HalPolicy::ConvertResize(const Operation& operation,
432                               const Model& model,
433                               ConversionData& data,
434                               ResizeMethod resizeMethod)
435 {
436     ALOGV("hal_1_3::HalPolicy::ConvertResize()");
437     return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
438 }
439 
ConvertSpaceToBatchNd(const Operation & operation,const Model & model,ConversionData & data)440 bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
441 {
442     ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
443     return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
444 }
445 
ConvertSpaceToDepth(const Operation & operation,const Model & model,ConversionData & data)446 bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
447 {
448     ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
449     return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
450 }
451 
ConvertSoftmax(const Operation & operation,const Model & model,ConversionData & data)452 bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
453 {
454     ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
455     return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
456 }
457 
ConvertSub(const Operation & operation,const Model & model,ConversionData & data)458 bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
459 {
460     ALOGV("hal_1_3::HalPolicy::ConvertSub()");
461     return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
462 }
463 
ConvertTanH(const Operation & operation,const Model & model,ConversionData & data)464 bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
465 {
466     ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
467     return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
468 }
469 
ConvertTransposeConv2d(const Operation & operation,const Model & model,ConversionData & data)470 bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
471 {
472     ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
473     return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
474 }
475 
ConvertSqrt(const Operation & operation,const Model & model,ConversionData & data)476 bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
477 {
478     ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
479     ActivationDescriptor desc;
480     desc.m_Function = ActivationFunction::Sqrt;
481 
482     return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
483 }
484 
ConvertSqueeze(const Operation & operation,const Model & model,ConversionData & data)485 bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
486 {
487     ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
488     return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
489 }
490 
ConvertStridedSlice(const Operation & operation,const Model & model,ConversionData & data)491 bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
492 {
493     ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
494     return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
495 }
496 
ConvertTranspose(const Operation & operation,const Model & model,ConversionData & data)497 bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
498 {
499     ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
500     return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
501 }
502 
503 } // namespace hal_1_3
504 } // namespace armnn_driver
505