IVGCVSW-3546 Create a reference dynamic backend to use for testing and as
an example in the docs

 * Wrapped the reference backend into a dynamic backend
 * Moved the static registration code to a separate file, so that
   it is possible to create the reference dynamic backend that does not
   register statically into armnn
 * Added unit test

Change-Id: I1074d21b020820f9ac8c7178388be773b447555a
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index 281e916..963e643 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -13,6 +13,7 @@
     RefLayerSupport.hpp
     RefMemoryManager.hpp
     RefMemoryManager.cpp
+    RefRegistryInitializer.cpp
     RefWorkloadFactory.cpp
     RefWorkloadFactory.hpp
 )
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 3680831..41438b0 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -20,21 +20,6 @@
 namespace armnn
 {
 
-namespace
-{
-
-static BackendRegistry::StaticRegistryInitializer g_RegisterHelper
-{
-    BackendRegistryInstance(),
-    RefBackend::GetIdStatic(),
-    []()
-    {
-        return IBackendInternalUniquePtr(new RefBackend);
-    }
-};
-
-}
-
 const BackendId& RefBackend::GetIdStatic()
 {
     static const BackendId s_Id{RefBackendId()};
diff --git a/src/backends/reference/RefRegistryInitializer.cpp b/src/backends/reference/RefRegistryInitializer.cpp
new file mode 100644
index 0000000..427c7f0
--- /dev/null
+++ b/src/backends/reference/RefRegistryInitializer.cpp
@@ -0,0 +1,25 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "RefBackend.hpp"
+
+#include <backendsCommon/BackendRegistry.hpp>
+
+namespace
+{
+
+using namespace armnn;
+
+static BackendRegistry::StaticRegistryInitializer g_RegisterHelper
+{
+    BackendRegistryInstance(),
+    RefBackend::GetIdStatic(),
+    []()
+    {
+        return IBackendInternalUniquePtr(new RefBackend);
+    }
+};
+
+} // Anonymous namespace
diff --git a/src/backends/reference/backend.mk b/src/backends/reference/backend.mk
index 6e1360a..b212995 100644
--- a/src/backends/reference/backend.mk
+++ b/src/backends/reference/backend.mk
@@ -13,6 +13,7 @@
         RefMemoryManager.cpp \
         RefTensorHandle.cpp \
         RefWorkloadFactory.cpp \
+        RefRegistryInitializer.cpp \
         workloads/Activation.cpp \
         workloads/BatchNormImpl.cpp \
         workloads/BatchToSpaceNd.cpp \