IVGCVSW-1921: move common Acl code to a separate folder

Change-Id: I400be8e7c0cc5a31eb9d2a7396da145d50d51b6e
diff --git a/Android.mk b/Android.mk
index 0924648..3b8e911 100644
--- a/Android.mk
+++ b/Android.mk
@@ -63,7 +63,7 @@
         src/armnnUtils/FloatingPointConverter.cpp \
         src/armnnUtils/Logging.cpp \
         src/armnnUtils/Permute.cpp \
-        src/backends/ArmComputeTensorUtils.cpp \
+        src/backends/aclCommon/ArmComputeTensorUtils.cpp \
         src/backends/ClWorkloadFactory.cpp \
         src/backends/ClContextControl.cpp \
         src/backends/CpuTensorHandle.cpp \
diff --git a/src/backends/CMakeLists.txt b/src/backends/CMakeLists.txt
index 4a949c0..5503a9d 100644
--- a/src/backends/CMakeLists.txt
+++ b/src/backends/CMakeLists.txt
@@ -43,15 +43,6 @@
     WorkloadUtils.hpp
 )
 
-if(ARMCOMPUTENEON OR ARMCOMPUTECL)
-    # Files shared by all ARM Compute backends
-    list(APPEND armnnBackendsCommon_sources
-        ArmComputeTensorUtils.hpp
-        ArmComputeTensorUtils.cpp
-        ArmComputeUtils.hpp
-    )
-endif()
-
 if(ARMCOMPUTENEON)
     # Additionally include source files for ARM Compute NEON backend
     list(APPEND armnnBackendsCommon_sources
diff --git a/src/backends/ClTensorHandle.hpp b/src/backends/ClTensorHandle.hpp
index e3d7b5b..a4e72c1 100644
--- a/src/backends/ClTensorHandle.hpp
+++ b/src/backends/ClTensorHandle.hpp
@@ -5,7 +5,7 @@
 #pragma once
 
 #include "OutputHandler.hpp"
-#include "ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/CLTensor.h>
 #include <arm_compute/runtime/CL/CLSubTensor.h>
diff --git a/src/backends/ClWorkloads/ClActivationFloatWorkload.cpp b/src/backends/ClWorkloads/ClActivationFloatWorkload.cpp
index 97078bd..10eef66 100644
--- a/src/backends/ClWorkloads/ClActivationFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClActivationFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClActivationFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/ArmComputeUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClActivationUint8Workload.cpp b/src/backends/ClWorkloads/ClActivationUint8Workload.cpp
index f39c856..f41a97a 100644
--- a/src/backends/ClWorkloads/ClActivationUint8Workload.cpp
+++ b/src/backends/ClWorkloads/ClActivationUint8Workload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClActivationUint8Workload.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClLayerSupport.hpp>
 
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClAdditionWorkload.cpp b/src/backends/ClWorkloads/ClAdditionWorkload.cpp
index dd439d5..f43d3c1 100644
--- a/src/backends/ClWorkloads/ClAdditionWorkload.cpp
+++ b/src/backends/ClWorkloads/ClAdditionWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "ClAdditionWorkload.hpp"
 
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClBaseConstantWorkload.cpp b/src/backends/ClWorkloads/ClBaseConstantWorkload.cpp
index 97ddfd6..56af3b3 100644
--- a/src/backends/ClWorkloads/ClBaseConstantWorkload.cpp
+++ b/src/backends/ClWorkloads/ClBaseConstantWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClBaseConstantWorkload.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "Half.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <Half.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClBatchNormalizationFloatWorkload.cpp b/src/backends/ClWorkloads/ClBatchNormalizationFloatWorkload.cpp
index d05349b..4d5c20f 100644
--- a/src/backends/ClWorkloads/ClBatchNormalizationFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClBatchNormalizationFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClBatchNormalizationFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp b/src/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp
index 110a2da..1f5094e 100644
--- a/src/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp
+++ b/src/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClConvolution2dBaseWorkload.hpp"
-#include "backends/ClLayerSupport.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClLayerSupport.hpp>
+#include <backends/ClTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLConvolutionLayer.h>
 
diff --git a/src/backends/ClWorkloads/ClConvolution2dFloatWorkload.cpp b/src/backends/ClWorkloads/ClConvolution2dFloatWorkload.cpp
index 3da6fa7..7256596 100644
--- a/src/backends/ClWorkloads/ClConvolution2dFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClConvolution2dFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClConvolution2dFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp b/src/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
index 3949a74..a9faec0 100644
--- a/src/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
+++ b/src/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClConvolution2dUint8Workload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp b/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp
index 0e89a68..68f9cd6 100644
--- a/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp
+++ b/src/backends/ClWorkloads/ClDepthwiseConvolutionBaseWorkload.cpp
@@ -7,10 +7,10 @@
 
 #include "TypeUtils.hpp"
 
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/ClWorkloads/ClFullyConnectedWorkload.cpp b/src/backends/ClWorkloads/ClFullyConnectedWorkload.cpp
index 4686d1c..1ec3992 100644
--- a/src/backends/ClWorkloads/ClFullyConnectedWorkload.cpp
+++ b/src/backends/ClWorkloads/ClFullyConnectedWorkload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClFullyConnectedWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClL2NormalizationFloatWorkload.cpp b/src/backends/ClWorkloads/ClL2NormalizationFloatWorkload.cpp
index 4ccaae3..8f5ed5f 100644
--- a/src/backends/ClWorkloads/ClL2NormalizationFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClL2NormalizationFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "ClL2NormalizationFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClLstmFloatWorkload.cpp b/src/backends/ClWorkloads/ClLstmFloatWorkload.cpp
index 8e2c875..9e2563a 100644
--- a/src/backends/ClWorkloads/ClLstmFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClLstmFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClLstmFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ClLayerSupport.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/ClLayerSupport.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLLSTMLayer.h>
 
diff --git a/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp b/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp
index d262535..cf2cad1 100644
--- a/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClNormalizationFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ClLayerSupport.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/ClLayerSupport.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #include "ClWorkloadUtils.hpp"
 
 namespace armnn
diff --git a/src/backends/ClWorkloads/ClPermuteWorkload.cpp b/src/backends/ClWorkloads/ClPermuteWorkload.cpp
index 29d98bf..11b0df8 100644
--- a/src/backends/ClWorkloads/ClPermuteWorkload.cpp
+++ b/src/backends/ClWorkloads/ClPermuteWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClPermuteWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/core/Error.h>
 
diff --git a/src/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp b/src/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp
index a1ee50b..57b056a 100644
--- a/src/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp
+++ b/src/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClPooling2dBaseWorkload.hpp"
-#include "backends/ClLayerSupport.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClLayerSupport.hpp>
+#include <backends/ClTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/ClWorkloads/ClResizeBilinearFloatWorkload.cpp b/src/backends/ClWorkloads/ClResizeBilinearFloatWorkload.cpp
index 8348afb..7c05bbf 100644
--- a/src/backends/ClWorkloads/ClResizeBilinearFloatWorkload.cpp
+++ b/src/backends/ClWorkloads/ClResizeBilinearFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClResizeBilinearFloatWorkload.hpp"
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ClLayerSupport.hpp"
-#include "backends/ArmComputeUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/ClLayerSupport.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClSoftmaxBaseWorkload.cpp b/src/backends/ClWorkloads/ClSoftmaxBaseWorkload.cpp
index b4ea236..eb05a19 100644
--- a/src/backends/ClWorkloads/ClSoftmaxBaseWorkload.cpp
+++ b/src/backends/ClWorkloads/ClSoftmaxBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include "ClSoftmaxBaseWorkload.hpp"
 
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLSoftmaxLayer.h>
 
diff --git a/src/backends/ClWorkloads/ClSubtractionWorkload.cpp b/src/backends/ClWorkloads/ClSubtractionWorkload.cpp
index 1c70130..e5d5702 100644
--- a/src/backends/ClWorkloads/ClSubtractionWorkload.cpp
+++ b/src/backends/ClWorkloads/ClSubtractionWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "ClSubtractionWorkload.hpp"
 
-#include "backends/ClTensorHandle.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/ClWorkloads/ClWorkloadUtils.hpp b/src/backends/ClWorkloads/ClWorkloadUtils.hpp
index 9c415b2..3a8ff00 100644
--- a/src/backends/ClWorkloads/ClWorkloadUtils.hpp
+++ b/src/backends/ClWorkloads/ClWorkloadUtils.hpp
@@ -5,8 +5,8 @@
 #pragma once
 
 #include "OpenClTimer.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 #include <Half.hpp>
 
diff --git a/src/backends/NeonTensorHandle.hpp b/src/backends/NeonTensorHandle.hpp
index 77f3cc1..9045b8f 100644
--- a/src/backends/NeonTensorHandle.hpp
+++ b/src/backends/NeonTensorHandle.hpp
@@ -5,7 +5,7 @@
 #pragma once
 
 #include "OutputHandler.hpp"
-#include "ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/MemoryGroup.h>
 #include <arm_compute/runtime/IMemoryGroup.h>
diff --git a/src/backends/NeonWorkloadUtils.cpp b/src/backends/NeonWorkloadUtils.cpp
index 8782801..e388949 100644
--- a/src/backends/NeonWorkloadUtils.cpp
+++ b/src/backends/NeonWorkloadUtils.cpp
@@ -3,13 +3,13 @@
 // SPDX-License-Identifier: MIT
 //
 #include "NeonWorkloadUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/NeonTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/NeonTensorHandle.hpp>
 
-#include "armnn/Utils.hpp"
-#include "armnn/Exceptions.hpp"
+#include <armnn/Utils.hpp>
+#include <armnn/Exceptions.hpp>
 
 #include <cstring>
 #include <boost/assert.hpp>
@@ -19,8 +19,8 @@
 #include "Profiling.hpp"
 
 #include "NeonLayerSupport.hpp"
-#include "armnn/Types.hpp"
-#include "Half.hpp"
+#include <armnn/Types.hpp>
+#include <Half.hpp>
 
 using namespace armnn::armcomputetensorutils;
 
diff --git a/src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp
index bedf3dc..1d6bf70 100644
--- a/src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonActivationFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonActivationFloatWorkload.hpp"
-#include "backends/ArmComputeUtils.hpp"
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 
 namespace armnn
diff --git a/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp b/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
index a9b94d2..a5bba48 100644
--- a/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
+++ b/src/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonActivationUint8Workload.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/NeonLayerSupport.hpp"
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/NeonLayerSupport.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp
index adc34e9..445e32e 100644
--- a/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonAdditionFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonAdditionFloatWorkload.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp b/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
index f4a09d4..59afc70 100644
--- a/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
+++ b/src/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
@@ -6,7 +6,7 @@
 #pragma once
 
 #include <arm_compute/core/Types.h>
-#include <backends/ArmComputeTensorUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #include <backends/CpuTensorHandle.hpp>
 #include <backends/NeonTensorHandle.hpp>
 #include <backends/NeonWorkloadUtils.hpp>
@@ -14,7 +14,6 @@
 #include <Half.hpp>
 
 #include <boost/cast.hpp>
-#include "Half.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp
index 6f5c948..2383e78 100644
--- a/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonBatchNormalizationFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "NeonBatchNormalizationFloatWorkload.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "armnn/ArmNN.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/ArmNN.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp b/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
index 912e2d5..ee69088 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
@@ -3,14 +3,14 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/NeonLayerSupport.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/NeonLayerSupport.hpp>
 
 #include "NeonConvolution2dBaseWorkload.hpp"
 
-#include "armnn/Types.hpp"
-#include "Half.hpp"
+#include <armnn/Types.hpp>
+#include <Half.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp b/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
index 77d90cd..93f71c3 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
+++ b/src/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
@@ -5,13 +5,13 @@
 
 #pragma once
 
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/NeonWorkloadUtils.hpp"
-#include "backends/Workload.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/NeonWorkloadUtils.hpp>
+#include <backends/Workload.hpp>
 
-#include "arm_compute/runtime/MemoryManagerOnDemand.h"
+#include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <boost/optional.hpp>
 
diff --git a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp
index ca7a0c5..ea7a843 100644
--- a/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonConvolution2dFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "NeonConvolution2dFloatWorkload.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/NeonLayerSupport.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/NeonLayerSupport.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
index e79e14f..ec6c977 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include "NeonDepthwiseConvolutionBaseWorkload.hpp"
 
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp
index 1ec1417..b3f7da4 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionFloatWorkload.cpp
@@ -4,10 +4,9 @@
 //
 
 #include "NeonDepthwiseConvolutionFloatWorkload.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
index b7813a5..de8a2ae 100644
--- a/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
+++ b/src/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
@@ -4,10 +4,9 @@
 //
 
 #include "NeonDepthwiseConvolutionUint8Workload.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonFullyConnectedFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonFullyConnectedFloatWorkload.cpp
index 2036ecb..8fcc095 100644
--- a/src/backends/NeonWorkloads/NeonFullyConnectedFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonFullyConnectedFloatWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "NeonFullyConnectedFloatWorkload.hpp"
 
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp
index 7296e67..dee789a 100644
--- a/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonL2NormalizationFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonL2NormalizationFloatWorkload.hpp"
-#include "backends/ArmComputeUtils.hpp"
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp
index 4534c37..ee97856 100644
--- a/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonNormalizationFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "NeonNormalizationFloatWorkload.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp b/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp
index 9bc76ba..7a20c70 100644
--- a/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonPermuteWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonPermuteWorkload.hpp"
-#include "backends/NeonTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/NeonTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/core/Error.h>
 
diff --git a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp b/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
index 208d08c..95286f4 100644
--- a/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "NeonPooling2dBaseWorkload.hpp"
-#include "backends/NeonLayerSupport.hpp"
-#include "backends/NeonTensorHandle.hpp"
-#include "backends/ArmComputeUtils.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/NeonLayerSupport.hpp>
+#include <backends/NeonTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp b/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp
index ca9e4f0..0e11d82 100644
--- a/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonSoftmaxBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include "NeonSoftmaxBaseWorkload.hpp"
 
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp b/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp
index 3f37d82..2acb829 100644
--- a/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp
+++ b/src/backends/NeonWorkloads/NeonSubtractionFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonSubtractionFloatWorkload.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/ArmComputeTensorUtils.cpp b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
similarity index 97%
rename from src/backends/ArmComputeTensorUtils.cpp
rename to src/backends/aclCommon/ArmComputeTensorUtils.cpp
index e65c4ad..d48408c 100644
--- a/src/backends/ArmComputeTensorUtils.cpp
+++ b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
@@ -2,8 +2,8 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include "ArmComputeTensorUtils.hpp"
-#include "ArmComputeUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backends/aclCommon/ArmComputeUtils.hpp>
 
 #include "armnn/Exceptions.hpp"
 #include <armnn/Descriptors.hpp>
diff --git a/src/backends/ArmComputeTensorUtils.hpp b/src/backends/aclCommon/ArmComputeTensorUtils.hpp
similarity index 100%
rename from src/backends/ArmComputeTensorUtils.hpp
rename to src/backends/aclCommon/ArmComputeTensorUtils.hpp
diff --git a/src/backends/ArmComputeUtils.hpp b/src/backends/aclCommon/ArmComputeUtils.hpp
similarity index 100%
rename from src/backends/ArmComputeUtils.hpp
rename to src/backends/aclCommon/ArmComputeUtils.hpp
diff --git a/src/backends/aclCommon/CMakeLists.txt b/src/backends/aclCommon/CMakeLists.txt
new file mode 100644
index 0000000..42f9142
--- /dev/null
+++ b/src/backends/aclCommon/CMakeLists.txt
@@ -0,0 +1,15 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+list(APPEND armnnAclCommon_sources
+    ArmComputeTensorUtils.hpp
+    ArmComputeTensorUtils.cpp
+    ArmComputeUtils.hpp
+)
+
+add_library(armnnAclCommon STATIC ${armnnAclCommon_sources})
+target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src)
+target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
+target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/aclCommon/common.cmake b/src/backends/aclCommon/common.cmake
new file mode 100644
index 0000000..d9d035f
--- /dev/null
+++ b/src/backends/aclCommon/common.cmake
@@ -0,0 +1,9 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+if(ARMCOMPUTENEON OR ARMCOMPUTECL)
+    add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/aclCommon)
+    list(APPEND armnnLibraries armnnAclCommon)
+endif()
diff --git a/src/backends/backends.cmake b/src/backends/backends.cmake
index 462365c..6f76106 100644
--- a/src/backends/backends.cmake
+++ b/src/backends/backends.cmake
@@ -7,9 +7,11 @@
 list(APPEND armnnLibraries armnnBackendsCommon)
 
 # single place to use wildcards, so we can include
-# yet unknown backend modules
+# yet unknown backend modules and corresponding common libraries
+FILE(GLOB commonIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/common.cmake)
 FILE(GLOB backendIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/backend.cmake)
 
-foreach(backendInclude ${backendIncludes})
+# prefer to include common code first so backends can depend on them
+foreach(backendInclude ${commonIncludes} ${backendIncludes})
     include(${backendInclude})
 endforeach()
diff --git a/src/backends/test/LayerTests.cpp b/src/backends/test/LayerTests.cpp
index 4dcc36f..8f06690 100644
--- a/src/backends/test/LayerTests.cpp
+++ b/src/backends/test/LayerTests.cpp
@@ -11,14 +11,14 @@
 #include <boost/test/unit_test.hpp>
 #include <boost/assert.hpp>
 
-#include "armnn/LayerSupport.hpp"
+#include <armnn/LayerSupport.hpp>
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/WorkloadFactory.hpp"
+#include <backends/CpuTensorHandle.hpp>
+#include <backends/WorkloadFactory.hpp>
 
 #ifdef ARMCOMPUTECL_ENABLED
-#include "backends/ClTensorHandle.hpp"
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/ClTensorHandle.hpp>
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #endif
 
 #include <algorithm>
diff --git a/src/backends/test/MemCopyTests.cpp b/src/backends/test/MemCopyTests.cpp
index 44089c9..7ba5507 100644
--- a/src/backends/test/MemCopyTests.cpp
+++ b/src/backends/test/MemCopyTests.cpp
@@ -5,22 +5,22 @@
 #include <boost/test/unit_test.hpp>
 #include <boost/multi_array.hpp>
 
-#include "armnn/ArmNN.hpp"
-#include "backends/RefWorkloadFactory.hpp"
+#include <armnn/ArmNN.hpp>
+#include <backends/RefWorkloadFactory.hpp>
 #if ARMCOMPUTECL_ENABLED
-#include "backends/ClWorkloadFactory.hpp"
+#include <backends/ClWorkloadFactory.hpp>
 #endif
 #if ARMCOMPUTENEON_ENABLED
-#include "backends/NeonWorkloadFactory.hpp"
+#include <backends/NeonWorkloadFactory.hpp>
 #endif
-#include "backends/CpuTensorHandle.hpp"
+#include <backends/CpuTensorHandle.hpp>
 #include "test/TensorHelpers.hpp"
 
 #include "TensorCopyUtils.hpp"
 #include "WorkloadTestUtils.hpp"
 
 #if ARMCOMPUTECL_ENABLED || ARMCOMPUTENEON_ENABLED
-#include "../ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #endif
 
 BOOST_AUTO_TEST_SUITE(MemCopyTestSuite)
diff --git a/src/backends/test/TensorCopyUtils.cpp b/src/backends/test/TensorCopyUtils.cpp
index dc5864b..530dc79 100644
--- a/src/backends/test/TensorCopyUtils.cpp
+++ b/src/backends/test/TensorCopyUtils.cpp
@@ -19,7 +19,7 @@
 #endif
 
 #if ARMCOMPUTECLENABLED || ARMCOMPUTENEON_ENABLED
-#include "backends/ArmComputeTensorUtils.hpp"
+#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #endif
 
 #include "backends/CpuTensorHandle.hpp"