aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon')
-rw-r--r--src/backends/neon/CMakeLists.txt2
-rw-r--r--src/backends/neon/NeonBackend.cpp12
-rw-r--r--src/backends/neon/NeonBackend.hpp6
-rw-r--r--src/backends/neon/NeonBackendId.hpp12
-rw-r--r--src/backends/neon/NeonLayerSupport.cpp18
5 files changed, 37 insertions, 13 deletions
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index e294ff7319..058553dd34 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -7,6 +7,7 @@ if(ARMCOMPUTENEON)
list(APPEND armnnNeonBackend_sources
NeonBackend.cpp
NeonBackend.hpp
+ NeonBackendId.hpp
NeonInterceptorScheduler.hpp
NeonInterceptorScheduler.cpp
NeonLayerSupport.cpp
@@ -26,6 +27,7 @@ if(ARMCOMPUTENEON)
else()
list(APPEND armnnNeonBackend_sources
+ NeonBackendId.hpp
NeonLayerSupport.cpp
NeonLayerSupport.hpp
NeonWorkloadFactory.cpp
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 3c12f7766d..b7102956df 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -4,6 +4,7 @@
//
#include "NeonBackend.hpp"
+#include "NeonBackendId.hpp"
#include "NeonWorkloadFactory.hpp"
#include <backends/BackendRegistry.hpp>
@@ -16,7 +17,9 @@ namespace armnn
namespace
{
-static BackendRegistry::Helper g_RegisterHelper{
+static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper
+{
+ BackendRegistryInstance(),
NeonBackend::GetIdStatic(),
[]()
{
@@ -28,15 +31,10 @@ static BackendRegistry::Helper g_RegisterHelper{
const BackendId& NeonBackend::GetIdStatic()
{
- static const BackendId s_Id{"CpuAcc"};
+ static const BackendId s_Id{NeonBackendId()};
return s_Id;
}
-const ILayerSupport& NeonBackend::GetLayerSupport() const
-{
- return m_LayerSupport;
-}
-
std::unique_ptr<IWorkloadFactory> NeonBackend::CreateWorkloadFactory() const
{
return std::make_unique<NeonWorkloadFactory>();
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
index c7f7f6e380..6280610bda 100644
--- a/src/backends/neon/NeonBackend.hpp
+++ b/src/backends/neon/NeonBackend.hpp
@@ -5,7 +5,6 @@
#pragma once
#include <backends/IBackendInternal.hpp>
-#include "NeonLayerSupport.hpp"
namespace armnn
{
@@ -19,14 +18,9 @@ public:
static const BackendId& GetIdStatic();
const BackendId& GetId() const override { return GetIdStatic(); }
- const ILayerSupport& GetLayerSupport() const override;
-
std::unique_ptr<IWorkloadFactory> CreateWorkloadFactory() const override;
static void Destroy(IBackend* backend);
-
-private:
- NeonLayerSupport m_LayerSupport;
};
} // namespace armnn \ No newline at end of file
diff --git a/src/backends/neon/NeonBackendId.hpp b/src/backends/neon/NeonBackendId.hpp
new file mode 100644
index 0000000000..6e6412aa09
--- /dev/null
+++ b/src/backends/neon/NeonBackendId.hpp
@@ -0,0 +1,12 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+namespace armnn
+{
+
+constexpr const char * NeonBackendId() { return "CpuAcc"; }
+
+} // namespace armnn
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
index 0add6f594d..3638212c75 100644
--- a/src/backends/neon/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -4,6 +4,7 @@
//
#include "NeonLayerSupport.hpp"
+#include "NeonBackendId.hpp"
#include <armnn/Descriptors.hpp>
#include <armnn/InternalTypes.hpp>
@@ -11,6 +12,8 @@
#include <armnn/Tensor.hpp>
#include <armnn/Types.hpp>
+#include <backends/LayerSupportRegistry.hpp>
+
#include <boost/core/ignore_unused.hpp>
#ifdef ARMCOMPUTENEON_ENABLED
@@ -37,6 +40,21 @@ namespace armnn
namespace
{
+ILayerSupportSharedPtr GetLayerSupportPointer()
+{
+ static ILayerSupportSharedPtr instance{new NeonLayerSupport};
+ return instance;
+}
+
+static StaticRegistryInitializer<LayerSupportRegistry> g_RegisterHelper{
+ LayerSupportRegistryInstance(),
+ NeonBackendId(),
+ []()
+ {
+ return GetLayerSupportPointer();
+ }
+};
+
bool IsNeonBackendSupported(Optional<std::string&> reasonIfUnsupported)
{
#if ARMCOMPUTENEON_ENABLED