ArmNN
 21.05
TestDynamicBackend.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "TestDynamicBackend.hpp"
7 
9 
11 
12 constexpr const char* TestDynamicBackendId()
13 {
14 #if defined(VALID_TEST_DYNAMIC_BACKEND_1)
15 
16  return "ValidTestDynamicBackend";
17 
18 #elif defined(VALID_TEST_DYNAMIC_BACKEND_2) || \
19  defined(VALID_TEST_DYNAMIC_BACKEND_4) || \
20  defined(INVALID_TEST_DYNAMIC_BACKEND_9)
21 
22  // This backend id is shared among different test dynamic backends for testing purposes:
23  // the test dynamic backend 4 is actually a duplicate of the test dynamic backend 2 (with the same version),
24  // the test dynamic backend 9 is actually a duplicate of the test dynamic backend 2 (but with a version
25  // incompatible with the current Backend API)
26  return "TestValid2";
27 
28 #elif defined(VALID_TEST_DYNAMIC_BACKEND_3)
29 
30  // The test dynamic backend 3 is a different backend than the test dynamic backend 2
31  return "TestValid3";
32 
33 #elif defined(VALID_TEST_DYNAMIC_BACKEND_5)
34 
35  // The test dynamic backend 5 is a different backend than the test dynamic backend 2
36  return "TestValid5";
37 
38 #elif defined(INVALID_TEST_DYNAMIC_BACKEND_10)
39 
40  // Empty backend id
41  return "";
42 
43 #elif defined(INVALID_TEST_DYNAMIC_BACKEND_11)
44 
45  // "Unknown" backend id, "Unknown" is a reserved id in ArmNN
46  return "Unknown";
47 
48 #else
49 
50  return "InvalidTestDynamicBackend";
51 
52 #endif
53 }
54 
55 class TestDynamicBackend : public armnn::IBackendInternal
56 {
57 public:
58  TestDynamicBackend()
59  : m_BackendId(TestDynamicBackendId())
60  {}
61 
62  const armnn::BackendId& GetId() const override
63  {
64  return m_BackendId;
65  }
66  IWorkloadFactoryPtr CreateWorkloadFactory(const IMemoryManagerSharedPtr& memoryManager) const override
67  {
68  IgnoreUnused(memoryManager);
69  return IWorkloadFactoryPtr{};
70  }
72  {
73  return ILayerSupportSharedPtr{};
74  }
75 
76 private:
77  armnn::BackendId m_BackendId;
78 };
79 
80 const char* GetBackendId()
81 {
82 #if defined(INVALID_TEST_DYNAMIC_BACKEND_5) || \
83  defined(INVALID_TEST_DYNAMIC_BACKEND_8)
84 
85  // Return an invalid backend id
86  return nullptr;
87 
88 #else
89 
90  // Return a valid backend id
91  return TestDynamicBackendId();
92 
93 #endif
94 }
95 
96 void GetVersion(uint32_t* outMajor, uint32_t* outMinor)
97 {
98  if (!outMajor || !outMinor)
99  {
100  return;
101  }
102 
103 #if defined(INVALID_TEST_DYNAMIC_BACKEND_7) || \
104  defined(INVALID_TEST_DYNAMIC_BACKEND_8)
105 
106  *outMajor = 0;
107  *outMinor = 7;
108 
109 #else
110 
112 
113  *outMajor = apiVersion.m_Major;
114 
115 #if defined(INVALID_TEST_DYNAMIC_BACKEND_9)
116 
117  *outMinor = apiVersion.m_Minor + 1;
118 
119 #else
120 
121  *outMinor = apiVersion.m_Minor;
122 
123 #endif
124 
125 #endif
126 }
127 
129 {
130 #if defined(INVALID_TEST_DYNAMIC_BACKEND_6)
131 
132  // Return an invalid backend instance
133  return nullptr;
134 
135 #else
136 
137  // Return a non-null backend instance
138  return new TestDynamicBackend();
139 
140 #endif
141 }
std::shared_ptr< ILayerSupport > ILayerSupportSharedPtr
constexpr const char * TestDynamicBackendId()
void IgnoreUnused(Ts &&...)
const std::string GetVersion()
Definition: Utils.cpp:77
virtual const BackendId & GetId() const =0
virtual IWorkloadFactoryPtr CreateWorkloadFactory(const IMemoryManagerSharedPtr &memoryManager=nullptr) const =0
static constexpr BackendVersion GetApiVersion()
Returns the version of the Backend API.
const char * GetBackendId()
void * BackendFactory()
virtual ILayerSupportSharedPtr GetLayerSupport() const =0