xref: /aosp_15_r20/external/android-nn-driver/1.1/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_1 = ::android::hardware::neuralnetworks::V1_1;
13 
14 namespace armnn_driver
15 {
16 namespace hal_1_1
17 {
18 
19 class HalPolicy
20 {
21 public:
22     using Model                     = V1_1::Model;
23     using Operand                   = V1_0::Operand;
24     using OperandLifeTime           = V1_0::OperandLifeTime;
25     using OperandType               = V1_0::OperandType;
26     using Operation                 = V1_1::Operation;
27     using OperationType             = V1_1::OperationType;
28     using getSupportedOperations_cb = V1_1::IDevice::getSupportedOperations_1_1_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 ConvertElementwiseBinary(const Operation& operation,
35                                          const Model& model,
36                                          ConversionData& data,
37                                          armnn::BinaryOperation binaryOperation);
38 
39     static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
40     static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
41     static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
42     static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
43     static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
44     static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
45     static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
46 };
47 
48 } // namespace hal_1_1
49 } // namespace armnn_driver
50