• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "../ConversionUtils.hpp"
9 #include "../ConversionUtils_1_2.hpp"
10 
11 #include <HalInterfaces.h>
12 
13 #include <armnn/Types.hpp>
14 
15 namespace V1_2 = ::android::hardware::neuralnetworks::V1_2;
16 
17 namespace armnn_driver
18 {
19 namespace hal_1_2
20 {
21 
22 class HalPolicy
23 {
24 public:
25     using Model                     = V1_2::Model;
26     using Operand                   = V1_2::Operand;
27     using OperandLifeTime           = V1_0::OperandLifeTime;
28     using OperandType               = V1_2::OperandType;
29     using Operation                 = V1_2::Operation;
30     using OperationType             = V1_2::OperationType;
31     using ExecutionCallback         = V1_2::IExecutionCallback;
32     using getSupportedOperations_cb = V1_2::IDevice::getSupportedOperations_1_2_cb;
33     using ErrorStatus               = V1_0::ErrorStatus;
34 
35     static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
36 
37 private:
38     static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
39 
40     static bool ConvertArgMinMax(const Operation& operation,
41                                  const Model& model,
42                                  ConversionData& data,
43                                  armnn::ArgMinMaxFunction argMinMaxFunction);
44 
45     static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
46 
47     static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
48 
49     static bool ConvertComparison(const Operation& operation,
50                                   const Model& model,
51                                   ConversionData& data,
52                                   armnn::ComparisonOperation comparisonOperation);
53 
54     static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
55 
56     static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
57 
58     static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
59 
60     static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
61 
62     static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
63 
64     static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data);
65 
66     static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data);
67 
68     static bool ConvertElementwiseUnary(const Operation& operation,
69                                         const Model& model,
70                                         ConversionData& data,
71                                         armnn::UnaryOperation unaryOperation);
72 
73     static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
74 
75     static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
76 
77     static bool ConvertGather(const Operation& operation, const Model& model, ConversionData& data);
78 
79     static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data);
80 
81     static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data);
82 
83     static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
84 
85     static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
86 
87     static bool ConvertLocalResponseNormalization(const Operation& operation,
88                                                   const Model& model,
89                                                   ConversionData& data);
90 
91     static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
92 
93     static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data);
94 
95     static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
96 
97     static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
98 
99     static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
100 
101     static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
102 
103     static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);
104 
105     static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
106 
107     static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
108 
109     static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data);
110 
111     static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data);
112 
113     static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data);
114 
115     static bool ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data);
116 
117     static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
118 
119     static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
120 
121     static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
122 
123     static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
124 
125     static bool ConvertResize(const Operation& operation,
126                               const Model& model,
127                               ConversionData& data,
128                               armnn::ResizeMethod resizeMethod);
129 
130     static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
131 
132     static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
133 
134     static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
135 
136     static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data);
137 
138     static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
139 
140     static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
141 
142     static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data);
143 
144     static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
145 
146     static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
147 
148     static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
149 };
150 
151 } // namespace hal_1_2
152 } // namespace armnn_driver
153