blob: c596075be3df95a46d2519d10a8218cc9e3c610a [file] [log] [blame]
arovir01b0717b52018-09-05 17:03:25 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "ConversionUtils.hpp"
9
10#include <HalInterfaces.h>
11
12namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
13
14namespace armnn_driver
15{
16namespace hal_1_0
17{
18
19class HalPolicy
20{
21public:
22 using Model = V1_0::Model;
23 using Operation = V1_0::Operation;
24 using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb;
25
26 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
27
28private:
29 static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
30
31 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
32
33 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
34
35 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
36
37 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
38
39 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
40
41 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
42
43 static bool ConvertLocalResponseNormalization(const Operation& operation,
44 const Model& model,
45 ConversionData& data);
46
47 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
48
49 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
50
51 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
52
53 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
54
55 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
56
57 static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
58
59 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
60
61 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
62
63 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
64
65 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
66
67 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
68
69 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
70
71 static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data);
72};
73
74} // namespace hal_1_0
75} // namespace armnn_driver