IVGCVSW-6685-6686 Modify workloads to extend Neon/Cl BaseWorkload

* Neon workloads to extend NeonBaseWorkload instead of BaseWorkload
* Cl workload to extend ClBaseWorkload instead of BaseWorkload


Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I8f39a31a89a8865ac4acf18573ab290d548d2864
diff --git a/src/backends/neon/workloads/NeonAbsWorkload.cpp b/src/backends/neon/workloads/NeonAbsWorkload.cpp
index bd476be..8854771 100644
--- a/src/backends/neon/workloads/NeonAbsWorkload.cpp
+++ b/src/backends/neon/workloads/NeonAbsWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -23,7 +23,7 @@
 }
 
 NeonAbsWorkload::NeonAbsWorkload(const AbsQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<AbsQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<AbsQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonAbsWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonAbsWorkload.hpp b/src/backends/neon/workloads/NeonAbsWorkload.hpp
index 3440af5..5251085 100644
--- a/src/backends/neon/workloads/NeonAbsWorkload.hpp
+++ b/src/backends/neon/workloads/NeonAbsWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
@@ -15,7 +15,7 @@
 
 arm_compute::Status NeonAbsWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonAbsWorkload : public BaseWorkload<AbsQueueDescriptor>
+class NeonAbsWorkload : public NeonBaseWorkload<AbsQueueDescriptor>
 {
 public:
     NeonAbsWorkload(const AbsQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonAdditionWorkload.cpp b/src/backends/neon/workloads/NeonAdditionWorkload.cpp
index fdfe8b5..004af9b 100644
--- a/src/backends/neon/workloads/NeonAdditionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonAdditionWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -39,7 +39,7 @@
 
 NeonAdditionWorkload::NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor,
                                            const WorkloadInfo& info)
-    : BaseWorkload<AdditionQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<AdditionQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonAdditionWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonAdditionWorkload.hpp b/src/backends/neon/workloads/NeonAdditionWorkload.hpp
index b691e66..491d3b8 100644
--- a/src/backends/neon/workloads/NeonAdditionWorkload.hpp
+++ b/src/backends/neon/workloads/NeonAdditionWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/core/Types.h>
@@ -19,7 +19,7 @@
                                                  const TensorInfo& output,
                                                  const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonAdditionWorkload : public BaseWorkload<AdditionQueueDescriptor>
+class NeonAdditionWorkload : public NeonBaseWorkload<AdditionQueueDescriptor>
 {
 public:
     NeonAdditionWorkload(const AdditionQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonArgMinMaxWorkload.cpp b/src/backends/neon/workloads/NeonArgMinMaxWorkload.cpp
index aea5fe5..06f7630 100644
--- a/src/backends/neon/workloads/NeonArgMinMaxWorkload.cpp
+++ b/src/backends/neon/workloads/NeonArgMinMaxWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -54,7 +54,7 @@
 
 NeonArgMinMaxWorkload::NeonArgMinMaxWorkload(const ArgMinMaxQueueDescriptor& descriptor,
                                              const WorkloadInfo& info)
-        : BaseWorkload<ArgMinMaxQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<ArgMinMaxQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonArgMinMaxWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonArgMinMaxWorkload.hpp b/src/backends/neon/workloads/NeonArgMinMaxWorkload.hpp
index f5d33b3..ce1681b 100644
--- a/src/backends/neon/workloads/NeonArgMinMaxWorkload.hpp
+++ b/src/backends/neon/workloads/NeonArgMinMaxWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -17,7 +17,7 @@
                                                   const TensorInfo& output,
                                                   const ArgMinMaxDescriptor& descriptor);
 
-class NeonArgMinMaxWorkload : public BaseWorkload<ArgMinMaxQueueDescriptor>
+class NeonArgMinMaxWorkload : public NeonBaseWorkload<ArgMinMaxQueueDescriptor>
 {
 public:
     NeonArgMinMaxWorkload(const ArgMinMaxQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonBatchNormalizationWorkload.cpp b/src/backends/neon/workloads/NeonBatchNormalizationWorkload.cpp
index 897a54d..8e78846 100644
--- a/src/backends/neon/workloads/NeonBatchNormalizationWorkload.cpp
+++ b/src/backends/neon/workloads/NeonBatchNormalizationWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -58,7 +58,7 @@
 
 NeonBatchNormalizationWorkload::NeonBatchNormalizationWorkload(
     const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<BatchNormalizationQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<BatchNormalizationQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonBatchNormalizationWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonBatchNormalizationWorkload.hpp b/src/backends/neon/workloads/NeonBatchNormalizationWorkload.hpp
index 3cceefe..aa39d2a 100644
--- a/src/backends/neon/workloads/NeonBatchNormalizationWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBatchNormalizationWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/runtime/Tensor.h>
@@ -24,7 +24,7 @@
                                                    const BatchNormalizationDescriptor& descriptor,
                                                    const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonBatchNormalizationWorkload : public BaseWorkload<BatchNormalizationQueueDescriptor>
+class NeonBatchNormalizationWorkload : public NeonBaseWorkload<BatchNormalizationQueueDescriptor>
 {
 public:
     NeonBatchNormalizationWorkload(const BatchNormalizationQueueDescriptor& descriptor,
diff --git a/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.cpp b/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.cpp
index 2a35475..3f477bc 100644
--- a/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.cpp
+++ b/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -37,7 +37,7 @@
 
 NeonBatchToSpaceNdWorkload::NeonBatchToSpaceNdWorkload(const BatchToSpaceNdQueueDescriptor& descriptor,
                                                        const WorkloadInfo& info)
-    : BaseWorkload<BatchToSpaceNdQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<BatchToSpaceNdQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonBatchToSpaceWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.hpp b/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.hpp
index 21eebe0..55f773e 100644
--- a/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBatchToSpaceNdWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn/Tensor.hpp>
 #include <armnn/Descriptors.hpp>
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEBatchToSpaceLayer.h>
 
@@ -19,10 +19,10 @@
                                                        const TensorInfo& output,
                                                        const BatchToSpaceNdDescriptor& descriptor);
 
-class NeonBatchToSpaceNdWorkload : public BaseWorkload<BatchToSpaceNdQueueDescriptor>
+class NeonBatchToSpaceNdWorkload : public NeonBaseWorkload<BatchToSpaceNdQueueDescriptor>
 {
 public:
-    using BaseWorkload<BatchToSpaceNdQueueDescriptor>::BaseWorkload;
+    using NeonBaseWorkload<BatchToSpaceNdQueueDescriptor>::NeonBaseWorkload;
 
     NeonBatchToSpaceNdWorkload(const BatchToSpaceNdQueueDescriptor& descriptor, const WorkloadInfo& info);
 
diff --git a/src/backends/neon/workloads/NeonCastWorkload.cpp b/src/backends/neon/workloads/NeonCastWorkload.cpp
index 50e212e..bbac207 100644
--- a/src/backends/neon/workloads/NeonCastWorkload.cpp
+++ b/src/backends/neon/workloads/NeonCastWorkload.cpp
@@ -25,7 +25,7 @@
 }
 
 NeonCastWorkload::NeonCastWorkload(const CastQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<CastQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<CastQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonCastWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonCastWorkload.hpp b/src/backends/neon/workloads/NeonCastWorkload.hpp
index 86edd90..ad0665c 100644
--- a/src/backends/neon/workloads/NeonCastWorkload.hpp
+++ b/src/backends/neon/workloads/NeonCastWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NECast.h>
@@ -15,7 +15,7 @@
 
 arm_compute::Status NeonCastValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonCastWorkload : public BaseWorkload<CastQueueDescriptor>
+class NeonCastWorkload : public NeonBaseWorkload<CastQueueDescriptor>
 {
 public:
     NeonCastWorkload(const CastQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonChannelShuffleWorkload.cpp b/src/backends/neon/workloads/NeonChannelShuffleWorkload.cpp
index b28ee44..2f91c7b 100644
--- a/src/backends/neon/workloads/NeonChannelShuffleWorkload.cpp
+++ b/src/backends/neon/workloads/NeonChannelShuffleWorkload.cpp
@@ -50,7 +50,7 @@
 
 NeonChannelShuffleWorkload::NeonChannelShuffleWorkload(const ChannelShuffleQueueDescriptor& descriptor, 
                                                        const WorkloadInfo& info)
-    : BaseWorkload<ChannelShuffleQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ChannelShuffleQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonChannelShufflenWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonChannelShuffleWorkload.hpp b/src/backends/neon/workloads/NeonChannelShuffleWorkload.hpp
index 73d645f..f47e8eb 100644
--- a/src/backends/neon/workloads/NeonChannelShuffleWorkload.hpp
+++ b/src/backends/neon/workloads/NeonChannelShuffleWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEChannelShuffleLayer.h>
@@ -17,7 +17,7 @@
                                                const TensorInfo& output,
                                                const ChannelShuffleDescriptor& descriptor);
 
-class NeonChannelShuffleWorkload : public BaseWorkload<ChannelShuffleQueueDescriptor>
+class NeonChannelShuffleWorkload : public NeonBaseWorkload<ChannelShuffleQueueDescriptor>
 {
 public:
     NeonChannelShuffleWorkload(const ChannelShuffleQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonComparisonWorkload.cpp b/src/backends/neon/workloads/NeonComparisonWorkload.cpp
index bd66c2f..23f6ca4 100644
--- a/src/backends/neon/workloads/NeonComparisonWorkload.cpp
+++ b/src/backends/neon/workloads/NeonComparisonWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -32,7 +32,7 @@
 }
 
 NeonComparisonWorkload::NeonComparisonWorkload(const ComparisonQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ComparisonQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ComparisonQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonComparisonWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonComparisonWorkload.hpp b/src/backends/neon/workloads/NeonComparisonWorkload.hpp
index 1b01053..2af9b47 100644
--- a/src/backends/neon/workloads/NeonComparisonWorkload.hpp
+++ b/src/backends/neon/workloads/NeonComparisonWorkload.hpp
@@ -1,10 +1,12 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/NEON/functions/NEElementwiseOperations.h>
@@ -17,7 +19,7 @@
                                                    const TensorInfo& output,
                                                    const ComparisonDescriptor& descriptor);
 
-class NeonComparisonWorkload : public BaseWorkload<ComparisonQueueDescriptor>
+class NeonComparisonWorkload : public NeonBaseWorkload<ComparisonQueueDescriptor>
 {
 public:
     NeonComparisonWorkload(const ComparisonQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonConcatWorkload.cpp b/src/backends/neon/workloads/NeonConcatWorkload.cpp
index 88e0e8d..5b538b6 100644
--- a/src/backends/neon/workloads/NeonConcatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConcatWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -48,7 +48,7 @@
 
 NeonConcatWorkload::NeonConcatWorkload(
 const ConcatQueueDescriptor& descriptor, const WorkloadInfo& info)
-        : BaseWorkload<ConcatQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<ConcatQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonConcatWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonConcatWorkload.hpp b/src/backends/neon/workloads/NeonConcatWorkload.hpp
index cf93035..cd2a5b2 100644
--- a/src/backends/neon/workloads/NeonConcatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConcatWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -19,12 +19,12 @@
                                                const TensorInfo& output,
                                                const OriginsDescriptor& descriptor);
 
-class NeonConcatWorkload : public BaseWorkload<ConcatQueueDescriptor>
+class NeonConcatWorkload : public NeonBaseWorkload<ConcatQueueDescriptor>
 {
 public:
     NeonConcatWorkload(const ConcatQueueDescriptor& descriptor, const WorkloadInfo& info);
 
-    using BaseWorkload<ConcatQueueDescriptor>::BaseWorkload;
+    using NeonBaseWorkload<ConcatQueueDescriptor>::NeonBaseWorkload;
     void Execute() const override;
 
 private:
diff --git a/src/backends/neon/workloads/NeonConstantWorkload.cpp b/src/backends/neon/workloads/NeonConstantWorkload.cpp
index 471a0bb..bbdee78 100644
--- a/src/backends/neon/workloads/NeonConstantWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConstantWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -12,7 +12,7 @@
 #include <armnn/utility/PolymorphicDowncast.hpp>
 #include <neon/NeonTensorHandle.hpp>
 #include <armnn/backends/TensorHandle.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 namespace armnn
 {
@@ -46,7 +46,7 @@
 
 NeonConstantWorkload::NeonConstantWorkload(const ConstantQueueDescriptor& descriptor,
                                            const WorkloadInfo& info)
-    : BaseWorkload<ConstantQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ConstantQueueDescriptor>(descriptor, info)
     , m_RanOnce(false)
 {
 }
diff --git a/src/backends/neon/workloads/NeonConstantWorkload.hpp b/src/backends/neon/workloads/NeonConstantWorkload.hpp
index f800a45..3ca0bce 100644
--- a/src/backends/neon/workloads/NeonConstantWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConstantWorkload.hpp
@@ -1,17 +1,19 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
 arm_compute::Status NeonConstantWorkloadValidate(const TensorInfo& output);
 
-class NeonConstantWorkload : public BaseWorkload<ConstantQueueDescriptor>
+class NeonConstantWorkload : public NeonBaseWorkload<ConstantQueueDescriptor>
 {
 public:
     NeonConstantWorkload(const ConstantQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.cpp b/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.cpp
index e8cc125..dcef025 100644
--- a/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.hpp b/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.hpp
index eb20912..9770fbd 100644
--- a/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertBf16ToFp32Workload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
index 0d6bb04..1b9e1bc 100644
--- a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
index 9d98f92..9159e51 100644
--- a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.cpp b/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.cpp
index 84d3c78..ac6a69d 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.hpp b/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.hpp
index 7c8d45d..6c01187 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToBf16Workload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
index 7f6d4d6..d65cba0 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
index 71a7159..8e9f11b 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
index 6fb34d7..fce57e6 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -68,7 +68,7 @@
     const WorkloadInfo& info,
     std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager,
     const bool isFastMathEnabled)
-    : BaseWorkload<Convolution2dQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<Convolution2dQueueDescriptor>(descriptor, info)
 {
     using arm_compute::NEConvolutionLayer;
 
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
index a28321d..93e5cb4 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/runtime/Tensor.h>
@@ -24,7 +24,7 @@
                                                       bool isFastMathEnabled = false,
                                                       const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonConvolution2dWorkload : public BaseWorkload<Convolution2dQueueDescriptor>
+class NeonConvolution2dWorkload : public NeonBaseWorkload<Convolution2dQueueDescriptor>
 {
 public:
     using BaseWorkload<Convolution2dQueueDescriptor>::m_Data;
diff --git a/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
index 5d19737..6aa4b69 100644
--- a/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution3dWorkload.cpp
@@ -57,7 +57,7 @@
                                                      const WorkloadInfo& info,
                                                      std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager,
                                                      const bool isFastMathEnabled)
-    : BaseWorkload<Convolution3dQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<Convolution3dQueueDescriptor>(descriptor, info)
 {
     IgnoreUnused(memoryManager);
 
diff --git a/src/backends/neon/workloads/NeonConvolution3dWorkload.hpp b/src/backends/neon/workloads/NeonConvolution3dWorkload.hpp
index a14dc24..50a6130 100644
--- a/src/backends/neon/workloads/NeonConvolution3dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConvolution3dWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/runtime/Tensor.h>
@@ -24,7 +24,7 @@
                                                       bool isFastMathEnabled = false,
                                                       const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonConvolution3dWorkload : public BaseWorkload<Convolution3dQueueDescriptor>
+class NeonConvolution3dWorkload : public NeonBaseWorkload<Convolution3dQueueDescriptor>
 {
 public:
     using BaseWorkload<Convolution3dQueueDescriptor>::m_Data;
diff --git a/src/backends/neon/workloads/NeonDepthToSpaceWorkload.cpp b/src/backends/neon/workloads/NeonDepthToSpaceWorkload.cpp
index 76829f3..c3c069a 100644
--- a/src/backends/neon/workloads/NeonDepthToSpaceWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDepthToSpaceWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -31,7 +31,7 @@
 
 NeonDepthToSpaceWorkload::NeonDepthToSpaceWorkload(const DepthToSpaceQueueDescriptor& descriptor,
                                                    const WorkloadInfo& info)
-    : BaseWorkload<DepthToSpaceQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<DepthToSpaceQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonDepthToSpaceWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonDepthToSpaceWorkload.hpp b/src/backends/neon/workloads/NeonDepthToSpaceWorkload.hpp
index 09d9293..fbc092b 100644
--- a/src/backends/neon/workloads/NeonDepthToSpaceWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDepthToSpaceWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -7,7 +7,7 @@
 
 #include <armnn/Descriptors.hpp>
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEDepthToSpaceLayer.h>
 
@@ -18,7 +18,7 @@
                                                      const TensorInfo& output,
                                                      const DepthToSpaceDescriptor& descriptor);
 
-class NeonDepthToSpaceWorkload : public BaseWorkload<DepthToSpaceQueueDescriptor>
+class NeonDepthToSpaceWorkload : public NeonBaseWorkload<DepthToSpaceQueueDescriptor>
 {
 public:
     NeonDepthToSpaceWorkload(const DepthToSpaceQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
index cdb3368..42a476c 100644
--- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -76,7 +76,7 @@
 NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload(
     const DepthwiseConvolution2dQueueDescriptor& descriptor,
     const WorkloadInfo& info)
-    : BaseWorkload<DepthwiseConvolution2dQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<DepthwiseConvolution2dQueueDescriptor>(descriptor, info)
 {
     // ArmNN's weight format for depthwise is [ 1, H, W, I*M ]
     auto& weightInfo = m_Data.m_Weight->GetTensorInfo();
diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
index acb190f..45c646a 100644
--- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/runtime/Tensor.h>
@@ -23,7 +23,7 @@
                                                              const ActivationDescriptor* activationDescriptor
                                                                      = nullptr);
 
-class NeonDepthwiseConvolutionWorkload : public BaseWorkload<DepthwiseConvolution2dQueueDescriptor>
+class NeonDepthwiseConvolutionWorkload : public NeonBaseWorkload<DepthwiseConvolution2dQueueDescriptor>
 {
 public:
     NeonDepthwiseConvolutionWorkload(const DepthwiseConvolution2dQueueDescriptor& descriptor,
diff --git a/src/backends/neon/workloads/NeonDequantizeWorkload.cpp b/src/backends/neon/workloads/NeonDequantizeWorkload.cpp
index 62c76fc..2764141 100644
--- a/src/backends/neon/workloads/NeonDequantizeWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDequantizeWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -29,7 +29,7 @@
 }
 
 NeonDequantizeWorkload::NeonDequantizeWorkload(const DequantizeQueueDescriptor& descriptor, const WorkloadInfo& info)
-        : BaseWorkload<DequantizeQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<DequantizeQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonDequantizeWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonDequantizeWorkload.hpp b/src/backends/neon/workloads/NeonDequantizeWorkload.hpp
index f9ffb78..6a36769 100644
--- a/src/backends/neon/workloads/NeonDequantizeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDequantizeWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -18,7 +18,7 @@
 arm_compute::Status NeonDequantizeWorkloadValidate(const TensorInfo& input,
                                                    const TensorInfo& output);
 
-class NeonDequantizeWorkload : public BaseWorkload<DequantizeQueueDescriptor>
+class NeonDequantizeWorkload : public NeonBaseWorkload<DequantizeQueueDescriptor>
 {
 public:
     NeonDequantizeWorkload(const DequantizeQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.cpp b/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.cpp
index a9cb5c4..48db83d 100644
--- a/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -75,7 +75,7 @@
 NeonDetectionPostProcessWorkload::NeonDetectionPostProcessWorkload(
     const DetectionPostProcessQueueDescriptor& descriptor,
     const WorkloadInfo& info)
-    : BaseWorkload<DetectionPostProcessQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<DetectionPostProcessQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonDetectionPostProcessWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.hpp b/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.hpp
index fd26bef..e549c7e 100644
--- a/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDetectionPostProcessWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEDetectionPostProcessLayer.h>
@@ -22,7 +22,7 @@
                                                      const TensorInfo& numDetections,
                                                      const DetectionPostProcessDescriptor &descriptor);
 
-class NeonDetectionPostProcessWorkload : public BaseWorkload<DetectionPostProcessQueueDescriptor>
+class NeonDetectionPostProcessWorkload : public NeonBaseWorkload<DetectionPostProcessQueueDescriptor>
 {
 public:
     NeonDetectionPostProcessWorkload(
diff --git a/src/backends/neon/workloads/NeonDivisionWorkload.cpp b/src/backends/neon/workloads/NeonDivisionWorkload.cpp
index 08caef6..19c2bf5 100644
--- a/src/backends/neon/workloads/NeonDivisionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDivisionWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -35,7 +35,7 @@
 
 NeonDivisionWorkload::NeonDivisionWorkload(const DivisionQueueDescriptor& descriptor,
                                          const WorkloadInfo& info)
-    : BaseWorkload<DivisionQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<DivisionQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonDivisionWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonDivisionWorkload.hpp b/src/backends/neon/workloads/NeonDivisionWorkload.hpp
index fffe02f..d753d8e 100644
--- a/src/backends/neon/workloads/NeonDivisionWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDivisionWorkload.hpp
@@ -1,10 +1,12 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/NEON/functions/NEElementwiseOperations.h>
@@ -17,7 +19,7 @@
                                                  const TensorInfo& output,
                                                  const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonDivisionWorkload : public BaseWorkload<DivisionQueueDescriptor>
+class NeonDivisionWorkload : public NeonBaseWorkload<DivisionQueueDescriptor>
 {
 public:
     NeonDivisionWorkload(const DivisionQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonExpWorkload.cpp b/src/backends/neon/workloads/NeonExpWorkload.cpp
index aff8e72..8c65950 100644
--- a/src/backends/neon/workloads/NeonExpWorkload.cpp
+++ b/src/backends/neon/workloads/NeonExpWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -23,7 +23,7 @@
 }
 
 NeonExpWorkload::NeonExpWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonExpWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonExpWorkload.hpp b/src/backends/neon/workloads/NeonExpWorkload.hpp
index d7053ef..874434d 100644
--- a/src/backends/neon/workloads/NeonExpWorkload.hpp
+++ b/src/backends/neon/workloads/NeonExpWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
 
@@ -14,7 +14,7 @@
 
 arm_compute::Status NeonExpWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonExpWorkload : public BaseWorkload<ElementwiseUnaryQueueDescriptor>
+class NeonExpWorkload : public NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>
 {
 public:
     NeonExpWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonFillWorkload.cpp b/src/backends/neon/workloads/NeonFillWorkload.cpp
index 3cfa56a..bc42482 100644
--- a/src/backends/neon/workloads/NeonFillWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFillWorkload.cpp
@@ -17,7 +17,7 @@
 using namespace armcomputetensorutils;
 
 NeonFillWorkload::NeonFillWorkload(const FillQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<FillQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<FillQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonFillWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonFillWorkload.hpp b/src/backends/neon/workloads/NeonFillWorkload.hpp
index adffaa3..b33c308 100644
--- a/src/backends/neon/workloads/NeonFillWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFillWorkload.hpp
@@ -6,13 +6,13 @@
 #pragma once
 
 #include <armnn/backends/WorkloadData.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/core/Error.h>
 
 namespace armnn {
 
-class NeonFillWorkload : public BaseWorkload<FillQueueDescriptor>
+class NeonFillWorkload : public NeonBaseWorkload<FillQueueDescriptor>
 {
 public:
     NeonFillWorkload(const FillQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonFloorFloatWorkload.cpp b/src/backends/neon/workloads/NeonFloorFloatWorkload.cpp
index d728e00..b97e3ce 100644
--- a/src/backends/neon/workloads/NeonFloorFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFloorFloatWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
index 75b3546..7113931 100644
--- a/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
index 3992788..39a5696 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -53,7 +53,7 @@
 NeonFullyConnectedWorkload::NeonFullyConnectedWorkload(const FullyConnectedQueueDescriptor& descriptor,
                                                        const WorkloadInfo& info,
                                                        ACLMemManagerOnDemand& memoryManager)
-    : BaseWorkload<FullyConnectedQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<FullyConnectedQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonFullyConnectedWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
index 129fb73..b5f6160 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -24,7 +24,7 @@
                                                        const FullyConnectedDescriptor& descriptor,
                                                        const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonFullyConnectedWorkload : public BaseWorkload<FullyConnectedQueueDescriptor>
+class NeonFullyConnectedWorkload : public NeonBaseWorkload<FullyConnectedQueueDescriptor>
 {
 public:
     NeonFullyConnectedWorkload(const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info,
diff --git a/src/backends/neon/workloads/NeonGatherWorkload.cpp b/src/backends/neon/workloads/NeonGatherWorkload.cpp
index 4cb17ca..c1378e9 100644
--- a/src/backends/neon/workloads/NeonGatherWorkload.cpp
+++ b/src/backends/neon/workloads/NeonGatherWorkload.cpp
@@ -26,7 +26,7 @@
 
 NeonGatherWorkload::NeonGatherWorkload(const GatherQueueDescriptor& descriptor,
                                        const WorkloadInfo& info)
-        : BaseWorkload<GatherQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<GatherQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonGatherWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonGatherWorkload.hpp b/src/backends/neon/workloads/NeonGatherWorkload.hpp
index 4c208fe..51906d2 100644
--- a/src/backends/neon/workloads/NeonGatherWorkload.hpp
+++ b/src/backends/neon/workloads/NeonGatherWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEGather.h>
 
@@ -16,7 +16,7 @@
                                                const TensorInfo& output,
                                                const GatherDescriptor& descriptor);
 
-class NeonGatherWorkload : public BaseWorkload<GatherQueueDescriptor>
+class NeonGatherWorkload : public NeonBaseWorkload<GatherQueueDescriptor>
 {
 public:
     NeonGatherWorkload(const GatherQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.cpp b/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.cpp
index 8ece5b0..601b619 100644
--- a/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.cpp
+++ b/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -33,7 +33,7 @@
 NeonInstanceNormalizationWorkload::NeonInstanceNormalizationWorkload(
     const InstanceNormalizationQueueDescriptor& descriptor,
     const WorkloadInfo& info)
-    : BaseWorkload<InstanceNormalizationQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<InstanceNormalizationQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonInstanceNormalizationWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.hpp b/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.hpp
index 4d40837..28fc4e9 100644
--- a/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.hpp
+++ b/src/backends/neon/workloads/NeonInstanceNormalizationWorkload.hpp
@@ -1,10 +1,12 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/NEON/functions/NEInstanceNormalizationLayer.h>
@@ -16,7 +18,7 @@
                                                               const TensorInfo& output,
                                                               const InstanceNormalizationDescriptor& descriptor);
 
-class NeonInstanceNormalizationWorkload : public BaseWorkload<InstanceNormalizationQueueDescriptor>
+class NeonInstanceNormalizationWorkload : public NeonBaseWorkload<InstanceNormalizationQueueDescriptor>
 {
 public:
     NeonInstanceNormalizationWorkload(const InstanceNormalizationQueueDescriptor& descriptor,
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
index 33b4609..887f25a 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
index d87e5d0..82f0639 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
index 8a97432..0e64915 100644
--- a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
@@ -33,7 +33,7 @@
 NeonLogSoftmaxWorkload::NeonLogSoftmaxWorkload(const LogSoftmaxQueueDescriptor& descriptor,
                                                const WorkloadInfo& info,
                                                std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager)
-    : BaseWorkload<LogSoftmaxQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<LogSoftmaxQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonLogSoftmaxWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.hpp b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.hpp
index 4cae08e..1ef9a14 100644
--- a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.hpp
@@ -6,7 +6,7 @@
 #pragma once
 
 #include <armnn/Descriptors.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -21,7 +21,7 @@
                                                    const TensorInfo& output,
                                                    const LogSoftmaxDescriptor& descriptor);
 
-class NeonLogSoftmaxWorkload : public BaseWorkload<LogSoftmaxQueueDescriptor>
+class NeonLogSoftmaxWorkload : public NeonBaseWorkload<LogSoftmaxQueueDescriptor>
 {
 public:
     NeonLogSoftmaxWorkload(const LogSoftmaxQueueDescriptor& descriptor, const WorkloadInfo& info,
diff --git a/src/backends/neon/workloads/NeonLogWorkload.cpp b/src/backends/neon/workloads/NeonLogWorkload.cpp
index 0fb8f8a..e0d59cb 100644
--- a/src/backends/neon/workloads/NeonLogWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogWorkload.cpp
@@ -23,7 +23,7 @@
 }
 
 NeonLogWorkload::NeonLogWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonLogWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonLogWorkload.hpp b/src/backends/neon/workloads/NeonLogWorkload.hpp
index d505aa8..d890358 100644
--- a/src/backends/neon/workloads/NeonLogWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLogWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
 
@@ -14,7 +14,7 @@
 
 arm_compute::Status NeonLogWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonLogWorkload : public BaseWorkload<ElementwiseUnaryQueueDescriptor>
+class NeonLogWorkload : public NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>
 {
 public:
     NeonLogWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonLogicalAndWorkload.cpp b/src/backends/neon/workloads/NeonLogicalAndWorkload.cpp
index 179e495..cfdfd85 100644
--- a/src/backends/neon/workloads/NeonLogicalAndWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogicalAndWorkload.cpp
@@ -31,7 +31,7 @@
 
 NeonLogicalAndWorkload::NeonLogicalAndWorkload(const LogicalBinaryQueueDescriptor& descriptor,
                                                const WorkloadInfo& info)
-    : BaseWorkload<LogicalBinaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<LogicalBinaryQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonLogicalAndWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonLogicalAndWorkload.hpp b/src/backends/neon/workloads/NeonLogicalAndWorkload.hpp
index 5502668..ae06fa3 100644
--- a/src/backends/neon/workloads/NeonLogicalAndWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLogicalAndWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NELogical.h>
@@ -17,7 +17,7 @@
                                                    const TensorInfo& input1,
                                                    const TensorInfo& output);
 
-class NeonLogicalAndWorkload : public BaseWorkload<LogicalBinaryQueueDescriptor>
+class NeonLogicalAndWorkload : public NeonBaseWorkload<LogicalBinaryQueueDescriptor>
 {
 public:
     NeonLogicalAndWorkload(const LogicalBinaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonLogicalNotWorkload.cpp b/src/backends/neon/workloads/NeonLogicalNotWorkload.cpp
index 16bf4e8..42601e1 100644
--- a/src/backends/neon/workloads/NeonLogicalNotWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogicalNotWorkload.cpp
@@ -29,7 +29,7 @@
 
 NeonLogicalNotWorkload::NeonLogicalNotWorkload(const ElementwiseUnaryQueueDescriptor& descriptor,
                                                const WorkloadInfo& info)
-    : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonLogicalNotWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonLogicalNotWorkload.hpp b/src/backends/neon/workloads/NeonLogicalNotWorkload.hpp
index 74da027..4ec96f7 100644
--- a/src/backends/neon/workloads/NeonLogicalNotWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLogicalNotWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NELogical.h>
@@ -15,7 +15,7 @@
 
 arm_compute::Status NeonLogicalNotWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonLogicalNotWorkload : public BaseWorkload<ElementwiseUnaryQueueDescriptor>
+class NeonLogicalNotWorkload : public NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>
 {
 public:
     NeonLogicalNotWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonLogicalOrWorkload.cpp b/src/backends/neon/workloads/NeonLogicalOrWorkload.cpp
index 301f432..5f0a51b 100644
--- a/src/backends/neon/workloads/NeonLogicalOrWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogicalOrWorkload.cpp
@@ -31,7 +31,7 @@
 
 NeonLogicalOrWorkload::NeonLogicalOrWorkload(const LogicalBinaryQueueDescriptor& descriptor,
                                              const WorkloadInfo& info)
-    : BaseWorkload<LogicalBinaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<LogicalBinaryQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonLogicalOrWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonLogicalOrWorkload.hpp b/src/backends/neon/workloads/NeonLogicalOrWorkload.hpp
index 40df557..ffbd861 100644
--- a/src/backends/neon/workloads/NeonLogicalOrWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLogicalOrWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NELogical.h>
@@ -17,7 +17,7 @@
                                                   const TensorInfo& input1,
                                                   const TensorInfo& output);
 
-class NeonLogicalOrWorkload : public BaseWorkload<LogicalBinaryQueueDescriptor>
+class NeonLogicalOrWorkload : public NeonBaseWorkload<LogicalBinaryQueueDescriptor>
 {
 public:
     NeonLogicalOrWorkload(const LogicalBinaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
index f80da03..b8224e6 100644
--- a/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
index 84194b6..ebbf180 100644
--- a/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonMaximumWorkload.cpp b/src/backends/neon/workloads/NeonMaximumWorkload.cpp
index e240636..5fcf9bd 100644
--- a/src/backends/neon/workloads/NeonMaximumWorkload.cpp
+++ b/src/backends/neon/workloads/NeonMaximumWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -26,7 +26,7 @@
 
 NeonMaximumWorkload::NeonMaximumWorkload(const MaximumQueueDescriptor& descriptor,
                                          const WorkloadInfo& info)
-    : BaseWorkload<MaximumQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<MaximumQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonMaximumWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonMaximumWorkload.hpp b/src/backends/neon/workloads/NeonMaximumWorkload.hpp
index 59e2d61..8807474 100644
--- a/src/backends/neon/workloads/NeonMaximumWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMaximumWorkload.hpp
@@ -1,10 +1,12 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/NEON/functions/NEElementwiseOperations.h>
@@ -16,7 +18,7 @@
                                                 const TensorInfo& input1,
                                                 const TensorInfo& output);
 
-class NeonMaximumWorkload : public BaseWorkload<MaximumQueueDescriptor>
+class NeonMaximumWorkload : public NeonBaseWorkload<MaximumQueueDescriptor>
 {
 public:
     NeonMaximumWorkload(const MaximumQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonMeanWorkload.cpp b/src/backends/neon/workloads/NeonMeanWorkload.cpp
index 5d8d1c4..43aecca 100644
--- a/src/backends/neon/workloads/NeonMeanWorkload.cpp
+++ b/src/backends/neon/workloads/NeonMeanWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -30,7 +30,7 @@
 }
 
 NeonMeanWorkload::NeonMeanWorkload(const MeanQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<MeanQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<MeanQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonMeanWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonMeanWorkload.hpp b/src/backends/neon/workloads/NeonMeanWorkload.hpp
index e5b9edb..504dc27 100644
--- a/src/backends/neon/workloads/NeonMeanWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMeanWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEReduceMean.h>
 
@@ -16,7 +16,7 @@
                                              const TensorInfo& output,
                                              const MeanDescriptor& descriptor);
 
-class NeonMeanWorkload : public BaseWorkload<MeanQueueDescriptor>
+class NeonMeanWorkload : public NeonBaseWorkload<MeanQueueDescriptor>
 {
 public:
     NeonMeanWorkload(const MeanQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonMinimumWorkload.cpp b/src/backends/neon/workloads/NeonMinimumWorkload.cpp
index 228b856..d163b0a 100644
--- a/src/backends/neon/workloads/NeonMinimumWorkload.cpp
+++ b/src/backends/neon/workloads/NeonMinimumWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -27,7 +27,7 @@
 
 NeonMinimumWorkload::NeonMinimumWorkload(const MinimumQueueDescriptor& descriptor,
                                          const WorkloadInfo& info)
-    : BaseWorkload<MinimumQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<MinimumQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonMinimumWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonMinimumWorkload.hpp b/src/backends/neon/workloads/NeonMinimumWorkload.hpp
index 5c76bb3..dbb3dbf 100644
--- a/src/backends/neon/workloads/NeonMinimumWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMinimumWorkload.hpp
@@ -1,10 +1,12 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
+#include "NeonBaseWorkload.hpp"
+
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/NEON/functions/NEElementwiseOperations.h>
@@ -20,7 +22,7 @@
                                                 const TensorInfo& input1,
                                                 const TensorInfo& output);
 
-class NeonMinimumWorkload : public BaseWorkload<MinimumQueueDescriptor>
+class NeonMinimumWorkload : public NeonBaseWorkload<MinimumQueueDescriptor>
 {
 public:
     /// Create a NeonMinimumWorkload.
diff --git a/src/backends/neon/workloads/NeonMultiplicationWorkload.cpp b/src/backends/neon/workloads/NeonMultiplicationWorkload.cpp
index 0ec5508..65af61c 100644
--- a/src/backends/neon/workloads/NeonMultiplicationWorkload.cpp
+++ b/src/backends/neon/workloads/NeonMultiplicationWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -46,7 +46,7 @@
 
 NeonMultiplicationWorkload::NeonMultiplicationWorkload(const MultiplicationQueueDescriptor& descriptor,
                                                        const WorkloadInfo& info)
-    : BaseWorkload<MultiplicationQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<MultiplicationQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonMultiplicationWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonMultiplicationWorkload.hpp b/src/backends/neon/workloads/NeonMultiplicationWorkload.hpp
index a5d7b76..ddc0738 100644
--- a/src/backends/neon/workloads/NeonMultiplicationWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMultiplicationWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/core/Types.h>
@@ -20,7 +20,7 @@
                                                        const TensorInfo& output,
                                                        const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonMultiplicationWorkload : public BaseWorkload<MultiplicationQueueDescriptor>
+class NeonMultiplicationWorkload : public NeonBaseWorkload<MultiplicationQueueDescriptor>
 {
 public:
     NeonMultiplicationWorkload(const MultiplicationQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonNegWorkload.cpp b/src/backends/neon/workloads/NeonNegWorkload.cpp
index e7705e6..a33cd6f 100644
--- a/src/backends/neon/workloads/NeonNegWorkload.cpp
+++ b/src/backends/neon/workloads/NeonNegWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -23,7 +23,7 @@
 }
 
 NeonNegWorkload::NeonNegWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonNegWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonNegWorkload.hpp b/src/backends/neon/workloads/NeonNegWorkload.hpp
index 0b081a1..67d3d1b 100644
--- a/src/backends/neon/workloads/NeonNegWorkload.hpp
+++ b/src/backends/neon/workloads/NeonNegWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
@@ -15,7 +15,7 @@
 
 arm_compute::Status NeonNegWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonNegWorkload : public BaseWorkload<ElementwiseUnaryQueueDescriptor>
+class NeonNegWorkload : public NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>
 {
 public:
     NeonNegWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
index 92d4997..f811a04 100644
--- a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
index 892722c..ed54536 100644
--- a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/src/backends/neon/workloads/NeonPadWorkload.cpp b/src/backends/neon/workloads/NeonPadWorkload.cpp
index 1ba37f8..e6cc219 100644
--- a/src/backends/neon/workloads/NeonPadWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPadWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -18,7 +18,7 @@
 using namespace armcomputetensorutils;
 
 NeonPadWorkload::NeonPadWorkload(const PadQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<PadQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<PadQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonPadWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonPadWorkload.hpp b/src/backends/neon/workloads/NeonPadWorkload.hpp
index 76c5c57..68eb6c5 100644
--- a/src/backends/neon/workloads/NeonPadWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPadWorkload.hpp
@@ -1,18 +1,18 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
 #include <armnn/backends/WorkloadData.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/core/Error.h>
 
 namespace armnn {
 
-class NeonPadWorkload : public BaseWorkload<PadQueueDescriptor>
+class NeonPadWorkload : public NeonBaseWorkload<PadQueueDescriptor>
 {
 public:
     NeonPadWorkload(const PadQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonPermuteWorkload.cpp b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
index 9e18f7f..843eaaa 100644
--- a/src/backends/neon/workloads/NeonPermuteWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -26,7 +26,7 @@
 
 NeonPermuteWorkload::NeonPermuteWorkload(const PermuteQueueDescriptor& descriptor,
                                          const WorkloadInfo& info)
-        : BaseWorkload<PermuteQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<PermuteQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonPermuteWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonPermuteWorkload.hpp b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
index 934dda0..7ed14c3 100644
--- a/src/backends/neon/workloads/NeonPermuteWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
@@ -19,7 +19,7 @@
 arm_compute::Status NeonPermuteWorkloadValidate(const TensorInfo& input, const TensorInfo& output,
                                                 const PermuteDescriptor& descriptor);
 
-class NeonPermuteWorkload : public BaseWorkload<PermuteQueueDescriptor>
+class NeonPermuteWorkload : public NeonBaseWorkload<PermuteQueueDescriptor>
 {
 public:
     static const std::string& GetName()
diff --git a/src/backends/neon/workloads/NeonPooling2dWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
index 2115e93..6af07f4 100644
--- a/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -35,7 +35,7 @@
 
 NeonPooling2dWorkload::NeonPooling2dWorkload(
     const Pooling2dQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<Pooling2dQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<Pooling2dQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonPooling2dWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonPooling2dWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
index 705f6ed..6bcd661 100644
--- a/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -19,7 +19,7 @@
     const TensorInfo& output,
     const Pooling2dDescriptor& descriptor);
 
-class NeonPooling2dWorkload : public BaseWorkload<Pooling2dQueueDescriptor>
+class NeonPooling2dWorkload : public NeonBaseWorkload<Pooling2dQueueDescriptor>
 {
 public:
     using BaseWorkload<Pooling2dQueueDescriptor>::m_Data;
diff --git a/src/backends/neon/workloads/NeonPreluWorkload.cpp b/src/backends/neon/workloads/NeonPreluWorkload.cpp
index af03e79..ee680dd 100644
--- a/src/backends/neon/workloads/NeonPreluWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPreluWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -29,7 +29,7 @@
 
 NeonPreluWorkload::NeonPreluWorkload(const PreluQueueDescriptor& descriptor,
                                      const WorkloadInfo& info)
-        : BaseWorkload<PreluQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<PreluQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonPreluWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonPreluWorkload.hpp b/src/backends/neon/workloads/NeonPreluWorkload.hpp
index f626793..083f567 100644
--- a/src/backends/neon/workloads/NeonPreluWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPreluWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
 
@@ -16,7 +16,7 @@
                                               const TensorInfo& alpha,
                                               const TensorInfo& output);
 
-class NeonPreluWorkload : public BaseWorkload<PreluQueueDescriptor>
+class NeonPreluWorkload : public NeonBaseWorkload<PreluQueueDescriptor>
 {
 public:
     NeonPreluWorkload(const PreluQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonQLstmWorkload.cpp b/src/backends/neon/workloads/NeonQLstmWorkload.cpp
index c25262a..37f9578 100644
--- a/src/backends/neon/workloads/NeonQLstmWorkload.cpp
+++ b/src/backends/neon/workloads/NeonQLstmWorkload.cpp
@@ -15,7 +15,7 @@
 using namespace armcomputetensorutils;
 
 NeonQLstmWorkload::NeonQLstmWorkload(const QLstmQueueDescriptor& descriptor, const WorkloadInfo& info)
-        : BaseWorkload<QLstmQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<QLstmQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonQLstmWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonQLstmWorkload.hpp b/src/backends/neon/workloads/NeonQLstmWorkload.hpp
index ec01919..0d3a43c 100644
--- a/src/backends/neon/workloads/NeonQLstmWorkload.hpp
+++ b/src/backends/neon/workloads/NeonQLstmWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -7,7 +7,7 @@
 
 #include <armnn/Descriptors.hpp>
 #include <armnn/LstmParams.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 
 #include "arm_compute/graph/Tensor.h"
@@ -16,7 +16,7 @@
 namespace armnn
 {
 
-class NeonQLstmWorkload : public BaseWorkload<QLstmQueueDescriptor>
+class NeonQLstmWorkload : public NeonBaseWorkload<QLstmQueueDescriptor>
 {
 public:
     NeonQLstmWorkload(const QLstmQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonQuantizeWorkload.cpp b/src/backends/neon/workloads/NeonQuantizeWorkload.cpp
index f50ca81..713126f 100644
--- a/src/backends/neon/workloads/NeonQuantizeWorkload.cpp
+++ b/src/backends/neon/workloads/NeonQuantizeWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -25,7 +25,7 @@
 
 NeonQuantizeWorkload::NeonQuantizeWorkload(const QuantizeQueueDescriptor& descriptor,
      const WorkloadInfo& workloadInfo)
-     : BaseWorkload<QuantizeQueueDescriptor>(descriptor, workloadInfo)
+     : NeonBaseWorkload<QuantizeQueueDescriptor>(descriptor, workloadInfo)
 {
     m_Data.ValidateInputsOutputs("NeonQuantizeWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonQuantizeWorkload.hpp b/src/backends/neon/workloads/NeonQuantizeWorkload.hpp
index f0d4a3c..2a67a71 100644
--- a/src/backends/neon/workloads/NeonQuantizeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonQuantizeWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEQuantizationLayer.h>
 
@@ -13,7 +13,7 @@
 
 arm_compute::Status NeonQuantizeWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonQuantizeWorkload : public BaseWorkload<QuantizeQueueDescriptor>
+class NeonQuantizeWorkload : public NeonBaseWorkload<QuantizeQueueDescriptor>
 {
 public:
     NeonQuantizeWorkload(const QuantizeQueueDescriptor& descriptor, const WorkloadInfo& workloadInfo);
diff --git a/src/backends/neon/workloads/NeonQuantizedLstmWorkload.cpp b/src/backends/neon/workloads/NeonQuantizedLstmWorkload.cpp
index 6771418..1872b1f 100644
--- a/src/backends/neon/workloads/NeonQuantizedLstmWorkload.cpp
+++ b/src/backends/neon/workloads/NeonQuantizedLstmWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -16,7 +16,7 @@
 
 NeonQuantizedLstmWorkload::NeonQuantizedLstmWorkload(const QuantizedLstmQueueDescriptor &descriptor,
                                                      const WorkloadInfo &info)
-        : BaseWorkload<QuantizedLstmQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<QuantizedLstmQueueDescriptor>(descriptor, info)
 {
     // Basic parameters
     m_InputToInputWeightsTensor = std::make_unique<arm_compute::Tensor>();
diff --git a/src/backends/neon/workloads/NeonQuantizedLstmWorkload.hpp b/src/backends/neon/workloads/NeonQuantizedLstmWorkload.hpp
index 9f76984..b756485 100644
--- a/src/backends/neon/workloads/NeonQuantizedLstmWorkload.hpp
+++ b/src/backends/neon/workloads/NeonQuantizedLstmWorkload.hpp
@@ -1,12 +1,12 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
 #include <armnn/QuantizedLstmParams.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 
 #include <arm_compute/graph/Tensor.h>
@@ -15,7 +15,7 @@
 namespace armnn
 {
 
-class NeonQuantizedLstmWorkload : public BaseWorkload<QuantizedLstmQueueDescriptor>
+class NeonQuantizedLstmWorkload : public NeonBaseWorkload<QuantizedLstmQueueDescriptor>
 {
 public:
     using BaseWorkload<QuantizedLstmQueueDescriptor>::m_Data;
diff --git a/src/backends/neon/workloads/NeonRankWorkload.hpp b/src/backends/neon/workloads/NeonRankWorkload.hpp
index b8b83af..22bf7af 100644
--- a/src/backends/neon/workloads/NeonRankWorkload.hpp
+++ b/src/backends/neon/workloads/NeonRankWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 
 #include "NeonWorkloadUtils.hpp"
@@ -13,10 +13,10 @@
 namespace armnn
 {
 
-struct NeonRankWorkload : public BaseWorkload<RankQueueDescriptor>
+struct NeonRankWorkload : public NeonBaseWorkload<RankQueueDescriptor>
 {
 public:
-    using BaseWorkload<RankQueueDescriptor>::BaseWorkload;
+    using NeonBaseWorkload<RankQueueDescriptor>::NeonBaseWorkload;
     virtual void Execute() const override
     {
         const NeonTensorHandle* neonTensorHandle = PolymorphicDowncast<const NeonTensorHandle*>(m_Data.m_Inputs[0]);
diff --git a/src/backends/neon/workloads/NeonReduceWorkload.cpp b/src/backends/neon/workloads/NeonReduceWorkload.cpp
index bf7ce98..4516670 100644
--- a/src/backends/neon/workloads/NeonReduceWorkload.cpp
+++ b/src/backends/neon/workloads/NeonReduceWorkload.cpp
@@ -45,7 +45,7 @@
 }
 
 NeonReduceWorkload::NeonReduceWorkload(const ReduceQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ReduceQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ReduceQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonReduceWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonReduceWorkload.hpp b/src/backends/neon/workloads/NeonReduceWorkload.hpp
index 026cc8b..623b137 100644
--- a/src/backends/neon/workloads/NeonReduceWorkload.hpp
+++ b/src/backends/neon/workloads/NeonReduceWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEReductionOperation.h>
 
@@ -16,7 +16,7 @@
                                                const TensorInfo& output,
                                                const ReduceDescriptor& descriptor);
 
-class NeonReduceWorkload : public BaseWorkload<ReduceQueueDescriptor>
+class NeonReduceWorkload : public NeonBaseWorkload<ReduceQueueDescriptor>
 {
 public:
     NeonReduceWorkload(const ReduceQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.cpp b/src/backends/neon/workloads/NeonReshapeWorkload.cpp
index 7f2f225..5e9443c 100644
--- a/src/backends/neon/workloads/NeonReshapeWorkload.cpp
+++ b/src/backends/neon/workloads/NeonReshapeWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -25,7 +25,7 @@
 
 NeonReshapeWorkload::NeonReshapeWorkload(const ReshapeQueueDescriptor& descriptor,
                                          const WorkloadInfo& info)
-    : BaseWorkload<ReshapeQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ReshapeQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonReshapeWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.hpp b/src/backends/neon/workloads/NeonReshapeWorkload.hpp
index 7c71f14..5775259 100644
--- a/src/backends/neon/workloads/NeonReshapeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonReshapeWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
@@ -19,7 +19,7 @@
 
 arm_compute::Status NeonReshapeWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonReshapeWorkload : public BaseWorkload<ReshapeQueueDescriptor>
+class NeonReshapeWorkload : public NeonBaseWorkload<ReshapeQueueDescriptor>
 {
 public:
     NeonReshapeWorkload(const ReshapeQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonResizeWorkload.cpp b/src/backends/neon/workloads/NeonResizeWorkload.cpp
index e21352e..f51d501 100644
--- a/src/backends/neon/workloads/NeonResizeWorkload.cpp
+++ b/src/backends/neon/workloads/NeonResizeWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -51,7 +51,7 @@
 
 NeonResizeWorkload::NeonResizeWorkload(const ResizeQueueDescriptor& descriptor,
                                                        const WorkloadInfo& info)
-    : BaseWorkload<ResizeQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ResizeQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonResizeWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonResizeWorkload.hpp b/src/backends/neon/workloads/NeonResizeWorkload.hpp
index feef7eb..6141752 100644
--- a/src/backends/neon/workloads/NeonResizeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonResizeWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEScale.h>
 
@@ -16,7 +16,7 @@
                                                const TensorInfo& output,
                                                const ResizeDescriptor& descriptor);
 
-class NeonResizeWorkload : public BaseWorkload<ResizeQueueDescriptor>
+class NeonResizeWorkload : public NeonBaseWorkload<ResizeQueueDescriptor>
 {
 public:
     NeonResizeWorkload(const ResizeQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonRsqrtWorkload.cpp b/src/backends/neon/workloads/NeonRsqrtWorkload.cpp
index 13615f9..a5146ca 100644
--- a/src/backends/neon/workloads/NeonRsqrtWorkload.cpp
+++ b/src/backends/neon/workloads/NeonRsqrtWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -24,7 +24,7 @@
 }
 
 NeonRsqrtWorkload::NeonRsqrtWorkload(const RsqrtQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<RsqrtQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<RsqrtQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonRsqrtWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonRsqrtWorkload.hpp b/src/backends/neon/workloads/NeonRsqrtWorkload.hpp
index 104a556..c22a223 100644
--- a/src/backends/neon/workloads/NeonRsqrtWorkload.hpp
+++ b/src/backends/neon/workloads/NeonRsqrtWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
@@ -15,7 +15,7 @@
 
 arm_compute::Status NeonRsqrtWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonRsqrtWorkload : public BaseWorkload<RsqrtQueueDescriptor>
+class NeonRsqrtWorkload : public NeonBaseWorkload<RsqrtQueueDescriptor>
 {
 public:
     NeonRsqrtWorkload(const RsqrtQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonSinWorkload.cpp b/src/backends/neon/workloads/NeonSinWorkload.cpp
index 4602a9f..cba348d 100644
--- a/src/backends/neon/workloads/NeonSinWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSinWorkload.cpp
@@ -23,7 +23,7 @@
 }
 
 NeonSinWorkload::NeonSinWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonSinWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonSinWorkload.hpp b/src/backends/neon/workloads/NeonSinWorkload.hpp
index a1a8965..6710c86 100644
--- a/src/backends/neon/workloads/NeonSinWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSinWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/NEON/functions/NEElementwiseUnaryLayer.h>
 
@@ -14,7 +14,7 @@
 
 arm_compute::Status NeonSinWorkloadValidate(const TensorInfo& input, const TensorInfo& output);
 
-class NeonSinWorkload : public BaseWorkload<ElementwiseUnaryQueueDescriptor>
+class NeonSinWorkload : public NeonBaseWorkload<ElementwiseUnaryQueueDescriptor>
 {
 public:
     NeonSinWorkload(const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonSliceWorkload.cpp b/src/backends/neon/workloads/NeonSliceWorkload.cpp
index 86ae303..f8b2e22 100644
--- a/src/backends/neon/workloads/NeonSliceWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSliceWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -35,7 +35,7 @@
 
 NeonSliceWorkload::NeonSliceWorkload(const SliceQueueDescriptor& descriptor,
                                      const WorkloadInfo& info)
-        : BaseWorkload<SliceQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<SliceQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonSliceWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonSliceWorkload.hpp b/src/backends/neon/workloads/NeonSliceWorkload.hpp
index 303f46f..e7cac77 100644
--- a/src/backends/neon/workloads/NeonSliceWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSliceWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -18,7 +18,7 @@
                                               const TensorInfo& output,
                                               const SliceDescriptor& descriptor);
 
-class NeonSliceWorkload : public BaseWorkload<SliceQueueDescriptor>
+class NeonSliceWorkload : public NeonBaseWorkload<SliceQueueDescriptor>
 {
 public:
     NeonSliceWorkload(const SliceQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp b/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
index da20479..f2bc084 100644
--- a/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -32,7 +32,7 @@
 
 NeonSoftmaxWorkload::NeonSoftmaxWorkload(const SoftmaxQueueDescriptor& descriptor,
     const WorkloadInfo& info, std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager)
-    : BaseWorkload<SoftmaxQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<SoftmaxQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonSoftmaxWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonSoftmaxWorkload.hpp b/src/backends/neon/workloads/NeonSoftmaxWorkload.hpp
index 747aaba..7626af0 100644
--- a/src/backends/neon/workloads/NeonSoftmaxWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxWorkload.hpp
@@ -1,12 +1,12 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
 #include <armnn/Descriptors.hpp>
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -21,7 +21,7 @@
                                                 const TensorInfo& output,
                                                 const SoftmaxDescriptor& descriptor);
 
-class NeonSoftmaxWorkload : public BaseWorkload<SoftmaxQueueDescriptor>
+class NeonSoftmaxWorkload : public NeonBaseWorkload<SoftmaxQueueDescriptor>
 {
 public:
     NeonSoftmaxWorkload(const SoftmaxQueueDescriptor& descriptor, const WorkloadInfo& info,
diff --git a/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.cpp b/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.cpp
index d7880e0..e0adc62 100644
--- a/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -43,7 +43,7 @@
 
 NeonSpaceToBatchNdWorkload::NeonSpaceToBatchNdWorkload(const SpaceToBatchNdQueueDescriptor& descriptor,
                                                        const WorkloadInfo& info)
-        : BaseWorkload<SpaceToBatchNdQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<SpaceToBatchNdQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonSpaceToBatchNdWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.hpp b/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.hpp
index d82b065..4bd7d2d 100644
--- a/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSpaceToBatchNdWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn/Tensor.hpp>
 #include <armnn/Descriptors.hpp>
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NESpaceToBatchLayer.h>
 
@@ -19,10 +19,10 @@
                                                        const TensorInfo& output,
                                                        const SpaceToBatchNdDescriptor& descriptor);
 
-class NeonSpaceToBatchNdWorkload : public BaseWorkload<SpaceToBatchNdQueueDescriptor>
+class NeonSpaceToBatchNdWorkload : public NeonBaseWorkload<SpaceToBatchNdQueueDescriptor>
 {
 public:
-    using BaseWorkload<SpaceToBatchNdQueueDescriptor>::BaseWorkload;
+    using NeonBaseWorkload<SpaceToBatchNdQueueDescriptor>::NeonBaseWorkload;
 
     NeonSpaceToBatchNdWorkload(const SpaceToBatchNdQueueDescriptor& descriptor, const WorkloadInfo& info);
 
diff --git a/src/backends/neon/workloads/NeonSpaceToDepthWorkload.cpp b/src/backends/neon/workloads/NeonSpaceToDepthWorkload.cpp
index b96b7d0..b4eca46 100644
--- a/src/backends/neon/workloads/NeonSpaceToDepthWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSpaceToDepthWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -31,7 +31,7 @@
 
 NeonSpaceToDepthWorkload::NeonSpaceToDepthWorkload(const SpaceToDepthQueueDescriptor& descriptor,
                                                    const WorkloadInfo& info)
-    : BaseWorkload<SpaceToDepthQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<SpaceToDepthQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonSpaceToDepthWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonSpaceToDepthWorkload.hpp b/src/backends/neon/workloads/NeonSpaceToDepthWorkload.hpp
index 613eea6..5fbf10d 100644
--- a/src/backends/neon/workloads/NeonSpaceToDepthWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSpaceToDepthWorkload.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -7,7 +7,7 @@
 
 #include <armnn/TypesUtils.hpp>
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NESpaceToDepthLayer.h>
 
@@ -18,10 +18,10 @@
                                                      const TensorInfo& output,
                                                      const SpaceToDepthDescriptor& descriptor);
 
-class NeonSpaceToDepthWorkload : public BaseWorkload<SpaceToDepthQueueDescriptor>
+class NeonSpaceToDepthWorkload : public NeonBaseWorkload<SpaceToDepthQueueDescriptor>
 {
 public:
-    using BaseWorkload<SpaceToDepthQueueDescriptor>::BaseWorkload;
+    using NeonBaseWorkload<SpaceToDepthQueueDescriptor>::NeonBaseWorkload;
     NeonSpaceToDepthWorkload(const SpaceToDepthQueueDescriptor& descriptor, const WorkloadInfo& info);
     virtual void Execute() const override;
 private:
diff --git a/src/backends/neon/workloads/NeonSplitterWorkload.cpp b/src/backends/neon/workloads/NeonSplitterWorkload.cpp
index f5a55d6..b5f0191 100644
--- a/src/backends/neon/workloads/NeonSplitterWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSplitterWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -54,7 +54,7 @@
 }
 
 NeonSplitterWorkload::NeonSplitterWorkload(const SplitterQueueDescriptor& descriptor, const WorkloadInfo& info)
-    : BaseWorkload<SplitterQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<SplitterQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonSplitterWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonSplitterWorkload.hpp b/src/backends/neon/workloads/NeonSplitterWorkload.hpp
index 88102bc..ae4f26a 100644
--- a/src/backends/neon/workloads/NeonSplitterWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSplitterWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -19,7 +19,7 @@
                                                  const std::vector<std::reference_wrapper<TensorInfo>>& outputs,
                                                  unsigned int splitAxis);
 
-class NeonSplitterWorkload : public BaseWorkload<SplitterQueueDescriptor>
+class NeonSplitterWorkload : public NeonBaseWorkload<SplitterQueueDescriptor>
 {
 public:
     NeonSplitterWorkload(const SplitterQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonStackWorkload.cpp b/src/backends/neon/workloads/NeonStackWorkload.cpp
index 75c5739..5b4cfbc 100644
--- a/src/backends/neon/workloads/NeonStackWorkload.cpp
+++ b/src/backends/neon/workloads/NeonStackWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #include "NeonStackWorkload.hpp"
@@ -47,7 +47,7 @@
 }
 
 NeonStackWorkload::NeonStackWorkload(const StackQueueDescriptor& descriptor, const WorkloadInfo& info)
-: BaseWorkload<StackQueueDescriptor>(descriptor, info)
+: NeonBaseWorkload<StackQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonStackWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonStackWorkload.hpp b/src/backends/neon/workloads/NeonStackWorkload.hpp
index b4017c6..729e279 100644
--- a/src/backends/neon/workloads/NeonStackWorkload.hpp
+++ b/src/backends/neon/workloads/NeonStackWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/NEON/functions/NEStackLayer.h>
 
@@ -15,7 +15,7 @@
                                               const TensorInfo& output,
                                               const StackDescriptor& descriptor);
 
-class NeonStackWorkload : public BaseWorkload<StackQueueDescriptor>
+class NeonStackWorkload : public NeonBaseWorkload<StackQueueDescriptor>
 {
 public:
     NeonStackWorkload(const StackQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonStridedSliceWorkload.cpp b/src/backends/neon/workloads/NeonStridedSliceWorkload.cpp
index d9ec727..8a51947 100644
--- a/src/backends/neon/workloads/NeonStridedSliceWorkload.cpp
+++ b/src/backends/neon/workloads/NeonStridedSliceWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -48,7 +48,7 @@
 
 NeonStridedSliceWorkload::NeonStridedSliceWorkload(const StridedSliceQueueDescriptor& descriptor,
                                                    const WorkloadInfo& info)
-        : BaseWorkload<StridedSliceQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<StridedSliceQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonStridedSliceWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonStridedSliceWorkload.hpp b/src/backends/neon/workloads/NeonStridedSliceWorkload.hpp
index 29c4062..804bb46 100644
--- a/src/backends/neon/workloads/NeonStridedSliceWorkload.hpp
+++ b/src/backends/neon/workloads/NeonStridedSliceWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/runtime/IFunction.h>
@@ -21,7 +21,7 @@
                                                      const TensorInfo& output,
                                                      const StridedSliceDescriptor& descriptor);
 
-class NeonStridedSliceWorkload : public BaseWorkload<StridedSliceQueueDescriptor>
+class NeonStridedSliceWorkload : public NeonBaseWorkload<StridedSliceQueueDescriptor>
 {
 public:
     NeonStridedSliceWorkload(const StridedSliceQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonSubtractionWorkload.cpp b/src/backends/neon/workloads/NeonSubtractionWorkload.cpp
index 369d6e0..1071602 100644
--- a/src/backends/neon/workloads/NeonSubtractionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSubtractionWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -40,7 +40,7 @@
 
 NeonSubtractionWorkload::NeonSubtractionWorkload(const SubtractionQueueDescriptor& descriptor,
                                                  const WorkloadInfo& info)
-    : BaseWorkload<SubtractionQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<SubtractionQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonSubtractionWorkload", 2, 1);
 
diff --git a/src/backends/neon/workloads/NeonSubtractionWorkload.hpp b/src/backends/neon/workloads/NeonSubtractionWorkload.hpp
index 41992dd..291b308 100644
--- a/src/backends/neon/workloads/NeonSubtractionWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSubtractionWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/core/Error.h>
 #include <arm_compute/core/Types.h>
@@ -21,7 +21,7 @@
                                                     const TensorInfo& output,
                                                     const ActivationDescriptor* activationDescriptor = nullptr);
 
-class NeonSubtractionWorkload : public BaseWorkload<SubtractionQueueDescriptor>
+class NeonSubtractionWorkload : public NeonBaseWorkload<SubtractionQueueDescriptor>
 {
 public:
     NeonSubtractionWorkload(const SubtractionQueueDescriptor& descriptor, const WorkloadInfo& info);
diff --git a/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.cpp
index 2b4b513..310a5dc 100644
--- a/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #include "NeonTransposeConvolution2dWorkload.hpp"
@@ -55,7 +55,7 @@
 NeonTransposeConvolution2dWorkload::NeonTransposeConvolution2dWorkload(
     const TransposeConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info,
     std::shared_ptr<arm_compute::MemoryManagerOnDemand>& memoryManager)
-    : BaseWorkload<TransposeConvolution2dQueueDescriptor>(descriptor, info)
+    : NeonBaseWorkload<TransposeConvolution2dQueueDescriptor>(descriptor, info)
 {
     m_Data.ValidateInputsOutputs("NeonTransposeConvolution2dWorkload", 1, 1);
 
diff --git a/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.hpp b/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.hpp
index 1c6ec26..fe41dfe 100644
--- a/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonTransposeConvolution2dWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/runtime/Tensor.h>
@@ -24,7 +24,7 @@
                                                                const TensorInfo& weights,
                                                                const Optional<TensorInfo>& biases);
 
-class NeonTransposeConvolution2dWorkload : public BaseWorkload<TransposeConvolution2dQueueDescriptor>
+class NeonTransposeConvolution2dWorkload : public NeonBaseWorkload<TransposeConvolution2dQueueDescriptor>
 {
 public:
     NeonTransposeConvolution2dWorkload(const TransposeConvolution2dQueueDescriptor& descriptor,
diff --git a/src/backends/neon/workloads/NeonTransposeWorkload.cpp b/src/backends/neon/workloads/NeonTransposeWorkload.cpp
index 2e4f358..c2960c0 100644
--- a/src/backends/neon/workloads/NeonTransposeWorkload.cpp
+++ b/src/backends/neon/workloads/NeonTransposeWorkload.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -26,7 +26,7 @@
 
 NeonTransposeWorkload::NeonTransposeWorkload(const TransposeQueueDescriptor& descriptor,
                                              const WorkloadInfo& info)
-        : BaseWorkload<TransposeQueueDescriptor>(descriptor, info)
+        : NeonBaseWorkload<TransposeQueueDescriptor>(descriptor, info)
 {
     // Report Profiling Details
     ARMNN_REPORT_PROFILING_WORKLOAD_DESC("NeonTransposeWorkload_Construct",
diff --git a/src/backends/neon/workloads/NeonTransposeWorkload.hpp b/src/backends/neon/workloads/NeonTransposeWorkload.hpp
index ae6118f..4d5e6c2 100644
--- a/src/backends/neon/workloads/NeonTransposeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonTransposeWorkload.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include <armnn/backends/Workload.hpp>
+#include "NeonBaseWorkload.hpp"
 #include <armnn/backends/WorkloadData.hpp>
 #include <neon/workloads/NeonWorkloadUtils.hpp>
 
@@ -19,7 +19,7 @@
 arm_compute::Status NeonTransposeWorkloadValidate(const TensorInfo& input, const TensorInfo& output,
                                                   const TransposeDescriptor& descriptor);
 
-class NeonTransposeWorkload : public BaseWorkload<TransposeQueueDescriptor>
+class NeonTransposeWorkload : public NeonBaseWorkload<TransposeQueueDescriptor>
 {
 public:
     static const std::string& GetName()
diff --git a/src/backends/neon/workloads/NeonWorkloadUtils.hpp b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
index 59be03a..af32104 100644
--- a/src/backends/neon/workloads/NeonWorkloadUtils.hpp
+++ b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #pragma once