• 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 "NamespaceAdaptor.hpp"
10 
11 #include <HalInterfaces.h>
12 
13 namespace armnn_driver
14 {
15 namespace hal_1_0
16 {
17 
18 class HalPolicy
19 {
20 public:
21     using Model                     = V1_0::Model;
22     using Operand                   = V1_0::Operand;
23     using OperandLifeTime           = V1_0::OperandLifeTime;
24     using OperandType               = V1_0::OperandType;
25     using Operation                 = V1_0::Operation;
26     using OperationType             = V1_0::OperationType;
27     using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb;
28     using ErrorStatus               = V1_0::ErrorStatus;
29 
30     static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
31 
32 private:
33     static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
34 
35     static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
36 
37     static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
38 
39     static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
40 
41     static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
42 
43     static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
44 
45     static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
46 
47     static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
48 
49     static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
50 
51     static bool ConvertLocalResponseNormalization(const Operation& operation,
52                                                   const Model& model,
53                                                   ConversionData& data);
54 
55     static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
56 
57     static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
58 
59     static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
60 
61     static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
62 
63     static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
64 
65     static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
66 
67     static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
68 
69     static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
70 
71     static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
72 
73     static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
74 
75     static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
76 
77     static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data);
78 
79     static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
80 
81     static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
82 
83     static bool ValidateConv2dParameters(const Operation& operation);
84 
85     static bool ValidateDepthwiseConv2dParameters(const Operation& operation);
86 };
87 
88 } // namespace hal_1_0
89 } // namespace armnn_driver
90