aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/reference')
-rw-r--r--src/backends/reference/CMakeLists.txt1
-rw-r--r--src/backends/reference/RefBackend.cpp12
-rw-r--r--src/backends/reference/RefBackend.hpp6
-rw-r--r--src/backends/reference/RefBackendId.hpp12
-rw-r--r--src/backends/reference/RefLayerSupport.cpp18
5 files changed, 36 insertions, 13 deletions
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index a0d27cc387..5f698f4e9d 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -6,6 +6,7 @@
list(APPEND armnnRefBackend_sources
RefBackend.cpp
RefBackend.hpp
+ RefBackendId.hpp
RefLayerSupport.cpp
RefLayerSupport.hpp
RefWorkloadFactory.cpp
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 1f08d82b98..9afb42d59f 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -4,6 +4,7 @@
//
#include "RefBackend.hpp"
+#include "RefBackendId.hpp"
#include "RefWorkloadFactory.hpp"
#include <backends/BackendRegistry.hpp>
@@ -16,7 +17,9 @@ namespace armnn
namespace
{
-static BackendRegistry::Helper s_RegisterHelper{
+static StaticRegistryInitializer<BackendRegistry> g_RegisterHelper
+{
+ BackendRegistryInstance(),
RefBackend::GetIdStatic(),
[]()
{
@@ -28,15 +31,10 @@ static BackendRegistry::Helper s_RegisterHelper{
const BackendId& RefBackend::GetIdStatic()
{
- static const BackendId s_Id{"CpuRef"};
+ static const BackendId s_Id{RefBackendId()};
return s_Id;
}
-const ILayerSupport& RefBackend::GetLayerSupport() const
-{
- return m_LayerSupport;
-}
-
std::unique_ptr<IWorkloadFactory> RefBackend::CreateWorkloadFactory() const
{
return std::make_unique<RefWorkloadFactory>();
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
index c206dbdaf3..0cd3cf4dce 100644
--- a/src/backends/reference/RefBackend.hpp
+++ b/src/backends/reference/RefBackend.hpp
@@ -5,7 +5,6 @@
#pragma once
#include <backends/IBackendInternal.hpp>
-#include "RefLayerSupport.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:
- RefLayerSupport m_LayerSupport;
};
} // namespace armnn \ No newline at end of file
diff --git a/src/backends/reference/RefBackendId.hpp b/src/backends/reference/RefBackendId.hpp
new file mode 100644
index 0000000000..2a7f9f19d9
--- /dev/null
+++ b/src/backends/reference/RefBackendId.hpp
@@ -0,0 +1,12 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+namespace armnn
+{
+
+constexpr const char * RefBackendId() { return "CpuRef"; }
+
+} // namespace armnn
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
index 909df75445..253d9c2294 100644
--- a/src/backends/reference/RefLayerSupport.cpp
+++ b/src/backends/reference/RefLayerSupport.cpp
@@ -4,11 +4,14 @@
//
#include "RefLayerSupport.hpp"
+#include "RefBackendId.hpp"
#include <armnn/InternalTypes.hpp>
#include <armnn/LayerSupportCommon.hpp>
#include <armnn/Types.hpp>
+#include <backends/LayerSupportRegistry.hpp>
+
#include <boost/core/ignore_unused.hpp>
using namespace boost;
@@ -19,6 +22,21 @@ namespace armnn
namespace
{
+ILayerSupportSharedPtr GetLayerSupportPointer()
+{
+ static ILayerSupportSharedPtr instance{new RefLayerSupport};
+ return instance;
+}
+
+static StaticRegistryInitializer<LayerSupportRegistry> g_RegisterHelper{
+ LayerSupportRegistryInstance(),
+ RefBackendId(),
+ []()
+ {
+ return GetLayerSupportPointer();
+ }
+};
+
template<typename Float32Func, typename Uint8Func, typename ... Params>
bool IsSupportedForDataTypeRef(Optional<std::string&> reasonIfUnsupported,
DataType dataType,