IVGCVSW-1899 : Neon backend folder structure

armnn:149855

Change-Id: I26e8cf83422a65049386a5ebdb6d0001627aefaa
diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt
index 39d6e8d..f806caa 100644
--- a/src/backends/CMakeLists.txt
+++ b/src/backends/CMakeLists.txt
@@ -18,11 +18,6 @@
     MakeWorkloadHelper.hpp
     MemCopyWorkload.cpp
     MemCopyWorkload.hpp
-    NeonLayerSupport.cpp
-    NeonLayerSupport.hpp
-    NeonWorkloadFactory.cpp
-    NeonWorkloadFactory.hpp
-    NeonWorkloads.hpp
     OutputHandler.cpp
     OutputHandler.hpp
     StringMapping.cpp
@@ -38,15 +33,6 @@
     WorkloadUtils.hpp
 )
 
-if(ARMCOMPUTENEON)
-    # Additionally include source files for ARM Compute NEON backend
-    list(APPEND armnnBackendsCommon_sources
-        NeonWorkloadUtils.cpp
-        NeonWorkloadUtils.hpp
-        NeonTensorHandle.hpp
-    )
-endif()
-
 if(ARMCOMPUTECL)
     # Additionally include source files for ARM Compute OpenCL backend
     list(APPEND armnnBackendsCommon_sources
diff --git a/src/backends/ClTensorHandle.hpp b/src/backends/ClTensorHandle.hpp
index a4e72c1..556e447 100644
--- a/src/backends/ClTensorHandle.hpp
+++ b/src/backends/ClTensorHandle.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include "OutputHandler.hpp"
+#include <backends/OutputHandler.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/CLTensor.h>
diff --git a/src/backends/ClWorkloadFactory.cpp b/src/backends/ClWorkloadFactory.cpp
index 328c221..6aee233 100644
--- a/src/backends/ClWorkloadFactory.cpp
+++ b/src/backends/ClWorkloadFactory.cpp
@@ -4,12 +4,12 @@
 //
 #include "ClWorkloadFactory.hpp"
 
-#include "armnn/Exceptions.hpp"
-#include "armnn/Utils.hpp"
+#include <armnn/Exceptions.hpp>
+#include <armnn/Utils.hpp>
 
 #include <string>
-#include "CpuTensorHandle.hpp"
-#include "Layer.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <Layer.hpp>
 
 #ifdef ARMCOMPUTECL_ENABLED
 #include <arm_compute/core/CL/CLKernelLibrary.h>
@@ -18,10 +18,10 @@
 
 #include "ClWorkloads.hpp"
 
-#include "backends/MemCopyWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
+#include <backends/MemCopyWorkload.hpp>
+#include <backends/ClTensorHandle.hpp>
 
-#include "memory/IPoolManager.hpp"
+#include <memory/IPoolManager.hpp>
 #endif
 
 #include "MakeWorkloadHelper.hpp"
diff --git a/src/backends/ClWorkloadFactory.hpp b/src/backends/ClWorkloadFactory.hpp
index d0bf416..59ae3b3 100644
--- a/src/backends/ClWorkloadFactory.hpp
+++ b/src/backends/ClWorkloadFactory.hpp
@@ -4,9 +4,9 @@
 //
 #pragma once
 
-#include "OutputHandler.hpp"
+#include <backends/OutputHandler.hpp>
 
-#include "armnn/IRuntime.hpp"
+#include <armnn/IRuntime.hpp>
 #include <boost/optional.hpp>
 
 #include "memory/BaseMemoryManager.hpp"
diff --git a/src/backends/ClWorkloads/backend.cmake b/src/backends/ClWorkloads/backend.cmake
index 6f8eda1..e6b4673 100644
--- a/src/backends/ClWorkloads/backend.cmake
+++ b/src/backends/ClWorkloads/backend.cmake
@@ -6,4 +6,6 @@
 if(ARMCOMPUTECL)
     add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/ClWorkloads)
     list(APPEND armnnLibraries armnnClBackend)
+else()
+    message("CL backend is disabled")
 endif()
diff --git a/src/backends/CpuTensorHandle.cpp b/src/backends/CpuTensorHandle.cpp
index 1a26453..4059a1d 100644
--- a/src/backends/CpuTensorHandle.cpp
+++ b/src/backends/CpuTensorHandle.cpp
@@ -2,8 +2,8 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "armnn/Exceptions.hpp"
-#include "CpuTensorHandle.hpp"
+#include <armnn/Exceptions.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 #include <cstring>
 
diff --git a/src/backends/CpuTensorHandle.hpp b/src/backends/CpuTensorHandle.hpp
index 541beef..2a686fe 100644
--- a/src/backends/CpuTensorHandle.hpp
+++ b/src/backends/CpuTensorHandle.hpp
@@ -3,11 +3,10 @@
 // SPDX-License-Identifier: MIT
 //
 #pragma once
+
 #include "CpuTensorHandleFwd.hpp"
-
-#include "armnn/TypesUtils.hpp"
-
-#include "OutputHandler.hpp"
+#include <armnn/TypesUtils.hpp>
+#include <backends/OutputHandler.hpp>
 
 #include <algorithm>
 
diff --git a/src/backends/NeonWorkloads.hpp b/src/backends/NeonWorkloads.hpp
deleted file mode 100644
index e471bbc..0000000
--- a/src/backends/NeonWorkloads.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-#include "backends/NeonWorkloads/NeonActivationFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonActivationUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonAdditionFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonBaseConstantWorkload.hpp"
-#include "backends/NeonWorkloads/NeonBaseMergerWorkload.hpp"
-#include "backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp"
-#include "backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonConstantFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonConstantUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.hpp"
-#include "backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.hpp"
-#include "backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp"
-#include "backends/NeonWorkloads/NeonConvolution2dFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonConvolution2dUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonFloorFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonFullyConnectedWorkload.hpp"
-#include "backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonLstmFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonMergerFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonMergerUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonMultiplicationFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonNormalizationFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonPermuteWorkload.hpp"
-#include "backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp"
-#include "backends/NeonWorkloads/NeonPooling2dFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonPooling2dUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonReshapeFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonReshapeUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonSoftmaxFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonSplitterFloatWorkload.hpp"
-#include "backends/NeonWorkloads/NeonSplitterUint8Workload.hpp"
-#include "backends/NeonWorkloads/NeonSubtractionFloatWorkload.hpp"
diff --git a/src/backends/NeonWorkloads/backend.cmake b/src/backends/NeonWorkloads/backend.cmake
deleted file mode 100644
index f0908c5..0000000
--- a/src/backends/NeonWorkloads/backend.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright © 2017 Arm Ltd. All rights reserved.
-# SPDX-License-Identifier: MIT
-#
-
-if(ARMCOMPUTENEON)
-    add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/NeonWorkloads)
-    list(APPEND armnnLibraries armnnNeonBackend)
-endif()
diff --git a/src/backends/NeonWorkloads/backend.mk b/src/backends/NeonWorkloads/backend.mk
deleted file mode 100644
index 7b7f87b..0000000
--- a/src/backends/NeonWorkloads/backend.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# 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 := \
-        NeonActivationFloatWorkload.cpp \
-        NeonActivationUint8Workload.cpp \
-        NeonAdditionFloatWorkload.cpp \
-        NeonBatchNormalizationFloatWorkload.cpp \
-        NeonConstantFloatWorkload.cpp \
-        NeonConstantUint8Workload.cpp \
-        NeonConvertFp16ToFp32Workload.cpp \
-        NeonConvertFp32ToFp16Workload.cpp \
-        NeonConvolution2dBaseWorkload.cpp \
-        NeonConvolution2dFloatWorkload.cpp \
-        NeonConvolution2dUint8Workload.cpp \
-        NeonDepthwiseConvolutionBaseWorkload.cpp \
-        NeonDepthwiseConvolutionFloatWorkload.cpp \
-        NeonDepthwiseConvolutionUint8Workload.cpp \
-        NeonFloorFloatWorkload.cpp \
-        NeonFullyConnectedWorkload.cpp \
-        NeonL2NormalizationFloatWorkload.cpp \
-        NeonLstmFloatWorkload.cpp \
-        NeonMergerFloatWorkload.cpp \
-        NeonMergerUint8Workload.cpp \
-        NeonMultiplicationFloatWorkload.cpp \
-        NeonNormalizationFloatWorkload.cpp \
-        NeonPermuteWorkload.cpp \
-        NeonPooling2dBaseWorkload.cpp \
-        NeonPooling2dFloatWorkload.cpp \
-        NeonPooling2dUint8Workload.cpp \
-        NeonReshapeFloatWorkload.cpp \
-        NeonReshapeUint8Workload.cpp \
-        NeonSoftmaxBaseWorkload.cpp \
-        NeonSoftmaxFloatWorkload.cpp \
-        NeonSoftmaxUint8Workload.cpp \
-        NeonSplitterFloatWorkload.cpp \
-        NeonSplitterUint8Workload.cpp \
-        NeonSubtractionFloatWorkload.cpp
-
diff --git a/src/backends/WorkloadData.hpp b/src/backends/WorkloadData.hpp
index 8c1cbd4..ff5916e 100644
--- a/src/backends/WorkloadData.hpp
+++ b/src/backends/WorkloadData.hpp
@@ -6,12 +6,14 @@
 
 #include "WorkloadDataFwd.hpp"
 
-#include "armnn/Types.hpp"
-#include "armnn/Tensor.hpp"
-#include "armnn/Descriptors.hpp"
-#include "armnn/Exceptions.hpp"
-#include "InternalTypes.hpp"
-#include "OutputHandler.hpp"
+#include <armnn/Types.hpp>
+#include <armnn/Tensor.hpp>
+#include <armnn/Descriptors.hpp>
+#include <armnn/Exceptions.hpp>
+
+#include <InternalTypes.hpp>
+#include <backends/OutputHandler.hpp>
+
 #include "CpuTensorHandleFwd.hpp"
 
 namespace armnn
diff --git a/src/backends/WorkloadFactory.cpp b/src/backends/WorkloadFactory.cpp
index 8b3ab83..d23ac83 100644
--- a/src/backends/WorkloadFactory.cpp
+++ b/src/backends/WorkloadFactory.cpp
@@ -4,7 +4,7 @@
 //
 #include "WorkloadFactory.hpp"
 #include <backends/reference/RefWorkloadFactory.hpp>
-#include "NeonWorkloadFactory.hpp"
+#include <backends/neon/NeonWorkloadFactory.hpp>
 #include "ClWorkloadFactory.hpp"
 
 #include <armnn/Types.hpp>
diff --git a/src/backends/backends.cmake b/src/backends/backends.cmake
index 6f76106..f6f69bd 100644
--- a/src/backends/backends.cmake
+++ b/src/backends/backends.cmake
@@ -12,6 +12,7 @@
 FILE(GLOB backendIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/backend.cmake)
 
 # prefer to include common code first so backends can depend on them
-foreach(backendInclude ${commonIncludes} ${backendIncludes})
-    include(${backendInclude})
+foreach(includeFile ${commonIncludes} ${backendIncludes})
+    message("Including backend into the build: ${includeFile}")
+    include(${includeFile})
 endforeach()
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
new file mode 100644
index 0000000..c748825
--- /dev/null
+++ b/src/backends/neon/CMakeLists.txt
@@ -0,0 +1,28 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+if(ARMCOMPUTENEON)
+    list(APPEND armnnNeonBackend_sources
+        NeonLayerSupport.cpp
+        NeonLayerSupport.hpp
+        NeonWorkloadFactory.cpp
+        NeonWorkloadFactory.hpp
+        NeonTensorHandle.hpp
+    )
+
+    add_subdirectory(workloads test)
+else()
+    list(APPEND armnnNeonBackend_sources
+        NeonLayerSupport.cpp
+        NeonLayerSupport.hpp
+        NeonWorkloadFactory.cpp
+        NeonWorkloadFactory.hpp
+    )
+endif()
+
+add_library(armnnNeonBackend STATIC ${armnnNeonBackend_sources})
+target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
similarity index 95%
rename from src/backends/NeonLayerSupport.cpp
rename to src/backends/neon/NeonLayerSupport.cpp
index f06db17..dfaea5c 100644
--- a/src/backends/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -5,8 +5,8 @@
 
 #include "NeonLayerSupport.hpp"
 
-#include "LayerSupportCommon.hpp"
-#include "InternalTypes.hpp"
+#include <LayerSupportCommon.hpp>
+#include <InternalTypes.hpp>
 
 #include <armnn/Descriptors.hpp>
 #include <armnn/Types.hpp>
@@ -15,19 +15,19 @@
 #include <boost/core/ignore_unused.hpp>
 
 #ifdef ARMCOMPUTENEON_ENABLED
-#include "NeonWorkloads/NeonAdditionFloatWorkload.hpp"
-#include "NeonWorkloads/NeonActivationFloatWorkload.hpp"
-#include "NeonWorkloads/NeonBatchNormalizationFloatWorkload.hpp"
-#include "NeonWorkloads/NeonConvolution2dBaseWorkload.hpp"
-#include "NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp"
-#include "NeonWorkloads/NeonL2NormalizationFloatWorkload.hpp"
-#include "NeonWorkloads/NeonMultiplicationFloatWorkload.hpp"
-#include "NeonWorkloads/NeonNormalizationFloatWorkload.hpp"
-#include "NeonWorkloads/NeonFullyConnectedWorkload.hpp"
-#include "NeonWorkloads/NeonPermuteWorkload.hpp"
-#include "NeonWorkloads/NeonPooling2dBaseWorkload.hpp"
-#include "NeonWorkloads/NeonSoftmaxBaseWorkload.hpp"
-#include "NeonWorkloads/NeonSubtractionFloatWorkload.hpp"
+#include "workloads/NeonAdditionFloatWorkload.hpp"
+#include "workloads/NeonActivationFloatWorkload.hpp"
+#include "workloads/NeonBatchNormalizationFloatWorkload.hpp"
+#include "workloads/NeonConvolution2dBaseWorkload.hpp"
+#include "workloads/NeonDepthwiseConvolutionBaseWorkload.hpp"
+#include "workloads/NeonL2NormalizationFloatWorkload.hpp"
+#include "workloads/NeonMultiplicationFloatWorkload.hpp"
+#include "workloads/NeonNormalizationFloatWorkload.hpp"
+#include "workloads/NeonFullyConnectedWorkload.hpp"
+#include "workloads/NeonPermuteWorkload.hpp"
+#include "workloads/NeonPooling2dBaseWorkload.hpp"
+#include "workloads/NeonSoftmaxBaseWorkload.hpp"
+#include "workloads/NeonSubtractionFloatWorkload.hpp"
 #endif
 
 using namespace boost;
diff --git a/src/backends/NeonLayerSupport.hpp b/src/backends/neon/NeonLayerSupport.hpp
similarity index 100%
rename from src/backends/NeonLayerSupport.hpp
rename to src/backends/neon/NeonLayerSupport.hpp
diff --git a/src/backends/NeonTensorHandle.hpp b/src/backends/neon/NeonTensorHandle.hpp
similarity index 98%
rename from src/backends/NeonTensorHandle.hpp
rename to src/backends/neon/NeonTensorHandle.hpp
index 9045b8f..6554278 100644
--- a/src/backends/NeonTensorHandle.hpp
+++ b/src/backends/neon/NeonTensorHandle.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include "OutputHandler.hpp"
+#include <backends/OutputHandler.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/MemoryGroup.h>
diff --git a/src/backends/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp
similarity index 97%
rename from src/backends/NeonWorkloadFactory.cpp
rename to src/backends/neon/NeonWorkloadFactory.cpp
index 3b994bf..dd91b15 100644
--- a/src/backends/NeonWorkloadFactory.cpp
+++ b/src/backends/neon/NeonWorkloadFactory.cpp
@@ -3,22 +3,22 @@
 // SPDX-License-Identifier: MIT
 //
 #include "NeonWorkloadFactory.hpp"
-#include "armnn/Utils.hpp"
-#include "CpuTensorHandle.hpp"
-#include "Layer.hpp"
+#include <armnn/Utils.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <Layer.hpp>
 
 #ifdef ARMCOMPUTENEON_ENABLED
-#include "arm_compute/runtime/Allocator.h"
+#include <arm_compute/runtime/Allocator.h>
 
-#include "MemCopyWorkload.hpp"
+#include <backends/MemCopyWorkload.hpp>
 #include "NeonTensorHandle.hpp"
-#include "NeonWorkloadUtils.hpp"
-#include "NeonWorkloads.hpp"
+#include "workloads/NeonWorkloadUtils.hpp"
+#include "workloads/NeonWorkloads.hpp"
 
-#include "memory/IPoolManager.hpp"
+#include <memory/IPoolManager.hpp>
 #endif
 
-#include "MakeWorkloadHelper.hpp"
+#include <backends/MakeWorkloadHelper.hpp>
 
 #include <boost/polymorphic_cast.hpp>
 
diff --git a/src/backends/NeonWorkloadFactory.hpp b/src/backends/neon/NeonWorkloadFactory.hpp
similarity index 98%
rename from src/backends/NeonWorkloadFactory.hpp
rename to src/backends/neon/NeonWorkloadFactory.hpp
index 45d1c2c..440bba6 100644
--- a/src/backends/NeonWorkloadFactory.hpp
+++ b/src/backends/neon/NeonWorkloadFactory.hpp
@@ -4,9 +4,9 @@
 //
 #pragma once
 
-#include "OutputHandler.hpp"
+#include <backends/OutputHandler.hpp>
 
-#include "memory/BaseMemoryManager.hpp"
+#include <memory/BaseMemoryManager.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 #include <boost/optional.hpp>
diff --git a/src/backends/neon/backend.cmake b/src/backends/neon/backend.cmake
new file mode 100644
index 0000000..5f02c84
--- /dev/null
+++ b/src/backends/neon/backend.cmake
@@ -0,0 +1,13 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+if(ARMCOMPUTENEON)
+    add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon)
+    list(APPEND armnnLibraries armnnNeonBackend armnnNeonBackendWorkloads)
+else()
+    message("NEON backend is disabled")
+    add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/neon)
+    list(APPEND armnnLibraries armnnNeonBackend)
+endif()
diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk
new file mode 100644
index 0000000..a59966f
--- /dev/null
+++ b/src/backends/neon/backend.mk
@@ -0,0 +1,47 @@
+#
+# 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 := \
+        NeonLayerSupport.cpp \
+        NeonWorkloadFactory.cpp \
+        workloads/NeonActivationFloatWorkload.cpp \
+        workloads/NeonActivationUint8Workload.cpp \
+        workloads/NeonAdditionFloatWorkload.cpp \
+        workloads/NeonBatchNormalizationFloatWorkload.cpp \
+        workloads/NeonConstantFloatWorkload.cpp \
+        workloads/NeonConstantUint8Workload.cpp \
+        workloads/NeonConvertFp16ToFp32Workload.cpp \
+        workloads/NeonConvertFp32ToFp16Workload.cpp \
+        workloads/NeonConvolution2dBaseWorkload.cpp \
+        workloads/NeonConvolution2dFloatWorkload.cpp \
+        workloads/NeonConvolution2dUint8Workload.cpp \
+        workloads/NeonDepthwiseConvolutionBaseWorkload.cpp \
+        workloads/NeonDepthwiseConvolutionFloatWorkload.cpp \
+        workloads/NeonDepthwiseConvolutionUint8Workload.cpp \
+        workloads/NeonFloorFloatWorkload.cpp \
+        workloads/NeonFullyConnectedWorkload.cpp \
+        workloads/NeonL2NormalizationFloatWorkload.cpp \
+        workloads/NeonLstmFloatWorkload.cpp \
+        workloads/NeonMergerFloatWorkload.cpp \
+        workloads/NeonMergerUint8Workload.cpp \
+        workloads/NeonMultiplicationFloatWorkload.cpp \
+        workloads/NeonNormalizationFloatWorkload.cpp \
+        workloads/NeonPermuteWorkload.cpp \
+        workloads/NeonPooling2dBaseWorkload.cpp \
+        workloads/NeonPooling2dFloatWorkload.cpp \
+        workloads/NeonPooling2dUint8Workload.cpp \
+        workloads/NeonReshapeFloatWorkload.cpp \
+        workloads/NeonReshapeUint8Workload.cpp \
+        workloads/NeonSoftmaxBaseWorkload.cpp \
+        workloads/NeonSoftmaxFloatWorkload.cpp \
+        workloads/NeonSoftmaxUint8Workload.cpp \
+        workloads/NeonSplitterFloatWorkload.cpp \
+        workloads/NeonSplitterUint8Workload.cpp \
+        workloads/NeonSubtractionFloatWorkload.cpp \
+        workloads/NeonWorkloadUtils.cpp
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt
new file mode 100644
index 0000000..f41a074
--- /dev/null
+++ b/src/backends/neon/test/CMakeLists.txt
@@ -0,0 +1,4 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
diff --git a/src/backends/NeonWorkloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt
similarity index 84%
rename from src/backends/NeonWorkloads/CMakeLists.txt
rename to src/backends/neon/workloads/CMakeLists.txt
index ca44bcc..850c65c 100644
--- a/src/backends/NeonWorkloads/CMakeLists.txt
+++ b/src/backends/neon/workloads/CMakeLists.txt
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: MIT
 #
 
-list(APPEND armnnNeonBackend_sources
+list(APPEND armnnNeonBackendWorkloads_sources
     NeonActivationFloatWorkload.cpp
     NeonActivationFloatWorkload.hpp
     NeonActivationUint8Workload.cpp
@@ -75,9 +75,12 @@
     NeonSplitterUint8Workload.hpp
     NeonSubtractionFloatWorkload.cpp
     NeonSubtractionFloatWorkload.hpp
+    NeonWorkloads.hpp
+    NeonWorkloadUtils.cpp
+    NeonWorkloadUtils.hpp
 )
 
-add_library(armnnNeonBackend STATIC ${armnnNeonBackend_sources})
-target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
-target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+add_library(armnnNeonBackendWorkloads STATIC ${armnnNeonBackendWorkloads_sources})
+target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp b/src/backends/neon/workloads/NeonActivationFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonActivationFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonActivationFloatWorkload.hpp b/src/backends/neon/workloads/NeonActivationFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonActivationFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonActivationFloatWorkload.hpp
index f8d25ca..4d2f51f 100644
--- a/src/backends/NeonWorkloads/NeonActivationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonActivationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp b/src/backends/neon/workloads/NeonActivationUint8Workload.cpp
similarity index 96%
rename from src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
rename to src/backends/neon/workloads/NeonActivationUint8Workload.cpp
index a5bba48..4aed6b5 100644
--- a/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
+++ b/src/backends/neon/workloads/NeonActivationUint8Workload.cpp
@@ -5,7 +5,7 @@
 
 #include "NeonActivationUint8Workload.hpp"
 #include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonActivationUint8Workload.hpp b/src/backends/neon/workloads/NeonActivationUint8Workload.hpp
similarity index 88%
rename from src/backends/NeonWorkloads/NeonActivationUint8Workload.hpp
rename to src/backends/neon/workloads/NeonActivationUint8Workload.hpp
index 405e600..56e3544 100644
--- a/src/backends/NeonWorkloads/NeonActivationUint8Workload.hpp
+++ b/src/backends/neon/workloads/NeonActivationUint8Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.hpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonAdditionFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
index 154e4f3..769492e 100644
--- a/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp b/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
similarity index 96%
rename from src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
rename to src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
index 59afc70..6bb275a 100644
--- a/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBaseConstantWorkload.hpp
@@ -7,9 +7,9 @@
 
 #include <arm_compute/core/Types.h>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 #include <backends/CpuTensorHandle.hpp>
-#include <backends/NeonTensorHandle.hpp>
-#include <backends/NeonWorkloadUtils.hpp>
 #include <backends/Workload.hpp>
 #include <Half.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonBaseMergerWorkload.hpp b/src/backends/neon/workloads/NeonBaseMergerWorkload.hpp
similarity index 91%
rename from src/backends/NeonWorkloads/NeonBaseMergerWorkload.hpp
rename to src/backends/neon/workloads/NeonBaseMergerWorkload.hpp
index 603e7f3..9ff09f6 100644
--- a/src/backends/NeonWorkloads/NeonBaseMergerWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBaseMergerWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 #include <backends/Workload.hpp>
 
 namespace armnn
diff --git a/src/backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp b/src/backends/neon/workloads/NeonBaseSplitterWorkload.hpp
similarity index 91%
rename from src/backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp
rename to src/backends/neon/workloads/NeonBaseSplitterWorkload.hpp
index 9288d44..dcee933 100644
--- a/src/backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBaseSplitterWorkload.hpp
@@ -6,7 +6,7 @@
 #pragma once
 
 #include <backends/Workload.hpp>
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
similarity index 95%
rename from src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
index 7982541..59c7404 100644
--- a/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConstantFloatWorkload.cpp b/src/backends/neon/workloads/NeonConstantFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConstantFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonConstantFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonConstantFloatWorkload.hpp b/src/backends/neon/workloads/NeonConstantFloatWorkload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConstantFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonConstantFloatWorkload.hpp
diff --git a/src/backends/NeonWorkloads/NeonConstantUint8Workload.cpp b/src/backends/neon/workloads/NeonConstantUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConstantUint8Workload.cpp
rename to src/backends/neon/workloads/NeonConstantUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonConstantUint8Workload.hpp b/src/backends/neon/workloads/NeonConstantUint8Workload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConstantUint8Workload.hpp
rename to src/backends/neon/workloads/NeonConstantUint8Workload.hpp
diff --git a/src/backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.cpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.cpp
rename to src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.hpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
similarity index 81%
rename from src/backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.hpp
rename to src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
index d70401b..dcf6998 100644
--- a/src/backends/NeonWorkloads/NeonConvertFp16ToFp32Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include "backends/Workload.hpp"
-#include "backends/WorkloadData.hpp"
-#include "backends/NeonWorkloadUtils.hpp"
+#include <backends/Workload.hpp>
+#include <backends/WorkloadData.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.cpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.cpp
rename to src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.hpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
similarity index 81%
rename from src/backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.hpp
rename to src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
index eb839fd..b819a8c 100644
--- a/src/backends/NeonWorkloads/NeonConvertFp32ToFp16Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include "backends/Workload.hpp"
-#include "backends/WorkloadData.hpp"
-#include "backends/NeonWorkloadUtils.hpp"
+#include <backends/Workload.hpp>
+#include <backends/WorkloadData.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
similarity index 98%
rename from src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
rename to src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
index ee69088..547f563 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 
 #include "NeonConvolution2dBaseWorkload.hpp"
 
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
rename to src/backends/neon/workloads/NeonConvolution2dBaseWorkload.hpp
index 93f71c3..6af89c1 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConvolution2dBaseWorkload.hpp
@@ -7,8 +7,8 @@
 
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #include <backends/CpuTensorHandle.hpp>
-#include <backends/NeonLayerSupport.hpp>
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 #include <backends/Workload.hpp>
 
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dFloatWorkload.cpp
similarity index 95%
rename from src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonConvolution2dFloatWorkload.cpp
index ea7a843..cd26f8d 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dFloatWorkload.cpp
@@ -6,7 +6,7 @@
 #include "NeonConvolution2dFloatWorkload.hpp"
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.hpp b/src/backends/neon/workloads/NeonConvolution2dFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonConvolution2dFloatWorkload.hpp
index dd8ef55..14c77c8 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConvolution2dFloatWorkload.hpp
@@ -6,7 +6,7 @@
 #pragma once
 
 #include "NeonConvolution2dBaseWorkload.hpp"
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 #include "arm_compute/runtime/MemoryManagerOnDemand.h"
 
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dUint8Workload.cpp b/src/backends/neon/workloads/NeonConvolution2dUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConvolution2dUint8Workload.cpp
rename to src/backends/neon/workloads/NeonConvolution2dUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dUint8Workload.hpp b/src/backends/neon/workloads/NeonConvolution2dUint8Workload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonConvolution2dUint8Workload.hpp
rename to src/backends/neon/workloads/NeonConvolution2dUint8Workload.hpp
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionBaseWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionBaseWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionBaseWorkload.hpp
similarity index 91%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionBaseWorkload.hpp
index eec432b..982992a 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionBaseWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "backends/NeonWorkloadUtils.hpp"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <boost/optional.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.cpp
similarity index 98%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.cpp
index db8e27a..742a768 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonDepthwiseConvolutionFloatWorkload.hpp"
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.hpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.hpp
index 4ec8c1d..0109ea1 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.cpp
similarity index 98%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.cpp
index 3efc5b0..722b778 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonDepthwiseConvolutionUint8Workload.hpp"
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp
rename to src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.hpp
index a0be512..90cf8b0 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionUint8Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonFloorFloatWorkload.cpp b/src/backends/neon/workloads/NeonFloorFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonFloorFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonFloorFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonFloorFloatWorkload.hpp b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
similarity index 87%
rename from src/backends/NeonWorkloads/NeonFloorFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
index ad9f44b..478aa94 100644
--- a/src/backends/NeonWorkloads/NeonFloorFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonFullyConnectedWorkload.cpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonFullyConnectedWorkload.cpp
rename to src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonFullyConnectedWorkload.hpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
similarity index 91%
rename from src/backends/NeonWorkloads/NeonFullyConnectedWorkload.hpp
rename to src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
index 11991f8..9ffac96 100644
--- a/src/backends/NeonWorkloads/NeonFullyConnectedWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <memory>
 
diff --git a/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
similarity index 87%
rename from src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
index 078c4d1..c1221fb 100644
--- a/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
@@ -5,9 +5,8 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
-
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <memory>
 
diff --git a/src/backends/NeonWorkloads/NeonLstmFloatWorkload.cpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonLstmFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonLstmFloatWorkload.hpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
similarity index 86%
rename from src/backends/NeonWorkloads/NeonLstmFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
index 6064a01..4a5394f 100644
--- a/src/backends/NeonWorkloads/NeonLstmFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonMergerFloatWorkload.cpp b/src/backends/neon/workloads/NeonMergerFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonMergerFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonMergerFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonMergerFloatWorkload.hpp b/src/backends/neon/workloads/NeonMergerFloatWorkload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonMergerFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonMergerFloatWorkload.hpp
diff --git a/src/backends/NeonWorkloads/NeonMergerUint8Workload.cpp b/src/backends/neon/workloads/NeonMergerUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonMergerUint8Workload.cpp
rename to src/backends/neon/workloads/NeonMergerUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonMergerUint8Workload.hpp b/src/backends/neon/workloads/NeonMergerUint8Workload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonMergerUint8Workload.hpp
rename to src/backends/neon/workloads/NeonMergerUint8Workload.hpp
diff --git a/src/backends/NeonWorkloads/NeonMultiplicationFloatWorkload.cpp b/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonMultiplicationFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonMultiplicationFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonMultiplicationFloatWorkload.hpp b/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonMultiplicationFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
index 4b187b2..0a99c8c 100644
--- a/src/backends/NeonWorkloads/NeonMultiplicationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
similarity index 98%
rename from src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
index ee97856..472c75f 100644
--- a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonNormalizationFloatWorkload.hpp"
-#include <backends/NeonLayerSupport.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 #include <backends/aclCommon/ArmComputeUtils.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
similarity index 88%
rename from src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
index 633944d..c6f64c6 100644
--- a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
@@ -5,9 +5,8 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
-
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
similarity index 97%
rename from src/backends/NeonWorkloads/NeonPermuteWorkload.cpp
rename to src/backends/neon/workloads/NeonPermuteWorkload.cpp
index 7a20c70..0bf4aa1 100644
--- a/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonPermuteWorkload.hpp"
-#include <backends/NeonTensorHandle.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/core/Error.h>
diff --git a/src/backends/NeonWorkloads/NeonPermuteWorkload.hpp b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
similarity index 89%
rename from src/backends/NeonWorkloads/NeonPermuteWorkload.hpp
rename to src/backends/neon/workloads/NeonPermuteWorkload.hpp
index 1fe05b1..a85816b 100644
--- a/src/backends/NeonWorkloads/NeonPermuteWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include "backends/Workload.hpp"
-#include "backends/WorkloadData.hpp"
-#include "backends/NeonWorkloadUtils.hpp"
+#include <backends/Workload.hpp>
+#include <backends/WorkloadData.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <armnn/TypesUtils.hpp>
 #include <arm_compute/runtime/NEON/functions/NEPermute.h>
diff --git a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp
similarity index 94%
rename from src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
rename to src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp
index 95286f4..109e856 100644
--- a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPooling2dBaseWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonPooling2dBaseWorkload.hpp"
-#include <backends/NeonLayerSupport.hpp>
-#include <backends/NeonTensorHandle.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
 #include <backends/aclCommon/ArmComputeUtils.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp
similarity index 93%
rename from src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp
rename to src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp
index 77d6bf2..8ea41fe 100644
--- a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPooling2dBaseWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonPooling2dFloatWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonPooling2dFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonPooling2dFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonPooling2dFloatWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp
similarity index 90%
rename from src/backends/NeonWorkloads/NeonPooling2dFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp
index 78a3574..9b0eebd 100644
--- a/src/backends/NeonWorkloads/NeonPooling2dFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPooling2dFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 #include "NeonPooling2dBaseWorkload.hpp"
 
 namespace armnn
diff --git a/src/backends/NeonWorkloads/NeonPooling2dUint8Workload.cpp b/src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonPooling2dUint8Workload.cpp
rename to src/backends/neon/workloads/NeonPooling2dUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonPooling2dUint8Workload.hpp b/src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonPooling2dUint8Workload.hpp
rename to src/backends/neon/workloads/NeonPooling2dUint8Workload.hpp
diff --git a/src/backends/NeonWorkloads/NeonReshapeFloatWorkload.cpp b/src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonReshapeFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonReshapeFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonReshapeFloatWorkload.hpp b/src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp
similarity index 88%
rename from src/backends/NeonWorkloads/NeonReshapeFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp
index 066765a..bdef862 100644
--- a/src/backends/NeonWorkloads/NeonReshapeFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonReshapeFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonReshapeUint8Workload.cpp b/src/backends/neon/workloads/NeonReshapeUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonReshapeUint8Workload.cpp
rename to src/backends/neon/workloads/NeonReshapeUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonReshapeUint8Workload.hpp b/src/backends/neon/workloads/NeonReshapeUint8Workload.hpp
similarity index 88%
rename from src/backends/NeonWorkloads/NeonReshapeUint8Workload.hpp
rename to src/backends/neon/workloads/NeonReshapeUint8Workload.hpp
index 3f7c470..4951873 100644
--- a/src/backends/NeonWorkloads/NeonReshapeUint8Workload.hpp
+++ b/src/backends/neon/workloads/NeonReshapeUint8Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp
rename to src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.hpp b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
similarity index 86%
rename from src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.hpp
rename to src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
index 24910df..446392c 100644
--- a/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "backends/NeonWorkloadUtils.hpp"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxFloatWorkload.cpp b/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSoftmaxFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonSoftmaxFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxFloatWorkload.hpp b/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
similarity index 83%
rename from src/backends/NeonWorkloads/NeonSoftmaxFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
index 47745c6..83f2922 100644
--- a/src/backends/NeonWorkloads/NeonSoftmaxFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
@@ -5,9 +5,8 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
-
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <memory>
 
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxUint8Workload.cpp b/src/backends/neon/workloads/NeonSoftmaxUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSoftmaxUint8Workload.cpp
rename to src/backends/neon/workloads/NeonSoftmaxUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp b/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
similarity index 82%
rename from src/backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp
rename to src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
index f894c5a..0d72514 100644
--- a/src/backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
@@ -5,9 +5,8 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
-
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonSplitterFloatWorkload.cpp b/src/backends/neon/workloads/NeonSplitterFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSplitterFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonSplitterFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSplitterFloatWorkload.hpp b/src/backends/neon/workloads/NeonSplitterFloatWorkload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSplitterFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonSplitterFloatWorkload.hpp
diff --git a/src/backends/NeonWorkloads/NeonSplitterUint8Workload.cpp b/src/backends/neon/workloads/NeonSplitterUint8Workload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSplitterUint8Workload.cpp
rename to src/backends/neon/workloads/NeonSplitterUint8Workload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSplitterUint8Workload.hpp b/src/backends/neon/workloads/NeonSplitterUint8Workload.hpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSplitterUint8Workload.hpp
rename to src/backends/neon/workloads/NeonSplitterUint8Workload.hpp
diff --git a/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp
similarity index 100%
rename from src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp
rename to src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp
diff --git a/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.hpp b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
similarity index 92%
rename from src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.hpp
rename to src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
index 18988a3..98aeb4c 100644
--- a/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloadUtils.cpp b/src/backends/neon/workloads/NeonWorkloadUtils.cpp
similarity index 94%
rename from src/backends/NeonWorkloadUtils.cpp
rename to src/backends/neon/workloads/NeonWorkloadUtils.cpp
index e388949..195f090 100644
--- a/src/backends/NeonWorkloadUtils.cpp
+++ b/src/backends/neon/workloads/NeonWorkloadUtils.cpp
@@ -5,8 +5,9 @@
 #include "NeonWorkloadUtils.hpp"
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
 #include <backends/CpuTensorHandle.hpp>
-#include <backends/NeonTensorHandle.hpp>
 
 #include <armnn/Utils.hpp>
 #include <armnn/Exceptions.hpp>
@@ -18,7 +19,6 @@
 
 #include "Profiling.hpp"
 
-#include "NeonLayerSupport.hpp"
 #include <armnn/Types.hpp>
 #include <Half.hpp>
 
diff --git a/src/backends/NeonWorkloadUtils.hpp b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
similarity index 79%
rename from src/backends/NeonWorkloadUtils.hpp
rename to src/backends/neon/workloads/NeonWorkloadUtils.hpp
index f3c8866..22668f6 100644
--- a/src/backends/NeonWorkloadUtils.hpp
+++ b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
@@ -4,14 +4,14 @@
 //
 #pragma once
 
-#include "Workload.hpp"
+#include <backends/Workload.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
 
-#include "backends/NeonTensorHandle.hpp"
 #include "NeonTimer.hpp"
 
-#include "arm_compute/core/Types.h"
-#include "arm_compute/core/Helpers.h"
-#include "arm_compute/runtime/NEON/NEFunctions.h"
+#include <arm_compute/core/Types.h>
+#include <arm_compute/core/Helpers.h>
+#include <arm_compute/runtime/NEON/NEFunctions.h>
 #include <arm_compute/runtime/SubTensor.h>
 
 #include <boost/cast.hpp>
diff --git a/src/backends/neon/workloads/NeonWorkloads.hpp b/src/backends/neon/workloads/NeonWorkloads.hpp
new file mode 100644
index 0000000..a4ab6b2
--- /dev/null
+++ b/src/backends/neon/workloads/NeonWorkloads.hpp
@@ -0,0 +1,41 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+#include "NeonActivationFloatWorkload.hpp"
+#include "NeonActivationUint8Workload.hpp"
+#include "NeonAdditionFloatWorkload.hpp"
+#include "NeonBaseConstantWorkload.hpp"
+#include "NeonBaseMergerWorkload.hpp"
+#include "NeonBaseSplitterWorkload.hpp"
+#include "NeonBatchNormalizationFloatWorkload.hpp"
+#include "NeonConstantFloatWorkload.hpp"
+#include "NeonConstantUint8Workload.hpp"
+#include "NeonConvertFp16ToFp32Workload.hpp"
+#include "NeonConvertFp32ToFp16Workload.hpp"
+#include "NeonConvolution2dBaseWorkload.hpp"
+#include "NeonConvolution2dFloatWorkload.hpp"
+#include "NeonConvolution2dUint8Workload.hpp"
+#include "NeonDepthwiseConvolutionFloatWorkload.hpp"
+#include "NeonDepthwiseConvolutionUint8Workload.hpp"
+#include "NeonFloorFloatWorkload.hpp"
+#include "NeonFullyConnectedWorkload.hpp"
+#include "NeonL2NormalizationFloatWorkload.hpp"
+#include "NeonLstmFloatWorkload.hpp"
+#include "NeonMergerFloatWorkload.hpp"
+#include "NeonMergerUint8Workload.hpp"
+#include "NeonMultiplicationFloatWorkload.hpp"
+#include "NeonNormalizationFloatWorkload.hpp"
+#include "NeonPermuteWorkload.hpp"
+#include "NeonPooling2dBaseWorkload.hpp"
+#include "NeonPooling2dFloatWorkload.hpp"
+#include "NeonPooling2dUint8Workload.hpp"
+#include "NeonReshapeFloatWorkload.hpp"
+#include "NeonReshapeUint8Workload.hpp"
+#include "NeonSoftmaxFloatWorkload.hpp"
+#include "NeonSoftmaxUint8Workload.hpp"
+#include "NeonSplitterFloatWorkload.hpp"
+#include "NeonSplitterUint8Workload.hpp"
+#include "NeonSubtractionFloatWorkload.hpp"
diff --git a/src/backends/test/ArmComputeNeon.cpp b/src/backends/test/ArmComputeNeon.cpp
index e8af6b3..4844cc2 100644
--- a/src/backends/test/ArmComputeNeon.cpp
+++ b/src/backends/test/ArmComputeNeon.cpp
@@ -8,8 +8,8 @@
 #include "LayerTests.hpp"
 
 #include <backends/CpuTensorHandle.hpp>
-#include <backends/NeonLayerSupport.hpp>
-#include <backends/NeonWorkloadFactory.hpp>
+#include <backends/neon/NeonLayerSupport.hpp>
+#include <backends/neon/NeonWorkloadFactory.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
 #include <backends/test/TensorCopyUtils.hpp>
 #include "ActivationFixture.hpp"
diff --git a/src/backends/test/CreateWorkloadNeon.cpp b/src/backends/test/CreateWorkloadNeon.cpp
index ce62a02..36ad9a4 100644
--- a/src/backends/test/CreateWorkloadNeon.cpp
+++ b/src/backends/test/CreateWorkloadNeon.cpp
@@ -2,11 +2,11 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "backends/NeonWorkloadFactory.hpp"
-#include "backends/NeonWorkloadUtils.hpp"
-#include "backends/NeonWorkloads.hpp"
-#include "backends/MemCopyWorkload.hpp"
-#include "backends/NeonTensorHandle.hpp"
+#include <backends/neon/NeonWorkloadFactory.hpp>
+#include <backends/neon/NeonTensorHandle.hpp>
+#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <backends/neon/workloads/NeonWorkloads.hpp>
+#include <backends/MemCopyWorkload.hpp>
 
 #include "test/CreateWorkloadClNeon.hpp"
 
diff --git a/src/backends/test/IsLayerSupportedTest.cpp b/src/backends/test/IsLayerSupportedTest.cpp
index 51bf11e..7117e20 100644
--- a/src/backends/test/IsLayerSupportedTest.cpp
+++ b/src/backends/test/IsLayerSupportedTest.cpp
@@ -9,11 +9,11 @@
 
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/reference/RefWorkloadFactory.hpp>
+#include <backends/neon/NeonWorkloadFactory.hpp>
 
 #include <string>
 #include <iostream>
 #include <backends/ClWorkloadFactory.hpp>
-#include <backends/NeonWorkloadFactory.hpp>
 
 #include "IsLayerSupportedTestImpl.hpp"
 #include "ClContextControlFixture.hpp"
diff --git a/src/backends/test/MemCopyTests.cpp b/src/backends/test/MemCopyTests.cpp
index 4fbe9e7..a1dc34a 100644
--- a/src/backends/test/MemCopyTests.cpp
+++ b/src/backends/test/MemCopyTests.cpp
@@ -11,7 +11,7 @@
 #include <backends/ClWorkloadFactory.hpp>
 #endif
 #if ARMCOMPUTENEON_ENABLED
-#include <backends/NeonWorkloadFactory.hpp>
+#include <backends/neon/NeonWorkloadFactory.hpp>
 #endif
 #include <backends/CpuTensorHandle.hpp>
 #include "test/TensorHelpers.hpp"
diff --git a/src/backends/test/TensorCopyUtils.cpp b/src/backends/test/TensorCopyUtils.cpp
index 530dc79..b2a9efc 100644
--- a/src/backends/test/TensorCopyUtils.cpp
+++ b/src/backends/test/TensorCopyUtils.cpp
@@ -11,11 +11,11 @@
 #include "TensorCopyUtils.hpp"
 
 #ifdef ARMCOMPUTECL_ENABLED
-#include "backends/ClTensorHandle.hpp"
+#include <backends/ClTensorHandle.hpp>
 #endif
 
 #if ARMCOMPUTENEON_ENABLED
-#include "backends/NeonTensorHandle.hpp"
+#include <backends/neon/NeonTensorHandle.hpp>
 #endif
 
 #if ARMCOMPUTECLENABLED || ARMCOMPUTENEON_ENABLED