xref: /aosp_15_r20/external/android-nn-driver/1.0/HalPolicy.hpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
1 //
2 // Copyright © 2017-2021,2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include "../ConversionUtils.hpp"
9 
10 #include <HalInterfaces.h>
11 
12 namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
13 
14 namespace armnn_driver
15 {
16 namespace hal_1_0
17 {
18 
19 class HalPolicy
20 {
21 public:
22     using Model                     = V1_0::Model;
23     using Operand                   = V1_0::Operand;
24     using OperandLifeTime           = V1_0::OperandLifeTime;
25     using OperandType               = V1_0::OperandType;
26     using Operation                 = V1_0::Operation;
27     using OperationType             = V1_0::OperationType;
28     using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb;
29     using ErrorStatus               = V1_0::ErrorStatus;
30 
31     static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
32 
33 private:
34     static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
35 
36     static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
37 
38     static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
39 
40     static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
41 
42     static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
43 
44     static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
45 
46     static bool ConvertElementwiseBinary(const Operation& operation,
47                                          const Model& model,
48                                          ConversionData& data,
49                                          armnn::BinaryOperation binaryOperation);
50 
51     static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
52 
53     static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
54 
55     static bool ConvertLocalResponseNormalization(const Operation& operation,
56                                                   const Model& model,
57                                                   ConversionData& data);
58 
59     static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
60 
61     static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
62 
63     static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
64 
65     static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
66 
67     static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
68 
69     static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
70 
71     static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
72 
73     static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
74 
75     static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
76 
77     static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
78 
79     static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data);
80 
81     static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
82 
83     static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
84 
85     static bool ValidateConv2dParameters(const Operation& operation);
86 
87     static bool ValidateDepthwiseConv2dParameters(const Operation& operation);
88 };
89 
90 } // namespace hal_1_0
91 } // namespace armnn_driver
92