IVGCVSW-1898 : Ref backend folder structure

* Reference backend is renamed to backends/reference as per
  https://confluence.arm.com/display/MLENG/Pluggable+backends

Change-Id: I27a13c274eb60995dfb459e3c49c0e2f60bcd32c
diff --git a/src/armnn/LayerSupport.cpp b/src/armnn/LayerSupport.cpp
index 9bbe179..85a03f2 100644
--- a/src/armnn/LayerSupport.cpp
+++ b/src/armnn/LayerSupport.cpp
@@ -2,11 +2,11 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "armnn/LayerSupport.hpp"
+#include <armnn/LayerSupport.hpp>
 
-#include "backends/RefLayerSupport.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/reference/RefLayerSupport.hpp>
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/ClLayerSupport.hpp>
 
 #include <boost/assert.hpp>
 
diff --git a/src/armnn/LoadedNetwork.hpp b/src/armnn/LoadedNetwork.hpp
index 9e49ced..43faa4e 100644
--- a/src/armnn/LoadedNetwork.hpp
+++ b/src/armnn/LoadedNetwork.hpp
@@ -4,16 +4,18 @@
 //
 #pragma once
 
-#include "armnn/Tensor.hpp"
-#include "armnn/Types.hpp"
+#include <armnn/Tensor.hpp>
+#include <armnn/Types.hpp>
+
 #include "Network.hpp"
 #include "LayerFwd.hpp"
 #include "Profiling.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/NeonWorkloadFactory.hpp"
-#include "backends/ClWorkloadFactory.hpp"
-#include "backends/Workload.hpp"
-#include "backends/WorkloadFactory.hpp"
+
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/NeonWorkloadFactory.hpp>
+#include <backends/ClWorkloadFactory.hpp>
+#include <backends/Workload.hpp>
+#include <backends/WorkloadFactory.hpp>
 
 namespace cl
 {
diff --git a/src/armnn/test/CreateWorkloadClNeon.hpp b/src/armnn/test/CreateWorkloadClNeon.hpp
index 295132d..de9a795 100644
--- a/src/armnn/test/CreateWorkloadClNeon.hpp
+++ b/src/armnn/test/CreateWorkloadClNeon.hpp
@@ -5,7 +5,7 @@
 #pragma once
 
 #include "CreateWorkload.hpp"
-#include "backends/RefWorkloadFactory.hpp"
+#include <backends/reference/RefWorkloadFactory.hpp>
 
 #if ARMCOMPUTECL_ENABLED
 #include "backends/ClTensorHandle.hpp"
diff --git a/src/armnn/test/NetworkTests.cpp b/src/armnn/test/NetworkTests.cpp
index 0bb394f..0fff76e 100644
--- a/src/armnn/test/NetworkTests.cpp
+++ b/src/armnn/test/NetworkTests.cpp
@@ -4,12 +4,12 @@
 //
 #include <boost/test/unit_test.hpp>
 
-#include "armnn/ArmNN.hpp"
-#include "Network.hpp"
-#include "Graph.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/ClWorkloadFactory.hpp"
-#include "backends/NeonWorkloadFactory.hpp"
+#include <armnn/ArmNN.hpp>
+#include <Network.hpp>
+#include <Graph.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/ClWorkloadFactory.hpp>
+#include <backends/NeonWorkloadFactory.hpp>
 
 #include "GraphUtils.hpp"
 
diff --git a/src/armnn/test/UnitTests.hpp b/src/armnn/test/UnitTests.hpp
index 94f531c..e8c5908 100644
--- a/src/armnn/test/UnitTests.hpp
+++ b/src/armnn/test/UnitTests.hpp
@@ -4,10 +4,10 @@
 //
 #pragma once
 
-#include "Logging.hpp"
-#include "armnn/Utils.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/test/LayerTests.hpp"
+#include <Logging.hpp>
+#include <armnn/Utils.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/test/LayerTests.hpp>
 #include "TensorHelpers.hpp"
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt
index 5503a9d..39d6e8d 100644
--- a/src/backends/CMakeLists.txt
+++ b/src/backends/CMakeLists.txt
@@ -25,11 +25,6 @@
     NeonWorkloads.hpp
     OutputHandler.cpp
     OutputHandler.hpp
-    RefLayerSupport.cpp
-    RefLayerSupport.hpp
-    RefWorkloadFactory.cpp
-    RefWorkloadFactory.hpp
-    RefWorkloads.hpp
     StringMapping.cpp
     StringMapping.hpp
     WorkloadDataCollector.hpp
diff --git a/src/backends/ClWorkloads/backend.mk b/src/backends/ClWorkloads/backend.mk
index 1239408..9a20961 100644
--- a/src/backends/ClWorkloads/backend.mk
+++ b/src/backends/ClWorkloads/backend.mk
@@ -3,6 +3,10 @@
 # SPDX-License-Identifier: MIT
 #
 
+# BACKEND_SOURCES contains the list of files to be included
+# in the Android build and it is picked up by the Android.mk
+# file in the root of ArmNN
+
 BACKEND_SOURCES := \
         ClActivationFloatWorkload.cpp \
         ClActivationUint8Workload.cpp \
diff --git a/src/backends/NeonWorkloads/backend.mk b/src/backends/NeonWorkloads/backend.mk
index 4c7fbe6..7b7f87b 100644
--- a/src/backends/NeonWorkloads/backend.mk
+++ b/src/backends/NeonWorkloads/backend.mk
@@ -3,6 +3,10 @@
 # SPDX-License-Identifier: MIT
 #
 
+# BACKEND_SOURCES contains the list of files to be included
+# in the Android build and it is picked up by the Android.mk
+# file in the root of ArmNN
+
 BACKEND_SOURCES := \
         NeonActivationFloatWorkload.cpp \
         NeonActivationUint8Workload.cpp \
diff --git a/src/backends/RefWorkloads.hpp b/src/backends/RefWorkloads.hpp
deleted file mode 100644
index 746a59e..0000000
--- a/src/backends/RefWorkloads.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "backends/RefWorkloads/RefConstantUint8Workload.hpp"
-#include "backends/RefWorkloads/ArithmeticFunction.hpp"
-#include "backends/RefWorkloads/RefArithmeticWorkload.hpp"
-#include "backends/RefWorkloads/ConvImpl.hpp"
-#include "backends/RefWorkloads/RefBaseConstantWorkload.hpp"
-#include "backends/RefWorkloads/RefConvolution2dUint8Workload.hpp"
-#include "backends/RefWorkloads/RefSplitterUint8Workload.hpp"
-#include "backends/RefWorkloads/RefResizeBilinearUint8Workload.hpp"
-#include "backends/RefWorkloads/RefL2NormalizationFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefActivationUint8Workload.hpp"
-#include "backends/RefWorkloads/RefPooling2dFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefWorkloadUtils.hpp"
-#include "backends/RefWorkloads/RefMergerUint8Workload.hpp"
-#include "backends/RefWorkloads/RefFullyConnectedFloat32Workload.hpp"
-#include "backends/RefWorkloads/Softmax.hpp"
-#include "backends/RefWorkloads/RefMergerFloat32Workload.hpp"
-#include "backends/RefWorkloads/TensorBufferArrayView.hpp"
-#include "backends/RefWorkloads/RefBatchNormalizationFloat32Workload.hpp"
-#include "backends/RefWorkloads/Splitter.hpp"
-#include "backends/RefWorkloads/RefFullyConnectedUint8Workload.hpp"
-#include "backends/RefWorkloads/RefReshapeFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.hpp"
-#include "backends/RefWorkloads/FullyConnected.hpp"
-#include "backends/RefWorkloads/RefFloorFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefSoftmaxFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefSoftmaxUint8Workload.hpp"
-#include "backends/RefWorkloads/RefReshapeUint8Workload.hpp"
-#include "backends/RefWorkloads/RefResizeBilinearFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefBatchNormalizationUint8Workload.hpp"
-#include "backends/RefWorkloads/ResizeBilinear.hpp"
-#include "backends/RefWorkloads/RefNormalizationFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefPooling2dUint8Workload.hpp"
-#include "backends/RefWorkloads/BatchNormImpl.hpp"
-#include "backends/RefWorkloads/Activation.hpp"
-#include "backends/RefWorkloads/Merger.hpp"
-#include "backends/RefWorkloads/RefSplitterFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefConstantFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefActivationFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefConvolution2dFloat32Workload.hpp"
-#include "backends/RefWorkloads/Pooling2d.hpp"
-#include "backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefPermuteWorkload.hpp"
-#include "backends/RefWorkloads/RefLstmFloat32Workload.hpp"
-#include "backends/RefWorkloads/RefConvertFp16ToFp32Workload.hpp"
-#include "backends/RefWorkloads/RefConvertFp32ToFp16Workload.hpp"
diff --git a/src/backends/RefWorkloads/backend.cmake b/src/backends/RefWorkloads/backend.cmake
deleted file mode 100644
index 6fd09eb..0000000
--- a/src/backends/RefWorkloads/backend.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Copyright © 2017 Arm Ltd. All rights reserved.
-# SPDX-License-Identifier: MIT
-#
-
-add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/RefWorkloads)
-list(APPEND armnnLibraries armnnRefBackend)
diff --git a/src/backends/RefWorkloads/backend.mk b/src/backends/RefWorkloads/backend.mk
deleted file mode 100644
index 8cde8c9..0000000
--- a/src/backends/RefWorkloads/backend.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# Copyright © 2017 ARM Ltd. All rights reserved.
-# SPDX-License-Identifier: MIT
-#
-
-BACKEND_SOURCES := \
-        FullyConnected.cpp \
-        RefMergerUint8Workload.cpp \
-        RefResizeBilinearUint8Workload.cpp \
-        RefFullyConnectedFloat32Workload.cpp \
-        RefSoftmaxFloat32Workload.cpp \
-        RefActivationFloat32Workload.cpp \
-        RefBatchNormalizationUint8Workload.cpp \
-        RefBaseConstantWorkload.cpp \
-        RefResizeBilinearFloat32Workload.cpp \
-        RefBatchNormalizationFloat32Workload.cpp \
-        Broadcast.cpp \
-        ArithmeticFunction.cpp \
-        RefArithmeticWorkload.cpp \
-        RefFakeQuantizationFloat32Workload.cpp \
-        ResizeBilinear.cpp \
-        RefSoftmaxUint8Workload.cpp \
-        RefDepthwiseConvolution2dFloat32Workload.cpp \
-        RefPooling2dUint8Workload.cpp \
-        RefFloorFloat32Workload.cpp \
-        ConvImpl.cpp \
-        Activation.cpp \
-        RefReshapeUint8Workload.cpp \
-        RefL2NormalizationFloat32Workload.cpp \
-        RefLstmFloat32Workload.cpp \
-        RefConvolution2dFloat32Workload.cpp \
-        RefConvolution2dUint8Workload.cpp \
-        RefSplitterFloat32Workload.cpp \
-        RefActivationUint8Workload.cpp \
-        RefSplitterUint8Workload.cpp \
-        RefPooling2dFloat32Workload.cpp \
-        RefReshapeFloat32Workload.cpp \
-        RefNormalizationFloat32Workload.cpp \
-        Softmax.cpp \
-        RefDepthwiseConvolution2dUint8Workload.cpp \
-        RefConstantUint8Workload.cpp \
-        RefConstantFloat32Workload.cpp \
-        Pooling2d.cpp \
-        RefMergerFloat32Workload.cpp \
-        RefFullyConnectedUint8Workload.cpp \
-        RefPermuteWorkload.cpp \
-        RefConvertFp16ToFp32Workload.cpp \
-        RefConvertFp32ToFp16Workload.cpp
-
diff --git a/src/backends/WorkloadFactory.cpp b/src/backends/WorkloadFactory.cpp
index 2666e7f..8b3ab83 100644
--- a/src/backends/WorkloadFactory.cpp
+++ b/src/backends/WorkloadFactory.cpp
@@ -3,14 +3,14 @@
 // SPDX-License-Identifier: MIT
 //
 #include "WorkloadFactory.hpp"
-#include "RefWorkloadFactory.hpp"
+#include <backends/reference/RefWorkloadFactory.hpp>
 #include "NeonWorkloadFactory.hpp"
 #include "ClWorkloadFactory.hpp"
 
-#include "armnn/Types.hpp"
-#include "armnn/LayerSupport.hpp"
-#include "Layer.hpp"
-#include "LayersFwd.hpp"
+#include <armnn/Types.hpp>
+#include <armnn/LayerSupport.hpp>
+#include <Layer.hpp>
+#include <LayersFwd.hpp>
 #include "CpuTensorHandle.hpp"
 
 #include <boost/cast.hpp>
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
new file mode 100644
index 0000000..526baaa
--- /dev/null
+++ b/src/backends/reference/CMakeLists.txt
@@ -0,0 +1,19 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+list(APPEND armnnRefBackend_sources
+    RefLayerSupport.cpp
+    RefLayerSupport.hpp
+    RefWorkloadFactory.cpp
+    RefWorkloadFactory.hpp
+)
+
+add_library(armnnRefBackend STATIC ${armnnRefBackend_sources})
+target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+
+add_subdirectory(workloads test)
+
diff --git a/src/backends/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
similarity index 100%
rename from src/backends/RefLayerSupport.cpp
rename to src/backends/reference/RefLayerSupport.cpp
diff --git a/src/backends/RefLayerSupport.hpp b/src/backends/reference/RefLayerSupport.hpp
similarity index 100%
rename from src/backends/RefLayerSupport.hpp
rename to src/backends/reference/RefLayerSupport.hpp
diff --git a/src/backends/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp
similarity index 98%
rename from src/backends/RefWorkloadFactory.cpp
rename to src/backends/reference/RefWorkloadFactory.cpp
index 689adb6..5cefd1b 100644
--- a/src/backends/RefWorkloadFactory.cpp
+++ b/src/backends/reference/RefWorkloadFactory.cpp
@@ -2,12 +2,12 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "CpuTensorHandle.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/MemCopyWorkload.hpp>
+#include <backends/MakeWorkloadHelper.hpp>
 #include "RefWorkloadFactory.hpp"
-#include "RefWorkloads.hpp"
+#include "workloads/RefWorkloads.hpp"
 #include "Layer.hpp"
-#include "MemCopyWorkload.hpp"
-#include "MakeWorkloadHelper.hpp"
 
 #include <boost/log/trivial.hpp>
 
diff --git a/src/backends/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp
similarity index 98%
rename from src/backends/RefWorkloadFactory.hpp
rename to src/backends/reference/RefWorkloadFactory.hpp
index da0ca9b..1a9227a 100644
--- a/src/backends/RefWorkloadFactory.hpp
+++ b/src/backends/reference/RefWorkloadFactory.hpp
@@ -4,8 +4,8 @@
 //
 #pragma once
 
-#include "WorkloadFactory.hpp"
-#include "OutputHandler.hpp"
+#include <backends/WorkloadFactory.hpp>
+#include <backends/OutputHandler.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 #include <boost/optional.hpp>
diff --git a/src/backends/reference/backend.cmake b/src/backends/reference/backend.cmake
new file mode 100644
index 0000000..95e72a4
--- /dev/null
+++ b/src/backends/reference/backend.cmake
@@ -0,0 +1,7 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/reference)
+list(APPEND armnnLibraries armnnRefBackend armnnRefBackendWorkloads)
diff --git a/src/backends/reference/backend.mk b/src/backends/reference/backend.mk
new file mode 100644
index 0000000..23dab11
--- /dev/null
+++ b/src/backends/reference/backend.mk
@@ -0,0 +1,54 @@
+#
+# Copyright © 2017 ARM Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+# BACKEND_SOURCES contains the list of files to be included
+# in the Android build and it is picked up by the Android.mk
+# file in the root of ArmNN
+
+BACKEND_SOURCES := \
+        RefLayerSupport.cpp \
+        RefWorkloadFactory.cpp \
+        workloads/Activation.cpp \
+        workloads/ArithmeticFunction.cpp \
+        workloads/Broadcast.cpp \
+        workloads/ConvImpl.cpp \
+        workloads/FullyConnected.cpp \
+        workloads/Pooling2d.cpp \
+        workloads/RefActivationFloat32Workload.cpp \
+        workloads/RefActivationUint8Workload.cpp \
+        workloads/RefArithmeticWorkload.cpp \
+        workloads/RefBaseConstantWorkload.cpp \
+        workloads/RefBatchNormalizationFloat32Workload.cpp \
+        workloads/RefBatchNormalizationUint8Workload.cpp \
+        workloads/RefConstantFloat32Workload.cpp \
+        workloads/RefConstantUint8Workload.cpp \
+        workloads/RefConvertFp16ToFp32Workload.cpp \
+        workloads/RefConvertFp32ToFp16Workload.cpp \
+        workloads/RefConvolution2dFloat32Workload.cpp \
+        workloads/RefConvolution2dUint8Workload.cpp \
+        workloads/RefDepthwiseConvolution2dFloat32Workload.cpp \
+        workloads/RefDepthwiseConvolution2dUint8Workload.cpp \
+        workloads/RefFakeQuantizationFloat32Workload.cpp \
+        workloads/RefFloorFloat32Workload.cpp \
+        workloads/RefFullyConnectedFloat32Workload.cpp \
+        workloads/RefFullyConnectedUint8Workload.cpp \
+        workloads/RefL2NormalizationFloat32Workload.cpp \
+        workloads/RefLstmFloat32Workload.cpp \
+        workloads/RefMergerFloat32Workload.cpp \
+        workloads/RefMergerUint8Workload.cpp \
+        workloads/RefNormalizationFloat32Workload.cpp \
+        workloads/RefPermuteWorkload.cpp \
+        workloads/RefPooling2dFloat32Workload.cpp \
+        workloads/RefPooling2dUint8Workload.cpp \
+        workloads/RefReshapeFloat32Workload.cpp \
+        workloads/RefReshapeUint8Workload.cpp \
+        workloads/RefResizeBilinearFloat32Workload.cpp \
+        workloads/RefResizeBilinearUint8Workload.cpp \
+        workloads/RefSoftmaxFloat32Workload.cpp \
+        workloads/RefSoftmaxUint8Workload.cpp \
+        workloads/RefSplitterFloat32Workload.cpp \
+        workloads/RefSplitterUint8Workload.cpp \
+        workloads/ResizeBilinear.cpp \
+        workloads/Softmax.cpp
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
new file mode 100644
index 0000000..f41a074
--- /dev/null
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -0,0 +1,4 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/backends/RefWorkloads/Activation.cpp b/src/backends/reference/workloads/Activation.cpp
similarity index 100%
rename from src/backends/RefWorkloads/Activation.cpp
rename to src/backends/reference/workloads/Activation.cpp
diff --git a/src/backends/RefWorkloads/Activation.hpp b/src/backends/reference/workloads/Activation.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Activation.hpp
rename to src/backends/reference/workloads/Activation.hpp
diff --git a/src/backends/RefWorkloads/ArithmeticFunction.cpp b/src/backends/reference/workloads/ArithmeticFunction.cpp
similarity index 100%
rename from src/backends/RefWorkloads/ArithmeticFunction.cpp
rename to src/backends/reference/workloads/ArithmeticFunction.cpp
diff --git a/src/backends/RefWorkloads/ArithmeticFunction.hpp b/src/backends/reference/workloads/ArithmeticFunction.hpp
similarity index 100%
rename from src/backends/RefWorkloads/ArithmeticFunction.hpp
rename to src/backends/reference/workloads/ArithmeticFunction.hpp
diff --git a/src/backends/RefWorkloads/BatchNormImpl.hpp b/src/backends/reference/workloads/BatchNormImpl.hpp
similarity index 100%
rename from src/backends/RefWorkloads/BatchNormImpl.hpp
rename to src/backends/reference/workloads/BatchNormImpl.hpp
diff --git a/src/backends/RefWorkloads/Broadcast.cpp b/src/backends/reference/workloads/Broadcast.cpp
similarity index 100%
rename from src/backends/RefWorkloads/Broadcast.cpp
rename to src/backends/reference/workloads/Broadcast.cpp
diff --git a/src/backends/RefWorkloads/Broadcast.hpp b/src/backends/reference/workloads/Broadcast.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Broadcast.hpp
rename to src/backends/reference/workloads/Broadcast.hpp
diff --git a/src/backends/RefWorkloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt
similarity index 87%
rename from src/backends/RefWorkloads/CMakeLists.txt
rename to src/backends/reference/workloads/CMakeLists.txt
index 0f4bfe1..7343b70 100644
--- a/src/backends/RefWorkloads/CMakeLists.txt
+++ b/src/backends/reference/workloads/CMakeLists.txt
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 #
 
-list(APPEND armnnRefBackend_sources
+list(APPEND armnnRefBackendWorkloads_sources
     Activation.cpp
     Activation.hpp
     ArithmeticFunction.cpp
@@ -86,6 +86,7 @@
     RefSplitterFloat32Workload.hpp
     RefSplitterUint8Workload.cpp
     RefSplitterUint8Workload.hpp
+    RefWorkloads.hpp
     RefWorkloadUtils.hpp
     ResizeBilinear.cpp
     ResizeBilinear.hpp
@@ -95,7 +96,7 @@
     TensorBufferArrayView.hpp
 )
 
-add_library(armnnRefBackend STATIC ${armnnRefBackend_sources})
-target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
-target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+add_library(armnnRefBackendWorkloads STATIC ${armnnRefBackendWorkloads_sources})
+target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/RefWorkloads/ConvImpl.cpp b/src/backends/reference/workloads/ConvImpl.cpp
similarity index 100%
rename from src/backends/RefWorkloads/ConvImpl.cpp
rename to src/backends/reference/workloads/ConvImpl.cpp
diff --git a/src/backends/RefWorkloads/ConvImpl.hpp b/src/backends/reference/workloads/ConvImpl.hpp
similarity index 100%
rename from src/backends/RefWorkloads/ConvImpl.hpp
rename to src/backends/reference/workloads/ConvImpl.hpp
diff --git a/src/backends/RefWorkloads/FullyConnected.cpp b/src/backends/reference/workloads/FullyConnected.cpp
similarity index 100%
rename from src/backends/RefWorkloads/FullyConnected.cpp
rename to src/backends/reference/workloads/FullyConnected.cpp
diff --git a/src/backends/RefWorkloads/FullyConnected.hpp b/src/backends/reference/workloads/FullyConnected.hpp
similarity index 100%
rename from src/backends/RefWorkloads/FullyConnected.hpp
rename to src/backends/reference/workloads/FullyConnected.hpp
diff --git a/src/backends/RefWorkloads/Merger.hpp b/src/backends/reference/workloads/Merger.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Merger.hpp
rename to src/backends/reference/workloads/Merger.hpp
diff --git a/src/backends/RefWorkloads/Pooling2d.cpp b/src/backends/reference/workloads/Pooling2d.cpp
similarity index 100%
rename from src/backends/RefWorkloads/Pooling2d.cpp
rename to src/backends/reference/workloads/Pooling2d.cpp
diff --git a/src/backends/RefWorkloads/Pooling2d.hpp b/src/backends/reference/workloads/Pooling2d.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Pooling2d.hpp
rename to src/backends/reference/workloads/Pooling2d.hpp
diff --git a/src/backends/RefWorkloads/RefActivationFloat32Workload.cpp b/src/backends/reference/workloads/RefActivationFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefActivationFloat32Workload.cpp
rename to src/backends/reference/workloads/RefActivationFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefActivationFloat32Workload.hpp b/src/backends/reference/workloads/RefActivationFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefActivationFloat32Workload.hpp
rename to src/backends/reference/workloads/RefActivationFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefActivationUint8Workload.cpp b/src/backends/reference/workloads/RefActivationUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefActivationUint8Workload.cpp
rename to src/backends/reference/workloads/RefActivationUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefActivationUint8Workload.hpp b/src/backends/reference/workloads/RefActivationUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefActivationUint8Workload.hpp
rename to src/backends/reference/workloads/RefActivationUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefArithmeticWorkload.cpp b/src/backends/reference/workloads/RefArithmeticWorkload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefArithmeticWorkload.cpp
rename to src/backends/reference/workloads/RefArithmeticWorkload.cpp
diff --git a/src/backends/RefWorkloads/RefArithmeticWorkload.hpp b/src/backends/reference/workloads/RefArithmeticWorkload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefArithmeticWorkload.hpp
rename to src/backends/reference/workloads/RefArithmeticWorkload.hpp
diff --git a/src/backends/RefWorkloads/RefBaseConstantWorkload.cpp b/src/backends/reference/workloads/RefBaseConstantWorkload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBaseConstantWorkload.cpp
rename to src/backends/reference/workloads/RefBaseConstantWorkload.cpp
diff --git a/src/backends/RefWorkloads/RefBaseConstantWorkload.hpp b/src/backends/reference/workloads/RefBaseConstantWorkload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBaseConstantWorkload.hpp
rename to src/backends/reference/workloads/RefBaseConstantWorkload.hpp
diff --git a/src/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.cpp b/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.cpp
rename to src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.hpp
rename to src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefBatchNormalizationUint8Workload.cpp b/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBatchNormalizationUint8Workload.cpp
rename to src/backends/reference/workloads/RefBatchNormalizationUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefBatchNormalizationUint8Workload.hpp b/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefBatchNormalizationUint8Workload.hpp
rename to src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConstantFloat32Workload.cpp b/src/backends/reference/workloads/RefConstantFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConstantFloat32Workload.cpp
rename to src/backends/reference/workloads/RefConstantFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConstantFloat32Workload.hpp b/src/backends/reference/workloads/RefConstantFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConstantFloat32Workload.hpp
rename to src/backends/reference/workloads/RefConstantFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConstantUint8Workload.cpp b/src/backends/reference/workloads/RefConstantUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConstantUint8Workload.cpp
rename to src/backends/reference/workloads/RefConstantUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConstantUint8Workload.hpp b/src/backends/reference/workloads/RefConstantUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConstantUint8Workload.hpp
rename to src/backends/reference/workloads/RefConstantUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConvertFp16ToFp32Workload.cpp b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvertFp16ToFp32Workload.cpp
rename to src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConvertFp16ToFp32Workload.hpp b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvertFp16ToFp32Workload.hpp
rename to src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConvertFp32ToFp16Workload.cpp b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvertFp32ToFp16Workload.cpp
rename to src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConvertFp32ToFp16Workload.hpp b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvertFp32ToFp16Workload.hpp
rename to src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConvolution2dFloat32Workload.cpp b/src/backends/reference/workloads/RefConvolution2dFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvolution2dFloat32Workload.cpp
rename to src/backends/reference/workloads/RefConvolution2dFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConvolution2dFloat32Workload.hpp b/src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvolution2dFloat32Workload.hpp
rename to src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefConvolution2dUint8Workload.cpp b/src/backends/reference/workloads/RefConvolution2dUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvolution2dUint8Workload.cpp
rename to src/backends/reference/workloads/RefConvolution2dUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefConvolution2dUint8Workload.hpp b/src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefConvolution2dUint8Workload.hpp
rename to src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.cpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.cpp
rename to src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.hpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.hpp
rename to src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.cpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.cpp
rename to src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.hpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.hpp
rename to src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.cpp b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.cpp
rename to src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp
rename to src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefFloorFloat32Workload.cpp b/src/backends/reference/workloads/RefFloorFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFloorFloat32Workload.cpp
rename to src/backends/reference/workloads/RefFloorFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefFloorFloat32Workload.hpp b/src/backends/reference/workloads/RefFloorFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFloorFloat32Workload.hpp
rename to src/backends/reference/workloads/RefFloorFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefFullyConnectedFloat32Workload.cpp b/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFullyConnectedFloat32Workload.cpp
rename to src/backends/reference/workloads/RefFullyConnectedFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefFullyConnectedFloat32Workload.hpp b/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFullyConnectedFloat32Workload.hpp
rename to src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefFullyConnectedUint8Workload.cpp b/src/backends/reference/workloads/RefFullyConnectedUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFullyConnectedUint8Workload.cpp
rename to src/backends/reference/workloads/RefFullyConnectedUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefFullyConnectedUint8Workload.hpp b/src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefFullyConnectedUint8Workload.hpp
rename to src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefL2NormalizationFloat32Workload.cpp b/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefL2NormalizationFloat32Workload.cpp
rename to src/backends/reference/workloads/RefL2NormalizationFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefL2NormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefL2NormalizationFloat32Workload.hpp
rename to src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefLstmFloat32Workload.cpp b/src/backends/reference/workloads/RefLstmFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefLstmFloat32Workload.cpp
rename to src/backends/reference/workloads/RefLstmFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefLstmFloat32Workload.hpp b/src/backends/reference/workloads/RefLstmFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefLstmFloat32Workload.hpp
rename to src/backends/reference/workloads/RefLstmFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefMergerFloat32Workload.cpp b/src/backends/reference/workloads/RefMergerFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefMergerFloat32Workload.cpp
rename to src/backends/reference/workloads/RefMergerFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefMergerFloat32Workload.hpp b/src/backends/reference/workloads/RefMergerFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefMergerFloat32Workload.hpp
rename to src/backends/reference/workloads/RefMergerFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefMergerUint8Workload.cpp b/src/backends/reference/workloads/RefMergerUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefMergerUint8Workload.cpp
rename to src/backends/reference/workloads/RefMergerUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefMergerUint8Workload.hpp b/src/backends/reference/workloads/RefMergerUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefMergerUint8Workload.hpp
rename to src/backends/reference/workloads/RefMergerUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefNormalizationFloat32Workload.cpp b/src/backends/reference/workloads/RefNormalizationFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefNormalizationFloat32Workload.cpp
rename to src/backends/reference/workloads/RefNormalizationFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefNormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefNormalizationFloat32Workload.hpp
rename to src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefPermuteWorkload.cpp b/src/backends/reference/workloads/RefPermuteWorkload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPermuteWorkload.cpp
rename to src/backends/reference/workloads/RefPermuteWorkload.cpp
diff --git a/src/backends/RefWorkloads/RefPermuteWorkload.hpp b/src/backends/reference/workloads/RefPermuteWorkload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPermuteWorkload.hpp
rename to src/backends/reference/workloads/RefPermuteWorkload.hpp
diff --git a/src/backends/RefWorkloads/RefPooling2dFloat32Workload.cpp b/src/backends/reference/workloads/RefPooling2dFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPooling2dFloat32Workload.cpp
rename to src/backends/reference/workloads/RefPooling2dFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefPooling2dFloat32Workload.hpp b/src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPooling2dFloat32Workload.hpp
rename to src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefPooling2dUint8Workload.cpp b/src/backends/reference/workloads/RefPooling2dUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPooling2dUint8Workload.cpp
rename to src/backends/reference/workloads/RefPooling2dUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefPooling2dUint8Workload.hpp b/src/backends/reference/workloads/RefPooling2dUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefPooling2dUint8Workload.hpp
rename to src/backends/reference/workloads/RefPooling2dUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefReshapeFloat32Workload.cpp b/src/backends/reference/workloads/RefReshapeFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefReshapeFloat32Workload.cpp
rename to src/backends/reference/workloads/RefReshapeFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefReshapeFloat32Workload.hpp b/src/backends/reference/workloads/RefReshapeFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefReshapeFloat32Workload.hpp
rename to src/backends/reference/workloads/RefReshapeFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefReshapeUint8Workload.cpp b/src/backends/reference/workloads/RefReshapeUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefReshapeUint8Workload.cpp
rename to src/backends/reference/workloads/RefReshapeUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefReshapeUint8Workload.hpp b/src/backends/reference/workloads/RefReshapeUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefReshapeUint8Workload.hpp
rename to src/backends/reference/workloads/RefReshapeUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefResizeBilinearFloat32Workload.cpp b/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefResizeBilinearFloat32Workload.cpp
rename to src/backends/reference/workloads/RefResizeBilinearFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefResizeBilinearFloat32Workload.hpp b/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefResizeBilinearFloat32Workload.hpp
rename to src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefResizeBilinearUint8Workload.cpp b/src/backends/reference/workloads/RefResizeBilinearUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefResizeBilinearUint8Workload.cpp
rename to src/backends/reference/workloads/RefResizeBilinearUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefResizeBilinearUint8Workload.hpp b/src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefResizeBilinearUint8Workload.hpp
rename to src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefSoftmaxFloat32Workload.cpp b/src/backends/reference/workloads/RefSoftmaxFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSoftmaxFloat32Workload.cpp
rename to src/backends/reference/workloads/RefSoftmaxFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefSoftmaxFloat32Workload.hpp b/src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSoftmaxFloat32Workload.hpp
rename to src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefSoftmaxUint8Workload.cpp b/src/backends/reference/workloads/RefSoftmaxUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSoftmaxUint8Workload.cpp
rename to src/backends/reference/workloads/RefSoftmaxUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefSoftmaxUint8Workload.hpp b/src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSoftmaxUint8Workload.hpp
rename to src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefSplitterFloat32Workload.cpp b/src/backends/reference/workloads/RefSplitterFloat32Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSplitterFloat32Workload.cpp
rename to src/backends/reference/workloads/RefSplitterFloat32Workload.cpp
diff --git a/src/backends/RefWorkloads/RefSplitterFloat32Workload.hpp b/src/backends/reference/workloads/RefSplitterFloat32Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSplitterFloat32Workload.hpp
rename to src/backends/reference/workloads/RefSplitterFloat32Workload.hpp
diff --git a/src/backends/RefWorkloads/RefSplitterUint8Workload.cpp b/src/backends/reference/workloads/RefSplitterUint8Workload.cpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSplitterUint8Workload.cpp
rename to src/backends/reference/workloads/RefSplitterUint8Workload.cpp
diff --git a/src/backends/RefWorkloads/RefSplitterUint8Workload.hpp b/src/backends/reference/workloads/RefSplitterUint8Workload.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefSplitterUint8Workload.hpp
rename to src/backends/reference/workloads/RefSplitterUint8Workload.hpp
diff --git a/src/backends/RefWorkloads/RefWorkloadUtils.hpp b/src/backends/reference/workloads/RefWorkloadUtils.hpp
similarity index 100%
rename from src/backends/RefWorkloads/RefWorkloadUtils.hpp
rename to src/backends/reference/workloads/RefWorkloadUtils.hpp
diff --git a/src/backends/reference/workloads/RefWorkloads.hpp b/src/backends/reference/workloads/RefWorkloads.hpp
new file mode 100644
index 0000000..e5c6e1e
--- /dev/null
+++ b/src/backends/reference/workloads/RefWorkloads.hpp
@@ -0,0 +1,53 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include "RefConstantUint8Workload.hpp"
+#include "ArithmeticFunction.hpp"
+#include "RefArithmeticWorkload.hpp"
+#include "ConvImpl.hpp"
+#include "RefBaseConstantWorkload.hpp"
+#include "RefConvolution2dUint8Workload.hpp"
+#include "RefSplitterUint8Workload.hpp"
+#include "RefResizeBilinearUint8Workload.hpp"
+#include "RefL2NormalizationFloat32Workload.hpp"
+#include "RefActivationUint8Workload.hpp"
+#include "RefPooling2dFloat32Workload.hpp"
+#include "RefWorkloadUtils.hpp"
+#include "RefMergerUint8Workload.hpp"
+#include "RefFullyConnectedFloat32Workload.hpp"
+#include "Softmax.hpp"
+#include "RefMergerFloat32Workload.hpp"
+#include "TensorBufferArrayView.hpp"
+#include "RefBatchNormalizationFloat32Workload.hpp"
+#include "Splitter.hpp"
+#include "RefFullyConnectedUint8Workload.hpp"
+#include "RefReshapeFloat32Workload.hpp"
+#include "RefDepthwiseConvolution2dUint8Workload.hpp"
+#include "FullyConnected.hpp"
+#include "RefFloorFloat32Workload.hpp"
+#include "RefSoftmaxFloat32Workload.hpp"
+#include "RefSoftmaxUint8Workload.hpp"
+#include "RefReshapeUint8Workload.hpp"
+#include "RefResizeBilinearFloat32Workload.hpp"
+#include "RefBatchNormalizationUint8Workload.hpp"
+#include "ResizeBilinear.hpp"
+#include "RefNormalizationFloat32Workload.hpp"
+#include "RefDepthwiseConvolution2dFloat32Workload.hpp"
+#include "RefPooling2dUint8Workload.hpp"
+#include "BatchNormImpl.hpp"
+#include "Activation.hpp"
+#include "Merger.hpp"
+#include "RefSplitterFloat32Workload.hpp"
+#include "RefConstantFloat32Workload.hpp"
+#include "RefActivationFloat32Workload.hpp"
+#include "RefConvolution2dFloat32Workload.hpp"
+#include "Pooling2d.hpp"
+#include "RefFakeQuantizationFloat32Workload.hpp"
+#include "RefPermuteWorkload.hpp"
+#include "RefLstmFloat32Workload.hpp"
+#include "RefConvertFp16ToFp32Workload.hpp"
+#include "RefConvertFp32ToFp16Workload.hpp"
diff --git a/src/backends/RefWorkloads/ResizeBilinear.cpp b/src/backends/reference/workloads/ResizeBilinear.cpp
similarity index 100%
rename from src/backends/RefWorkloads/ResizeBilinear.cpp
rename to src/backends/reference/workloads/ResizeBilinear.cpp
diff --git a/src/backends/RefWorkloads/ResizeBilinear.hpp b/src/backends/reference/workloads/ResizeBilinear.hpp
similarity index 100%
rename from src/backends/RefWorkloads/ResizeBilinear.hpp
rename to src/backends/reference/workloads/ResizeBilinear.hpp
diff --git a/src/backends/RefWorkloads/Softmax.cpp b/src/backends/reference/workloads/Softmax.cpp
similarity index 100%
rename from src/backends/RefWorkloads/Softmax.cpp
rename to src/backends/reference/workloads/Softmax.cpp
diff --git a/src/backends/RefWorkloads/Softmax.hpp b/src/backends/reference/workloads/Softmax.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Softmax.hpp
rename to src/backends/reference/workloads/Softmax.hpp
diff --git a/src/backends/RefWorkloads/Splitter.hpp b/src/backends/reference/workloads/Splitter.hpp
similarity index 100%
rename from src/backends/RefWorkloads/Splitter.hpp
rename to src/backends/reference/workloads/Splitter.hpp
diff --git a/src/backends/RefWorkloads/TensorBufferArrayView.hpp b/src/backends/reference/workloads/TensorBufferArrayView.hpp
similarity index 100%
rename from src/backends/RefWorkloads/TensorBufferArrayView.hpp
rename to src/backends/reference/workloads/TensorBufferArrayView.hpp
diff --git a/src/backends/test/ArmComputeCl.cpp b/src/backends/test/ArmComputeCl.cpp
index 9a516b6..5ff94c1 100644
--- a/src/backends/test/ArmComputeCl.cpp
+++ b/src/backends/test/ArmComputeCl.cpp
@@ -6,11 +6,11 @@
 #include "test/TensorHelpers.hpp"
 #include "LayerTests.hpp"
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ClWorkloadFactory.hpp"
-#include "backends/ClWorkloads/ClWorkloadUtils.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/ClWorkloadFactory.hpp>
+#include <backends/ClWorkloads/ClWorkloadUtils.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/ClLayerSupport.hpp>
 #include "ActivationFixture.hpp"
 #include "ClContextControlFixture.hpp"
 
diff --git a/src/backends/test/ArmComputeNeon.cpp b/src/backends/test/ArmComputeNeon.cpp
index bc3b6b5..e8af6b3 100644
--- a/src/backends/test/ArmComputeNeon.cpp
+++ b/src/backends/test/ArmComputeNeon.cpp
@@ -7,11 +7,11 @@
 #include "test/TensorHelpers.hpp"
 #include "LayerTests.hpp"
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/NeonWorkloadFactory.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/test/TensorCopyUtils.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/NeonWorkloadFactory.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/test/TensorCopyUtils.hpp>
 #include "ActivationFixture.hpp"
 
 #include "WorkloadTestUtils.hpp"
diff --git a/src/backends/test/CreateWorkloadCl.cpp b/src/backends/test/CreateWorkloadCl.cpp
index af3192c..39bc259 100644
--- a/src/backends/test/CreateWorkloadCl.cpp
+++ b/src/backends/test/CreateWorkloadCl.cpp
@@ -2,12 +2,12 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "backends/ClWorkloadFactory.hpp"
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/MemCopyWorkload.hpp"
-#include "backends/ClWorkloads/ClWorkloadUtils.hpp"
-#include "backends/ClWorkloads.hpp"
-#include "backends/ClTensorHandle.hpp"
+#include <backends/ClWorkloadFactory.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/MemCopyWorkload.hpp>
+#include <backends/ClWorkloads/ClWorkloadUtils.hpp>
+#include <backends/ClWorkloads.hpp>
+#include <backends/ClTensorHandle.hpp>
 #include "ClContextControlFixture.hpp"
 
 #include "test/CreateWorkloadClNeon.hpp"
diff --git a/src/backends/test/CreateWorkloadRef.cpp b/src/backends/test/CreateWorkloadRef.cpp
index 41419da..9313ee8 100644
--- a/src/backends/test/CreateWorkloadRef.cpp
+++ b/src/backends/test/CreateWorkloadRef.cpp
@@ -2,9 +2,9 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "backends/RefWorkloadFactory.hpp"
-#include "backends/RefWorkloads.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/reference/workloads/RefWorkloads.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 #include "test/CreateWorkload.hpp"
 
diff --git a/src/backends/test/IsLayerSupportedTest.cpp b/src/backends/test/IsLayerSupportedTest.cpp
index 97d3de5..51bf11e 100644
--- a/src/backends/test/IsLayerSupportedTest.cpp
+++ b/src/backends/test/IsLayerSupportedTest.cpp
@@ -7,8 +7,8 @@
 #include "test/TensorHelpers.hpp"
 #include "LayerTests.hpp"
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/RefWorkloadFactory.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
 
 #include <string>
 #include <iostream>
diff --git a/src/backends/test/MemCopyTests.cpp b/src/backends/test/MemCopyTests.cpp
index 7ba5507..4fbe9e7 100644
--- a/src/backends/test/MemCopyTests.cpp
+++ b/src/backends/test/MemCopyTests.cpp
@@ -6,7 +6,7 @@
 #include <boost/multi_array.hpp>
 
 #include <armnn/ArmNN.hpp>
-#include <backends/RefWorkloadFactory.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
 #if ARMCOMPUTECL_ENABLED
 #include <backends/ClWorkloadFactory.hpp>
 #endif
diff --git a/src/backends/test/Reference.cpp b/src/backends/test/Reference.cpp
index 62786a9..97a209d 100644
--- a/src/backends/test/Reference.cpp
+++ b/src/backends/test/Reference.cpp
@@ -7,7 +7,7 @@
 #include "LayerTests.hpp"
 #include "test/TensorHelpers.hpp"
 
-#include "backends/RefWorkloadFactory.hpp"
+#include <backends/reference/RefWorkloadFactory.hpp>
 
 #include "test/UnitTests.hpp"
 
diff --git a/src/backends/test/WorkloadDataValidation.cpp b/src/backends/test/WorkloadDataValidation.cpp
index a5cfbd1..7e3a90f 100644
--- a/src/backends/test/WorkloadDataValidation.cpp
+++ b/src/backends/test/WorkloadDataValidation.cpp
@@ -5,8 +5,8 @@
 #include <boost/test/unit_test.hpp>
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/Workload.hpp>
-#include <backends/RefWorkloads.hpp>
-#include <backends/RefWorkloadFactory.hpp>
+#include <backends/reference/workloads/RefWorkloads.hpp>
+#include <backends/reference/RefWorkloadFactory.hpp>
 
 #include <armnn/Exceptions.hpp>