IVGCVSW-7635 Remove deprecated code due to be removed in 23.08 (WorkloadFactory)

 * WorkloadFactory.hpp CreateXXXWorkload replaced with CreateWorkload
   accepting LayerType for ABI stability.
 * These effect ref neon cl and mock backends
 * Also removed small deprecation comment in Optimization Views
 * Fixed ABI Version Issue

Signed-off-by: Cian McGriskin <cian.mcgriskin@arm.com>
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Change-Id: Id37af2f882fc9d12b8c779de6b714013af866028
diff --git a/include/armnn/Version.hpp b/include/armnn/Version.hpp
index 3c4abde..2a62c1d 100644
--- a/include/armnn/Version.hpp
+++ b/include/armnn/Version.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/include/armnn/backends/ITensorHandleFactory.hpp b/include/armnn/backends/ITensorHandleFactory.hpp
index b10ff66..7d582d2 100644
--- a/include/armnn/backends/ITensorHandleFactory.hpp
+++ b/include/armnn/backends/ITensorHandleFactory.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017, 2019-2022 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/include/armnn/backends/OptimizationViews.hpp b/include/armnn/backends/OptimizationViews.hpp
index ec1dc55..8bb47dc 100644
--- a/include/armnn/backends/OptimizationViews.hpp
+++ b/include/armnn/backends/OptimizationViews.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017, 2019, 2021-2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017, 2019, 2021-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -77,7 +77,6 @@
 
     /// INetworkPtr object used only as a container for any layer generated by the optimization process
     /// Also, can use to AddPrecompiledLayer to the SubstitutionPair
-    /// Use in favour of m_Graph which depreciates in 23.08
     INetworkPtr m_INetwork = INetwork::Create();
 };
 
diff --git a/include/armnn/backends/WorkloadFactory.hpp b/include/armnn/backends/WorkloadFactory.hpp
index e69743d..d5ebf28 100644
--- a/include/armnn/backends/WorkloadFactory.hpp
+++ b/include/armnn/backends/WorkloadFactory.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #pragma once
@@ -64,354 +64,10 @@
     virtual std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                               DataLayout dataLayout,
                                                               const bool IsMemoryManaged = true) const = 0;
-
     virtual std::unique_ptr<IWorkload> CreateWorkload(LayerType type,
                                                       const QueueDescriptor& descriptor,
                                                       const WorkloadInfo& info) const;
 
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                        const WorkloadInfo&              info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                                      const WorkloadInfo&            info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                                       const WorkloadInfo&            info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                                    const WorkloadInfo&          info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(
-        const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDetectionPostProcess(
-        const DetectionPostProcessQueueDescriptor& descriptor, const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
-                                                  const WorkloadInfo&        info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
-                                                            const WorkloadInfo&                  info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateInstanceNormalization(
-        const InstanceNormalizationQueueDescriptor& descriptor,
-        const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                            const WorkloadInfo&                  info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                           const WorkloadInfo&                 info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                                     const WorkloadInfo&           info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                                       const WorkloadInfo&           info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor,
-                                                       const WorkloadInfo&           info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                                     const WorkloadInfo&           info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                                      const WorkloadInfo&            info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& Info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateTransposeConvolution2d(
-        const TransposeConvolution2dQueueDescriptor& descriptor,
-        const WorkloadInfo& info) const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    virtual std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
-        const UnidirectionalSequenceLstmQueueDescriptor& descriptor,
-        const WorkloadInfo& info) const;
-
 private:
     static bool IsLayerConfigurationSupported(const BackendId& backendId,
                                        const IConnectableLayer& connectableLayer,
diff --git a/include/armnnTestUtils/MockBackend.hpp b/include/armnnTestUtils/MockBackend.hpp
index 3c79e16..9728a85 100644
--- a/include/armnnTestUtils/MockBackend.hpp
+++ b/include/armnnTestUtils/MockBackend.hpp
@@ -120,33 +120,8 @@
         return std::make_unique<MockTensorHandle>(tensorInfo, static_cast<unsigned int>(MemorySource::Malloc));
     };
 
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE(
-        "Use ABI stable "
-        "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.",
-        "23.08")
-    std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override
-    {
-        if (info.m_InputTensorInfos.empty())
-        {
-            throw InvalidArgumentException("MockWorkloadFactory::CreateInput: Input cannot be zero length");
-        }
-        if (info.m_OutputTensorInfos.empty())
-        {
-            throw InvalidArgumentException("MockWorkloadFactory::CreateInput: Output cannot be zero length");
-        }
-
-        if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
-        {
-            throw InvalidArgumentException(
-                "MockWorkloadFactory::CreateInput: data input and output differ in byte count.");
-        }
-
-        return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-    };
-
     std::unique_ptr<IWorkload>
-        CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const override;
+    CreateWorkload(LayerType type, const QueueDescriptor& descriptor, const WorkloadInfo& info) const override;
 
 private:
     mutable std::shared_ptr<MockMemoryManager> m_MemoryManager;
diff --git a/src/armnn/test/CloneTests.cpp b/src/armnn/test/CloneTests.cpp
index e93b989..62d81bf 100644
--- a/src/armnn/test/CloneTests.cpp
+++ b/src/armnn/test/CloneTests.cpp
@@ -44,7 +44,7 @@
     }
 
     std::unique_ptr<armnn::IWorkload> CreatePreCompiled(const armnn::PreCompiledQueueDescriptor& descriptor,
-                                                        const armnn::WorkloadInfo&) const override
+                                                        const armnn::WorkloadInfo&) const
     {
         CHECK(descriptor.m_PreCompiledObject == m_Ptr);
         return nullptr;
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index 9ab3ca5..7a9e46c 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -1610,769 +1610,21 @@
                                          outReasonIfUnsupported,
                                          modelOptions);
 }
-ARMNN_NO_DEPRECATE_WARN_BEGIN
+
+/// Backends should implement their own CreateWorkload function with a switch statement.
+/// The case for the switch should be the LayerType and based on that they will call their
+/// specific workload creation functionality.
 std::unique_ptr<IWorkload> IWorkloadFactory::CreateWorkload(LayerType type,
                                                             const QueueDescriptor& descriptor,
                                                             const WorkloadInfo& info) const
 {
+    IgnoreUnused(descriptor);
+    IgnoreUnused(info);
     switch(type)
     {
-        case LayerType::Activation :
-        {
-            auto activationQueueDescriptor = PolymorphicDowncast<const ActivationQueueDescriptor*>(&descriptor);
-            return CreateActivation(*activationQueueDescriptor, info);
-        }
-        case LayerType::Addition :
-        {
-            auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor);
-            return CreateAddition(*additionQueueDescriptor, info);
-        }
-        case LayerType::ArgMinMax :
-        {
-            auto argMinMaxQueueDescriptor = PolymorphicDowncast<const ArgMinMaxQueueDescriptor*>(&descriptor);
-            return CreateArgMinMax(*argMinMaxQueueDescriptor, info);
-        }
-        case LayerType::BatchNormalization :
-        {
-            auto batchNormQueueDescriptor = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
-            return CreateBatchNormalization(*batchNormQueueDescriptor, info);
-        }
-        case LayerType::BatchToSpaceNd :
-        {
-            auto batchToSpaceNdQueueDescriptor
-                    = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
-            return CreateBatchToSpaceNd(*batchToSpaceNdQueueDescriptor, info);
-        }
-        case LayerType::Cast :
-        {
-            auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor);
-            return CreateCast(*castQueueDescriptor, info);
-        }
-        case LayerType::ChannelShuffle :
-        {
-            auto channelShuffleQueueDescriptor
-                    = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
-            return CreateChannelShuffle(*channelShuffleQueueDescriptor, info);
-        }
-        case LayerType::Comparison :
-        {
-            auto comparisonQueueDescriptor = PolymorphicDowncast<const ComparisonQueueDescriptor*>(&descriptor);
-            return CreateComparison(*comparisonQueueDescriptor, info);
-        }
-        case LayerType::Concat :
-        {
-            auto concatQueueDescriptor = PolymorphicDowncast<const ConcatQueueDescriptor*>(&descriptor);
-            return CreateConcat(*concatQueueDescriptor, info);
-        }
-        case LayerType::Constant :
-        {
-            auto constantQueueDescriptor = PolymorphicDowncast<const ConstantQueueDescriptor*>(&descriptor);
-            return CreateConstant(*constantQueueDescriptor, info);
-        }
-        case LayerType::ConvertFp16ToFp32:
-        {
-            auto convertFp16ToFp32QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
-            return CreateConvertFp16ToFp32(*convertFp16ToFp32QueueDescriptor, info);
-        }
-        case LayerType::ConvertFp32ToFp16:
-        {
-            auto convertFp32ToFp16QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
-            return CreateConvertFp32ToFp16(*convertFp32ToFp16QueueDescriptor, info);
-        }
-        case LayerType::Convolution2d:
-        {
-            auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor);
-            return CreateConvolution2d(*convolution2dQueueDescriptor, info);
-        }
-        case LayerType::Convolution3d:
-        {
-            auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor);
-            return CreateConvolution3d(*convolution3dQueueDescriptor, info);
-        }
-        case LayerType::Debug:
-        {
-            auto debugQueueDescriptor = PolymorphicDowncast<const DebugQueueDescriptor*>(&descriptor);
-            return CreateDebug(*debugQueueDescriptor, info);
-        }
-        case LayerType::DepthToSpace:
-        {
-            auto depthToSpaceQueueDescriptor = PolymorphicDowncast<const DepthToSpaceQueueDescriptor*>(&descriptor);
-            return CreateDepthToSpace(*depthToSpaceQueueDescriptor, info);
-        }
-        case LayerType::DepthwiseConvolution2d:
-        {
-            auto depthwiseConvolution2DQueueDescriptor
-                    = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
-            return CreateDepthwiseConvolution2d(*depthwiseConvolution2DQueueDescriptor, info);
-        }
-        case LayerType::Dequantize:
-        {
-            auto dequantizeQueueDescriptor = PolymorphicDowncast<const DequantizeQueueDescriptor*>(&descriptor);
-            return CreateDequantize(*dequantizeQueueDescriptor, info);
-        }
-        case LayerType::DetectionPostProcess:
-        {
-            auto detectionPostProcessQueueDescriptor
-                    = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
-            return CreateDetectionPostProcess(*detectionPostProcessQueueDescriptor, info);
-        }
-        case LayerType::Division:
-        {
-            auto divisionQueueDescriptor = PolymorphicDowncast<const DivisionQueueDescriptor*>(&descriptor);
-            return CreateDivision(*divisionQueueDescriptor, info);
-        }
-        case LayerType::ElementwiseBinary:
-        {
-            auto queueDescriptor = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
-            return CreateWorkload(LayerType::ElementwiseBinary, *queueDescriptor, info);
-        }
-        case LayerType::ElementwiseUnary:
-        {
-            auto elementwiseUnaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
-            return CreateElementwiseUnary(*elementwiseUnaryQueueDescriptor, info);
-
-        }
-        case LayerType::FakeQuantization:
-        {
-            auto fakeQuantizationQueueDescriptor
-                    = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor);
-            return CreateFakeQuantization(*fakeQuantizationQueueDescriptor, info);
-        }
-        case LayerType::Fill:
-        {
-            auto fillQueueDescriptor = PolymorphicDowncast<const FillQueueDescriptor*>(&descriptor);
-            return CreateFill(*fillQueueDescriptor, info);
-        }
-        case LayerType::Floor:
-        {
-            auto floorQueueDescriptor = PolymorphicDowncast<const FloorQueueDescriptor*>(&descriptor);
-            return CreateFloor(*floorQueueDescriptor, info);
-        }
-        case LayerType::FullyConnected:
-        {
-            auto fullyConnectedQueueDescriptor
-                    = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
-            return CreateFullyConnected(*fullyConnectedQueueDescriptor, info);
-        }
-        case LayerType::Gather:
-        {
-            auto gatherQueueDescriptor = PolymorphicDowncast<const GatherQueueDescriptor*>(&descriptor);
-            return CreateGather(*gatherQueueDescriptor, info);
-        }
-        case LayerType::Input:
-        {
-            auto inputQueueDescriptor = PolymorphicDowncast<const InputQueueDescriptor*>(&descriptor);
-            return CreateInput(*inputQueueDescriptor, info);
-        }
-        case LayerType::InstanceNormalization:
-        {
-            auto instanceNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
-            return CreateInstanceNormalization(*instanceNormalizationQueueDescriptor, info);
-        }
-        case LayerType::L2Normalization:
-        {
-            auto l2NormalizationQueueDescriptor
-                    = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
-            return CreateL2Normalization(*l2NormalizationQueueDescriptor, info);
-        }
-        case LayerType::LogicalBinary:
-        {
-            auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor);
-            return CreateLogicalBinary(*logicalBinaryQueueDescriptor, info);
-        }
-        case LayerType::LogSoftmax:
-        {
-            auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor);
-            return CreateLogSoftmax(*logSoftmaxQueueDescriptor, info);
-        }
-        case LayerType::Lstm:
-        {
-            auto lstmQueueDescriptor = PolymorphicDowncast<const LstmQueueDescriptor*>(&descriptor);
-            return CreateLstm(*lstmQueueDescriptor, info);
-        }
-        case LayerType::Maximum:
-        {
-            auto maximumQueueDescriptor = PolymorphicDowncast<const MaximumQueueDescriptor*>(&descriptor);
-            return CreateMaximum(*maximumQueueDescriptor, info);
-        }
-        case LayerType::Mean:
-        {
-            auto meanQueueDescriptor = PolymorphicDowncast<const MeanQueueDescriptor*>(&descriptor);
-            return CreateMean(*meanQueueDescriptor, info);
-        }
-        case LayerType::MemCopy:
-        {
-            auto memCopyQueueDescriptor = PolymorphicDowncast<const MemCopyQueueDescriptor*>(&descriptor);
-            return CreateMemCopy(*memCopyQueueDescriptor, info);
-        }
-        case LayerType::MemImport:
-        {
-            auto memImportQueueDescriptor = PolymorphicDowncast<const MemImportQueueDescriptor*>(&descriptor);
-            return CreateMemImport(*memImportQueueDescriptor, info);
-        }
-        case LayerType::Minimum:
-        {
-            auto minimumQueueDescriptor = PolymorphicDowncast<const MinimumQueueDescriptor*>(&descriptor);
-            return CreateMinimum(*minimumQueueDescriptor, info);
-        }
-        case LayerType::Multiplication:
-        {
-            auto multiplicationQueueDescriptor
-                    = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor);
-            return CreateMultiplication(*multiplicationQueueDescriptor, info);
-        }
-        case LayerType::Normalization:
-        {
-            auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor);
-            return CreateNormalization(*normalizationQueueDescriptor, info);
-        }
-        case LayerType::Output:
-        {
-            auto outputQueueDescriptor = PolymorphicDowncast<const OutputQueueDescriptor*>(&descriptor);
-            return CreateOutput(*outputQueueDescriptor, info);
-        }
-        case LayerType::Pad:
-        {
-            auto padQueueDescriptor = PolymorphicDowncast<const PadQueueDescriptor*>(&descriptor);
-            return CreatePad(*padQueueDescriptor, info);
-        }
-        case LayerType::Permute:
-        {
-            auto permuteQueueDescriptor = PolymorphicDowncast<const PermuteQueueDescriptor*>(&descriptor);
-            return CreatePermute(*permuteQueueDescriptor, info);
-        }
-        case LayerType::Pooling2d:
-        {
-            auto pooling2dQueueDescriptor = PolymorphicDowncast<const Pooling2dQueueDescriptor*>(&descriptor);
-            return CreatePooling2d(*pooling2dQueueDescriptor, info);
-        }
-        case LayerType::Pooling3d:
-        {
-            auto pooling3dQueueDescriptor = PolymorphicDowncast<const Pooling3dQueueDescriptor*>(&descriptor);
-            return CreatePooling3d(*pooling3dQueueDescriptor, info);
-        }
-        case LayerType::PreCompiled:
-        {
-            auto preCompiledQueueDescriptor = PolymorphicDowncast<const PreCompiledQueueDescriptor*>(&descriptor);
-            return CreatePreCompiled(*preCompiledQueueDescriptor, info);
-        }
-        case LayerType::Prelu:
-        {
-            auto preluQueueDescriptor = PolymorphicDowncast<const PreluQueueDescriptor*>(&descriptor);
-            return CreatePrelu(*preluQueueDescriptor, info);
-        }
-        case LayerType::QLstm:
-        {
-            auto qlstmQueueDescriptor = PolymorphicDowncast<const QLstmQueueDescriptor*>(&descriptor);
-            return CreateQLstm(*qlstmQueueDescriptor, info);
-        }
-        case LayerType::Quantize:
-        {
-            auto quantizeQueueDescriptor = PolymorphicDowncast<const QuantizeQueueDescriptor*>(&descriptor);
-            return CreateQuantize(*quantizeQueueDescriptor, info);
-        }
-        case LayerType::Rank:
-        {
-            auto rankQueueDescriptor = PolymorphicDowncast<const RankQueueDescriptor*>(&descriptor);
-            return CreateRank(*rankQueueDescriptor, info);
-        }
-        case LayerType::Reduce:
-        {
-            auto reduceQueueDescriptor = PolymorphicDowncast<const ReduceQueueDescriptor*>(&descriptor);
-            return CreateReduce(*reduceQueueDescriptor, info);
-        }
-        case LayerType::Reshape:
-        {
-            auto reshapeQueueDescriptor = PolymorphicDowncast<const ReshapeQueueDescriptor*>(&descriptor);
-            return CreateReshape(*reshapeQueueDescriptor, info);
-        }
-        case LayerType::Resize:
-        {
-            auto resizeQueueDescriptor = PolymorphicDowncast<const ResizeQueueDescriptor*>(&descriptor);
-            return CreateResize(*resizeQueueDescriptor, info);
-        }
-        case LayerType::Shape:
-        {
-            auto shapeQueueDescriptor = PolymorphicDowncast<const ShapeQueueDescriptor*>(&descriptor);
-            return CreateShape(*shapeQueueDescriptor, info);
-        }
-        case LayerType::Slice:
-        {
-            auto sliceQueueDescriptor = PolymorphicDowncast<const SliceQueueDescriptor*>(&descriptor);
-            return CreateSlice(*sliceQueueDescriptor, info);
-        }
-        case LayerType::Softmax:
-        {
-            auto softmaxQueueDescriptor = PolymorphicDowncast<const SoftmaxQueueDescriptor*>(&descriptor);
-            return CreateSoftmax(*softmaxQueueDescriptor, info);
-        }
-        case LayerType::SpaceToBatchNd:
-        {
-            auto spaceToBatchNdQueueDescriptor
-                    = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
-            return CreateSpaceToBatchNd(*spaceToBatchNdQueueDescriptor, info);
-        }
-        case LayerType::SpaceToDepth:
-        {
-            auto spaceToDepthQueueDescriptor = PolymorphicDowncast<const SpaceToDepthQueueDescriptor*>(&descriptor);
-            return CreateSpaceToDepth(*spaceToDepthQueueDescriptor, info);
-        }
-        case LayerType::Splitter:
-        {
-            auto splitterQueueDescriptor = PolymorphicDowncast<const SplitterQueueDescriptor*>(&descriptor);
-            return CreateSplitter(*splitterQueueDescriptor, info);
-        }
-        case LayerType::Stack:
-        {
-            auto stackQueueDescriptor = PolymorphicDowncast<const StackQueueDescriptor*>(&descriptor);
-            return CreateStack(*stackQueueDescriptor, info);
-        }
-        case LayerType::StridedSlice:
-        {
-            auto stridedSliceQueueDescriptor = PolymorphicDowncast<const StridedSliceQueueDescriptor*>(&descriptor);
-            return CreateStridedSlice(*stridedSliceQueueDescriptor, info);
-        }
-        case LayerType::Subtraction:
-        {
-            auto subtractionQueueDescriptor = PolymorphicDowncast<const SubtractionQueueDescriptor*>(&descriptor);
-            return CreateSubtraction(*subtractionQueueDescriptor, info);
-        }
-        case LayerType::Transpose:
-        {
-            auto transposeQueueDescriptor = PolymorphicDowncast<const TransposeQueueDescriptor*>(&descriptor);
-            return CreateTranspose(*transposeQueueDescriptor, info);
-        }
-        case LayerType::TransposeConvolution2d:
-        {
-            auto transposeConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
-            return CreateTransposeConvolution2d(*transposeConvolution2dQueueDescriptor, info);
-        }
-        case LayerType::UnidirectionalSequenceLstm:
-        {
-            auto unidirectionalSequenceLstmQueueDescriptor
-                    = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
-            return CreateUnidirectionalSequenceLstm(*unidirectionalSequenceLstmQueueDescriptor, info);
-        }
         default:
-            return nullptr;
+            return std::unique_ptr<IWorkload>();
     }
 }
-ARMNN_NO_DEPRECATE_WARN_END
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
-                                                              const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
-                                                             const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateBatchNormalization(
-    const BatchNormalizationQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*desc*/,
-                                                                  const WorkloadInfo& /*Info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateCast(const CastQueueDescriptor& /*descriptor*/,
-                                                       const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& /*descriptor*/,
-                                                                  const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
-                                                              const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*desc*/,
-                                                                     const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*desc*/,
-                                                                     const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& /*descriptor*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
-                                                                const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDepthwiseConvolution2d(
-    const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDequantize(
-    const DequantizeQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDetectionPostProcess(
-    const DetectionPostProcessQueueDescriptor& /*descriptor*/, const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& /*desc*/,
-                                                                    const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*desc*/,
-                                                                    const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateFill(const FillQueueDescriptor& /*descriptor*/,
-                                                        const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
-                                                                  const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateGather(const GatherQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateInstanceNormalization(
-    const InstanceNormalizationQueueDescriptor& /*descriptor*/,
-    const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& /*desc*/,
-                                                                   const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& /*desc*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogicalUnary(const ElementwiseUnaryQueueDescriptor& /*desc*/,
-                                                                const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
-                                                              const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
-                                                        const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMean(const MeanQueueDescriptor& /*descriptor*/,
-                                                        const WorkloadInfo& /*Info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
-                                                             const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
-                                                                  const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePad(const PadQueueDescriptor& /*descriptor*/,
-                                                       const WorkloadInfo& /*Info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
-                                                             const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePooling3d(const Pooling3dQueueDescriptor& /*descriptor*/,
-                                                             const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
-                                                               const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreatePrelu(const PreluQueueDescriptor &/*descriptor*/,
-                                                         const WorkloadInfo &/*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*Info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateRank(const RankQueueDescriptor& /*descriptor*/,
-                                                        const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateShape(const ShapeQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
-                                                                  const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
-                                                                const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateStack(const StackQueueDescriptor& /*descriptor*/,
-                                                         const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
-                                                                const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
-                                                               const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
-                                                             const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateTransposeConvolution2d(
-    const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
-    const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateUnidirectionalSequenceLstm(
-        const UnidirectionalSequenceLstmQueueDescriptor& /*descriptor*/,
-        const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
-
-std::unique_ptr<IWorkload> IWorkloadFactory::CreateInput(
-        const InputQueueDescriptor& /*descriptor*/,
-        const WorkloadInfo& /*info*/) const
-{
-    return std::unique_ptr<IWorkload>();
-}
 
 } // namepsace armnn
diff --git a/src/backends/backendsCommon/WorkloadFactoryBase.hpp b/src/backends/backendsCommon/WorkloadFactoryBase.hpp
index 00e549c..6c83932 100644
--- a/src/backends/backendsCommon/WorkloadFactoryBase.hpp
+++ b/src/backends/backendsCommon/WorkloadFactoryBase.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019, 2023 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -21,9 +21,6 @@
                                                          unsigned int const */*subTensorOrigin*/) const override
     { return nullptr; };
 
-    std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
 
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& /*tensorInfo*/,
                                                       const bool /*IsMemoryManaged*/) const override
@@ -39,242 +36,6 @@
                                               const WorkloadInfo& /*info*/) const override
     { return nullptr; }
 
-    std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& /*descriptor*/,
-                                                const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& /*descriptor*/,
-                                              const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& /*descriptor*/,
-                                               const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& /*descriptor*/,
-                                                        const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& /*descriptor*/,
-                                                    const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& /*descriptor*/,
-                                                const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& /*descriptor*/,
-                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& /*descriptor*/,
-                                              const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& /*descriptor*/,
-                                                       const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& /*descriptor*/,
-                                                       const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& /*descriptor*/,
-                                                   const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& /*descriptor*/,
-                                                  const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& /*descriptor*/,
-                                                const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& /*descriptor*/,
-                                                          const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& /*descriptor*/,
-                                              const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const override
-    {
-        if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
-        {
-            return CreateWorkload(armnn::LayerType::ElementwiseUnary, descriptor, info);
-        }
-        else
-        {
-            { return nullptr; }
-        }
-    }
-
-    std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& /*descriptor*/,
-                                                      const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& /*descriptor*/,
-                                                    const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& /*descriptor*/,
-                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& /*descriptor*/,
-                                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& /*descriptor*/,
-                                                     const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& /*descriptor*/,
-                                                const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& /*descriptor*/,
-                                          const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& /*descriptor*/,
-                                          const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& /*descriptor*/,
-                                               const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMerge(const MergeQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& /*descriptor*/,
-                                                    const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& /*descriptor*/,
-                                                   const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& /*descriptor*/,
-                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& /*descriptor*/,
-                                         const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& /*descriptor*/,
-                                               const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& /*descriptor*/,
-                                               const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
-                                                 const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& /*descriptor*/,
-                                              const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& /*descriptor*/,
-                                                   const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& /*descriptor*/,
-                                          const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& /*descriptor*/,
-                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& /*descriptor*/,
-                                             const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& /*descriptor*/,
-                                                    const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& /*descriptor*/,
-                                                  const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& /*descriptor*/,
-                                                 const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& /*descriptor*/,
-                                              const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& /*descriptor*/,
-                                           const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& /*descriptor*/,
-                                                  const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateSwitch(const SwitchQueueDescriptor& /*descriptor*/,
-                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& /*descriptor*/,
-                                               const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
-
-    std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& /*descriptor*/,
-                                                            const WorkloadInfo& /*info*/) const override
-    { return nullptr; }
 };
 
 } //namespace armnn
\ No newline at end of file
diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp
index 493080f..7b4e9be 100644
--- a/src/backends/cl/ClWorkloadFactory.cpp
+++ b/src/backends/cl/ClWorkloadFactory.cpp
@@ -273,14 +273,14 @@
         case LayerType::BatchNormalization :
         {
             auto batchNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>
-                    (*batchNormalizationQueueDescriptor, info, m_CLCompileContext);
+                (*batchNormalizationQueueDescriptor, info, m_CLCompileContext);
         }
         case LayerType::BatchToSpaceNd :
         {
             auto batchToSpaceNdQueueDescriptor
-                    = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info, m_CLCompileContext);
         }
         case LayerType::Cast :
@@ -291,7 +291,7 @@
         case LayerType::ChannelShuffle :
         {
             auto channelShuffleQueueDescriptor
-                    = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClChannelShuffleWorkload>(*channelShuffleQueueDescriptor, info, m_CLCompileContext);
         }
         case LayerType::Comparison :
@@ -312,7 +312,7 @@
         case LayerType::ConvertFp16ToFp32 :
         {
             auto convertFp16ToFp32QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
             return MakeWorkload<ClConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor,
                                                              info,
                                                              m_CLCompileContext);
@@ -320,7 +320,7 @@
         case LayerType::ConvertFp32ToFp16 :
         {
             auto convertFp32ToFp16QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
             return MakeWorkload<ClConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor,
                                                              info,
                                                              m_CLCompileContext);
@@ -328,7 +328,6 @@
         case LayerType::Convolution2d :
         {
             auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor);
-
             bool isFastMathEnabled = false;
             if (m_ModelContextPtr)
             {
@@ -350,7 +349,6 @@
         case LayerType::Convolution3d :
         {
             auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor);
-
             bool isFastMathEnabled = false;
             if (m_ModelContextPtr)
             {
@@ -382,7 +380,7 @@
         case LayerType::DepthwiseConvolution2d :
         {
             auto depthwiseConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClDepthwiseConvolutionWorkload>(*depthwiseConvolution2dQueueDescriptor,
                                                                 info,
                                                                 m_CLCompileContext);
@@ -395,7 +393,7 @@
         case LayerType::DetectionPostProcess :
         {
             auto detectionPostProcessQueueDescriptor
-                    = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
             return MakeWorkload<NullWorkload, NullWorkload>(*detectionPostProcessQueueDescriptor,
                                                             info,
                                                             m_CLCompileContext);
@@ -408,53 +406,52 @@
         case LayerType::ElementwiseBinary :
         {
             auto elementwiseBinaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
-
+                     = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
             switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case BinaryOperation::Add:
                 {
                     AdditionQueueDescriptor additionQueueDescriptor;
-                    additionQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    additionQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     additionQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     additionQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClAdditionWorkload>(additionQueueDescriptor, info, m_CLCompileContext);
                 }
                 case BinaryOperation::Div:
                 {
                     DivisionQueueDescriptor divisionQueueDescriptor;
-                    divisionQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    divisionQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     divisionQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     divisionQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClDivisionWorkload>(divisionQueueDescriptor, info, m_CLCompileContext);
                 }
                 case BinaryOperation::Maximum:
                 {
                     MaximumQueueDescriptor maximumQueueDescriptor;
-                    maximumQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    maximumQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     maximumQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     maximumQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClMaximumWorkload>(maximumQueueDescriptor, info, m_CLCompileContext);
                 }
                 case BinaryOperation::Minimum:
                 {
                     MinimumQueueDescriptor minimumQueueDescriptor;
-                    minimumQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    minimumQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     minimumQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     minimumQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClMinimumWorkload>(minimumQueueDescriptor, info, m_CLCompileContext);
                 }
                 case BinaryOperation::Mul:
                 {
                     MultiplicationQueueDescriptor multiplicationQueueDescriptor;
-                    multiplicationQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    multiplicationQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     multiplicationQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     multiplicationQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClMultiplicationWorkload>(multiplicationQueueDescriptor,
                                                                       info,
                                                                       m_CLCompileContext);
@@ -469,10 +466,10 @@
                 case BinaryOperation::Sub:
                 {
                     SubtractionQueueDescriptor subtractionQueueDescriptor;
-                    subtractionQueueDescriptor.m_Inputs = descriptor.m_Inputs;
+                    subtractionQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
                     subtractionQueueDescriptor.m_Outputs = descriptor.m_Outputs;
                     subtractionQueueDescriptor.m_AdditionalInfoObject =
-                            elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
+                        elementwiseBinaryQueueDescriptor->m_AdditionalInfoObject;
                     return std::make_unique<ClSubtractionWorkload>(subtractionQueueDescriptor,
                                                                    info,
                                                                    m_CLCompileContext);
@@ -484,8 +481,7 @@
         case LayerType::ElementwiseUnary :
         {
             auto elementwiseUnaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
-
+                     = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
             switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case UnaryOperation::Abs:
@@ -493,7 +489,6 @@
                     AbsQueueDescriptor absQueueDescriptor;
                     absQueueDescriptor.m_Inputs  = elementwiseUnaryQueueDescriptor->m_Inputs;
                     absQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
-
                     return  std::make_unique<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext);
                 }
                 case UnaryOperation::Exp:
@@ -511,7 +506,6 @@
                     RsqrtQueueDescriptor rsqrtQueueDescriptor;
                     rsqrtQueueDescriptor.m_Inputs  = elementwiseUnaryQueueDescriptor->m_Inputs;
                     rsqrtQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
-
                     return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext);
                 }
                 case UnaryOperation::Sin:
@@ -535,7 +529,7 @@
         case LayerType::FullyConnected :
         {
             auto fullyConnectedQueueDescriptor
-                    = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClFullyConnectedWorkload>(*fullyConnectedQueueDescriptor,
                                                           info,
                                                           m_MemoryManager->GetIntraLayerManager(),
@@ -559,7 +553,7 @@
         case LayerType::InstanceNormalization :
         {
             auto instanceNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor,
                                                                  info,
                                                                  m_CLCompileContext);
@@ -567,7 +561,7 @@
         case LayerType::L2Normalization :
         {
             auto l2NormalizationQueueDescriptor
-                    = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(*l2NormalizationQueueDescriptor,
                                                                               info,
                                                                               m_CLCompileContext);
@@ -575,7 +569,6 @@
         case LayerType::LogicalBinary :
         {
             auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor);
-
             switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case LogicalBinaryOperation::LogicalAnd:
@@ -593,7 +586,6 @@
         case LayerType::LogSoftmax :
         {
             auto logSoftmaxQueueDescriptor = PolymorphicDowncast<const LogSoftmaxQueueDescriptor*>(&descriptor);
-
             return MakeWorkload<ClLogSoftmaxWorkload>(*logSoftmaxQueueDescriptor,
                                                       info,
                                                       m_MemoryManager->GetIntraLayerManager(),
@@ -735,7 +727,7 @@
         case LayerType::SpaceToBatchNd :
         {
             auto spaceToBatchNdQueueDescriptor
-                    = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info, m_CLCompileContext);
         }
         case LayerType::SpaceToDepth :
@@ -771,7 +763,7 @@
         case LayerType::TransposeConvolution2d :
         {
             auto transposeConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
             return MakeWorkload<ClTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor,
                                                                   info,
                                                                   m_MemoryManager->GetIntraLayerManager(),
@@ -789,469 +781,6 @@
     }
 }
 
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClActivationWorkload>(descriptor, info, m_CLCompileContext);
-}
 
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClAdditionWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<ClArgMinMaxWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateBatchNormalization(
-    const BatchNormalizationQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClBatchNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClBatchToSpaceNdWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClCastWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClChannelShuffleWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClComparisonWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClConcatWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClConstantWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvertFp16ToFp32(
-    const ConvertFp16ToFp32QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClConvertFp16ToFp32Workload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvertFp32ToFp16(
-    const ConvertFp32ToFp16QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClConvertFp32ToFp16Workload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    bool isFastMathEnabled = false;
-    if (m_ModelContextPtr)
-    {
-        if (m_ModelContextPtr.get() != nullptr)
-        {
-            auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
-            if (modelOptions)
-            {
-                isFastMathEnabled = modelOptions->IsFastMathEnabled();
-            }
-        }
-    }
-    return MakeWorkload<ClConvolution2dWorkload>(descriptor,
-                                                 info,
-                                                 m_MemoryManager->GetIntraLayerManager(),
-                                                 m_CLCompileContext,
-                                                 isFastMathEnabled);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    bool isFastMathEnabled = false;
-    if (m_ModelContextPtr)
-    {
-        if (m_ModelContextPtr.get() != nullptr)
-        {
-            auto modelOptions = dynamic_cast<ClBackendModelContext*>(m_ModelContextPtr.get());
-            if (modelOptions)
-            {
-                isFastMathEnabled = modelOptions->IsFastMathEnabled();
-            }
-        }
-    }
-    return MakeWorkload<ClConvolution3dWorkload>(descriptor,
-                                                 info,
-                                                 m_MemoryManager->GetIntraLayerManager(),
-                                                 m_CLCompileContext,
-                                                 isFastMathEnabled);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClDepthToSpaceWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDepthwiseConvolution2d(
-    const DepthwiseConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClDepthwiseConvolutionWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClDequantizeWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDetectionPostProcess(
-    const DetectionPostProcessQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<ClDivisionWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    switch(descriptor.m_Parameters.m_Operation)
-    {
-        case UnaryOperation::Abs:
-        {
-            AbsQueueDescriptor absQueueDescriptor;
-            absQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
-            absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
-            return  std::make_unique<ClAbsWorkload>(absQueueDescriptor, info, m_CLCompileContext);
-        }
-        case UnaryOperation::Exp:
-            return std::make_unique<ClExpWorkload>(descriptor, info, m_CLCompileContext);
-         case UnaryOperation::Log:
-            return std::make_unique<ClLogWorkload>(descriptor, info, m_CLCompileContext);
-        case UnaryOperation::LogicalNot:
-            return std::make_unique<ClLogicalNotWorkload>(descriptor, info, m_CLCompileContext);
-        case UnaryOperation::Neg:
-            return std::make_unique<ClNegWorkload>(descriptor, info, m_CLCompileContext);
-        case UnaryOperation::Rsqrt:
-        {
-            RsqrtQueueDescriptor rsqrtQueueDescriptor;
-            rsqrtQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
-            rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
-            return std::make_unique<ClRsqrtWorkload>(rsqrtQueueDescriptor, info, m_CLCompileContext);
-        }
-        case UnaryOperation::Sin:
-            return std::make_unique<ClSinWorkload>(descriptor, info, m_CLCompileContext);
-        default:
-            return nullptr;
-    }
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return std::make_unique<ClFillWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClFloorFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClFullyConnectedWorkload>(descriptor,
-                                                  info,
-                                                  m_MemoryManager->GetIntraLayerManager(),
-                                                  m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateGather(const GatherQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClGatherWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateInstanceNormalization(
-    const InstanceNormalizationQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClInstanceNormalizationWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClL2NormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    switch(descriptor.m_Parameters.m_Operation)
-    {
-        case LogicalBinaryOperation::LogicalAnd:
-            return std::make_unique<ClLogicalAndWorkload>(descriptor, info, m_CLCompileContext);
-        case LogicalBinaryOperation::LogicalOr:
-            return std::make_unique<ClLogicalOrWorkload>(descriptor, info, m_CLCompileContext);
-        default:
-            return nullptr;
-    }
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClLogSoftmaxWorkload>(descriptor,
-                                              info,
-                                              m_MemoryManager->GetIntraLayerManager(),
-                                              m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClLstmFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClMaximumWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClMeanWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
-    {
-        throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemCopy workload");
-    }
-
-    return MakeWorkload<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
-    {
-        throw InvalidArgumentException("ClWorkloadFactory: Invalid null input for MemImport workload");
-    }
-
-    return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClMinimumWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClMultiplicationWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClNormalizationFloatWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClPadWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClPermuteWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClPooling2dWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return MakeWorkload<NullWorkload, NullWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreatePrelu(const PreluQueueDescriptor &descriptor,
-                                                          const WorkloadInfo &info) const
-{
-    return MakeWorkload<ClPreluWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<ClQLstmWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClQuantizeWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClQuantizedLstmWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return std::make_unique<ClRankWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<ClReduceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClReshapeWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClResizeWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClSliceWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<ClSoftmaxWorkload>(descriptor,
-                                               info,
-                                               m_MemoryManager->GetIntraLayerManager(),
-                                               m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClSpaceToBatchNdWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClSpaceToDepthWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClSplitterWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClStackWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClStridedSliceWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClSubtractionWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClTransposeWorkload>(descriptor, info, m_CLCompileContext);
-}
-
-std::unique_ptr<IWorkload> ClWorkloadFactory::CreateTransposeConvolution2d(
-    const TransposeConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return MakeWorkload<ClTransposeConvolution2dWorkload>(descriptor,
-                                                          info,
-                                                          m_MemoryManager->GetIntraLayerManager(),
-                                                          m_CLCompileContext);
-}
 
 } // namespace armnn
diff --git a/src/backends/cl/ClWorkloadFactory.hpp b/src/backends/cl/ClWorkloadFactory.hpp
index c4e49ee..d8e08d5 100644
--- a/src/backends/cl/ClWorkloadFactory.hpp
+++ b/src/backends/cl/ClWorkloadFactory.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #pragma once
@@ -54,316 +54,10 @@
     std::unique_ptr<ITensorHandle> CreateTensorHandle(const TensorInfo& tensorInfo,
                                                       DataLayout dataLayout,
                                                       const bool IsMemoryManaged = true) const override;
-
     std::unique_ptr<IWorkload> CreateWorkload(LayerType type,
                                               const QueueDescriptor& descriptor,
                                               const WorkloadInfo& info) const override;
 
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
-                                          const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
-                                         const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
 private:
     template<typename FloatWorkload, typename Uint8Workload, typename QueueDescriptorType, typename... Args>
     static std::unique_ptr<IWorkload> MakeWorkload(const QueueDescriptorType& descriptor,
diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp
index 29b3ff3..e3411de 100644
--- a/src/backends/neon/NeonWorkloadFactory.cpp
+++ b/src/backends/neon/NeonWorkloadFactory.cpp
@@ -172,13 +172,13 @@
         case LayerType::BatchNormalization :
         {
             auto batchNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const BatchNormalizationQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonBatchNormalizationWorkload>(*batchNormalizationQueueDescriptor, info);
         }
         case LayerType::BatchToSpaceNd :
         {
             auto batchToSpaceNdQueueDescriptor
-                    = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info);
         }
         case LayerType::Cast :
@@ -209,19 +209,18 @@
         case LayerType::ConvertFp16ToFp32 :
         {
             auto convertFp16ToFp32QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
             return std::make_unique<NeonConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor, info);
         }
         case LayerType::ConvertFp32ToFp16 :
         {
             auto convertFp32ToFp16QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
             return std::make_unique<NeonConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor, info);
         }
         case LayerType::Convolution2d :
         {
             auto convolution2dQueueDescriptor = PolymorphicDowncast<const Convolution2dQueueDescriptor*>(&descriptor);
-
             bool isFastMathEnabled = false;
             if (m_ModelContextPtr)
             {
@@ -242,7 +241,6 @@
         case LayerType::Convolution3d :
         {
             auto convolution3dQueueDescriptor = PolymorphicDowncast<const Convolution3dQueueDescriptor*>(&descriptor);
-
             bool isFastMathEnabled = false;
             if (m_ModelContextPtr)
             {
@@ -273,7 +271,7 @@
         case LayerType::DepthwiseConvolution2d :
         {
             auto depthwiseConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonDepthwiseConvolutionWorkload>(*depthwiseConvolution2dQueueDescriptor, info);
         }
         case LayerType::Dequantize :
@@ -284,7 +282,7 @@
         case LayerType::DetectionPostProcess :
         {
             auto detectionPostProcessQueueDescriptor
-                    = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
             return MakeWorkloadHelper<NullWorkload, NullWorkload>(*detectionPostProcessQueueDescriptor, info);
         }
         case LayerType::Division :
@@ -295,8 +293,7 @@
         case LayerType::ElementwiseBinary :
         {
             auto elementwiseBinaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
-
+                     = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
             switch (elementwiseBinaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case BinaryOperation::Add:
@@ -353,8 +350,7 @@
         case LayerType::ElementwiseUnary :
         {
             auto elementwiseUnaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
-
+                     = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
             switch(elementwiseUnaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case UnaryOperation::Abs:
@@ -362,7 +358,6 @@
                     AbsQueueDescriptor absQueueDescriptor;
                     absQueueDescriptor.m_Inputs  = elementwiseUnaryQueueDescriptor->m_Inputs;
                     absQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
-
                     return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info);
                 }
                 case UnaryOperation::Exp:
@@ -378,7 +373,6 @@
                     RsqrtQueueDescriptor rsqrtQueueDescriptor;
                     rsqrtQueueDescriptor.m_Inputs  = elementwiseUnaryQueueDescriptor->m_Inputs;
                     rsqrtQueueDescriptor.m_Outputs = elementwiseUnaryQueueDescriptor->m_Outputs;
-
                     return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info);
                 }
                 case UnaryOperation::Sin:
@@ -424,15 +418,15 @@
         case LayerType::InstanceNormalization :
         {
             auto instanceNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor, info);
         }
         case LayerType::L2Normalization :
         {
             auto l2NormalizationQueueDescriptor
-                    = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
             return MakeWorkloadHelper<NeonL2NormalizationFloatWorkload, NullWorkload>
-                    (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager());
+                (*l2NormalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager());
         }
         case LayerType::LogSoftmax :
         {
@@ -444,7 +438,6 @@
         case LayerType::LogicalBinary :
         {
             auto logicalBinaryQueueDescriptor = PolymorphicDowncast<const LogicalBinaryQueueDescriptor*>(&descriptor);
-
             switch(logicalBinaryQueueDescriptor->m_Parameters.m_Operation)
             {
                 case LogicalBinaryOperation::LogicalAnd:
@@ -502,7 +495,7 @@
         {
             auto normalizationQueueDescriptor = PolymorphicDowncast<const NormalizationQueueDescriptor*>(&descriptor);
             return MakeWorkloadHelper<NeonNormalizationFloatWorkload, NullWorkload>
-                    (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager());
+                (*normalizationQueueDescriptor, info, m_MemoryManager->GetIntraLayerManager());
         }
         case LayerType::Output :
         {
@@ -589,7 +582,7 @@
         case LayerType::SpaceToBatchNd :
         {
             auto spaceToBatchNdQueueDescriptor
-                    = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info);
         }
         case LayerType::SpaceToDepth :
@@ -630,7 +623,7 @@
         case LayerType::TransposeConvolution2d :
         {
             auto transposeConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
             return std::make_unique<NeonTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor,
                                                                         info,
                                                                         m_MemoryManager->GetIntraLayerManager());
@@ -638,7 +631,6 @@
         case LayerType::UnidirectionalSequenceLstm :
         {
             auto desc = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
-
             if ((info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Float32) &&
                 (info.m_InputTensorInfos[1].GetDataType() == armnn::DataType::Float32) &&
                 (info.m_InputTensorInfos[2].GetDataType() == armnn::DataType::Float32) &&
@@ -658,455 +650,4 @@
     }
 }
 
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo&              info) const
-{
-    return std::make_unique<NeonActivationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                                                      const WorkloadInfo&            info) const
-{
-    return std::make_unique<NeonAdditionWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonArgMinMaxWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateBatchNormalization(
-    const BatchNormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonBatchNormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonBatchToSpaceNdWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonCastWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonChannelShuffleWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonComparisonWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo&          info) const
-{
-    return std::make_unique<NeonConcatWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonConstantWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConvertFp16ToFp32(
-    const ConvertFp16ToFp32QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonConvertFp16ToFp32Workload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateConvertFp32ToFp16(
-    const ConvertFp32ToFp16QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonConvertFp32ToFp16Workload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConvolution2d(
-    const Convolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    bool isFastMathEnabled = false;
-    if (m_ModelContextPtr)
-    {
-        if (m_ModelContextPtr.get() != nullptr)
-        {
-            auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get());
-            if (modelOptions)
-            {
-                isFastMathEnabled = modelOptions->IsFastMathEnabled();
-            }
-        }
-    }
-    return std::make_unique<NeonConvolution2dWorkload>(descriptor,
-                                                       info,
-                                                       m_MemoryManager->GetIntraLayerManager(),
-                                                       isFastMathEnabled);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateConvolution3d(
-        const Convolution3dQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    bool isFastMathEnabled = false;
-    if (m_ModelContextPtr)
-    {
-        if (m_ModelContextPtr.get() != nullptr)
-        {
-            auto modelOptions = dynamic_cast<NeonBackendModelContext*>(m_ModelContextPtr.get());
-            if (modelOptions)
-            {
-                isFastMathEnabled = modelOptions->IsFastMathEnabled();
-            }
-        }
-    }
-    return std::make_unique<NeonConvolution3dWorkload>(descriptor,
-                                                       info,
-                                                       m_MemoryManager->GetIntraLayerManager(),
-                                                       isFastMathEnabled);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonDepthToSpaceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDepthwiseConvolution2d(
-    const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonDepthwiseConvolutionWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonDequantizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateDetectionPostProcess(
-    const armnn::DetectionPostProcessQueueDescriptor& descriptor, const armnn::WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateDivision(
-    const DivisionQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonDivisionWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateElementwiseUnary(
-    const ElementwiseUnaryQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    switch(descriptor.m_Parameters.m_Operation)
-    {
-        case UnaryOperation::Abs:
-        {
-            AbsQueueDescriptor absQueueDescriptor;
-            absQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
-            absQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
-            return std::make_unique<NeonAbsWorkload>(absQueueDescriptor, info);
-        }
-        case UnaryOperation::Exp:
-            return std::make_unique<NeonExpWorkload>(descriptor, info);
-        case UnaryOperation::LogicalNot:
-            return std::make_unique<NeonLogicalNotWorkload>(descriptor, info);
-        case UnaryOperation::Log:
-            return std::make_unique<NeonLogWorkload>(descriptor, info);
-        case UnaryOperation::Neg:
-            return std::make_unique<NeonNegWorkload>(descriptor, info);
-        case UnaryOperation::Rsqrt:
-        {
-            RsqrtQueueDescriptor rsqrtQueueDescriptor;
-            rsqrtQueueDescriptor.m_Inputs  = descriptor.m_Inputs;
-            rsqrtQueueDescriptor.m_Outputs = descriptor.m_Outputs;
-
-            return std::make_unique<NeonRsqrtWorkload>(rsqrtQueueDescriptor, info);
-        }
-        case UnaryOperation::Sin:
-            return std::make_unique<NeonSinWorkload>(descriptor, info);
-        default:
-            return nullptr;
-    }
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonFillWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NeonFloorFloatWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateFullyConnected(
-    const FullyConnectedQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonFullyConnectedWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateGather(const armnn::GatherQueueDescriptor& descriptor,
-                                                             const armnn::WorkloadInfo& info) const
-{
-    return std::make_unique<NeonGatherWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor,
-                                                            const WorkloadInfo&        info) const
-{
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateInstanceNormalization(
-    const InstanceNormalizationQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonInstanceNormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                                      const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NeonL2NormalizationFloatWorkload, NullWorkload>(descriptor, info,
-                                                                              m_MemoryManager->GetIntraLayerManager());
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonLogSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    switch(descriptor.m_Parameters.m_Operation)
-    {
-        case LogicalBinaryOperation::LogicalAnd:
-            return std::make_unique<NeonLogicalAndWorkload>(descriptor, info);
-        case LogicalBinaryOperation::LogicalOr:
-            return std::make_unique<NeonLogicalOrWorkload>(descriptor, info);
-        default:
-            return nullptr;
-    }
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NeonLstmFloatWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonMaximumWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonMeanWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo&        info) const
-{
-    if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
-    {
-        throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemCopy workload");
-    }
-
-    return MakeWorkloadHelper<CopyMemGenericWorkload, CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                                                       const WorkloadInfo&        info) const
-{
-    if (descriptor.m_Inputs.empty() || !descriptor.m_Inputs[0])
-    {
-        throw InvalidArgumentException("NeonWorkloadFactory: Invalid null input for MemImport workload");
-    }
-
-    return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonMinimumWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateMultiplication(
-    const MultiplicationQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonMultiplicationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateNormalization(
-    const NormalizationQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NeonNormalizationFloatWorkload, NullWorkload>(descriptor, info,
-                                                                            m_MemoryManager->GetIntraLayerManager());
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonPadWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonPermuteWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                                                       const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonPooling2dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return MakeWorkloadHelper<NullWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreatePrelu(const armnn::PreluQueueDescriptor &descriptor,
-                                                                   const armnn::WorkloadInfo &info) const
-{
-    return std::make_unique<NeonPreluWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonQLstmWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                                                      const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonQuantizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonQuantizedLstmWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonRankWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonReduceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonReshapeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonResizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonSliceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonSoftmaxWorkload>(descriptor, info, m_MemoryManager->GetIntraLayerManager());
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonSpaceToBatchNdWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonSpaceToDepthWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                                               const WorkloadInfo&            info) const
-{
-    return std::make_unique<NeonSplitterWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonStackWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonStridedSliceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateSubtraction(
-    const SubtractionQueueDescriptor& descriptor, const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonSubtractionWorkload>(descriptor, info);
-}
-
-std::unique_ptr<armnn::IWorkload> NeonWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                                                       const WorkloadInfo& info) const
-{
-    return std::make_unique<NeonTransposeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> NeonWorkloadFactory::CreateTransposeConvolution2d(
-    const TransposeConvolution2dQueueDescriptor &descriptor,
-    const WorkloadInfo &info) const
-{
-    return std::make_unique<NeonTransposeConvolution2dWorkload>(descriptor, info,
-                                                                m_MemoryManager->GetIntraLayerManager());
-}
-
 } // namespace armnn
diff --git a/src/backends/neon/NeonWorkloadFactory.hpp b/src/backends/neon/NeonWorkloadFactory.hpp
index e4f5459..bb7a11c 100644
--- a/src/backends/neon/NeonWorkloadFactory.hpp
+++ b/src/backends/neon/NeonWorkloadFactory.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #pragma once
@@ -55,312 +55,6 @@
     std::unique_ptr<IWorkload> CreateWorkload(LayerType type,
                                               const QueueDescriptor& descriptor,
                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
-                                          const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
-                                         const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQuantizedLstm(const QuantizedLstmQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
 private:
     void SetNumberOfThreads();
 
diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp
index 86a5844..fa2082d 100644
--- a/src/backends/reference/RefWorkloadFactory.cpp
+++ b/src/backends/reference/RefWorkloadFactory.cpp
@@ -3,15 +3,16 @@
 // SPDX-License-Identifier: MIT
 //
 #include <Layer.hpp>
-#include <armnn/backends/MemCopyWorkload.hpp>
+
 #include <backendsCommon/MemImportWorkload.hpp>
 #include <backendsCommon/MakeWorkloadHelper.hpp>
+#include <armnn/backends/MemCopyWorkload.hpp>
 #include <armnn/backends/TensorHandle.hpp>
+
 #include "RefWorkloadFactory.hpp"
 #include "RefBackendId.hpp"
-#include "workloads/RefWorkloads.hpp"
 #include "RefTensorHandle.hpp"
-
+#include "workloads/RefWorkloads.hpp"
 
 namespace armnn
 {
@@ -25,7 +26,7 @@
                                                             const WorkloadInfo& info) const
 {
     return MakeWorkloadHelper<NullWorkload, F32Workload, U8Workload, NullWorkload, NullWorkload, NullWorkload>
-           (descriptor, info);
+        (descriptor, info);
 }
 
 template <DataType ArmnnType>
@@ -44,37 +45,30 @@
     }
     return false;
 }
-
 bool IsSigned32(const WorkloadInfo& info)
 {
     return IsDataType<DataType::Signed32>(info);
 }
-
 bool IsBFloat16(const WorkloadInfo& info)
 {
     return IsDataType<DataType::BFloat16>(info);
 }
-
 bool IsFloat16(const WorkloadInfo& info)
 {
     return IsDataType<DataType::Float16>(info);
 }
-
 bool IsQSymmS16(const WorkloadInfo& info)
 {
     return IsDataType<DataType::QSymmS16>(info);
 }
-
 bool IsQSymmS8(const WorkloadInfo& info)
 {
     return IsDataType<DataType::QSymmS8>(info);
 }
-
 bool IsQAsymmS8(const WorkloadInfo& info)
 {
     return IsDataType<DataType::QAsymmS8>(info);
 }
-
 bool IsQAsymmU8(const WorkloadInfo& info)
 {
     return IsDataType<DataType::QAsymmU8>(info);
@@ -155,7 +149,6 @@
         case LayerType::Addition :
         {
             auto additionQueueDescriptor = PolymorphicDowncast<const AdditionQueueDescriptor*>(&descriptor);
-
             if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
             {
                 return std::make_unique<RefAdditionWorkload<int32_t>>(*additionQueueDescriptor, info);
@@ -183,9 +176,9 @@
         case LayerType::BatchToSpaceNd :
         {
             auto batchToSpaceNdQueueDescriptor
-                    = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const BatchToSpaceNdQueueDescriptor*>(&descriptor);
             return std::make_unique<RefBatchToSpaceNdWorkload>(*batchToSpaceNdQueueDescriptor, info);
-       }
+        }
         case LayerType::Cast :
         {
             auto castQueueDescriptor = PolymorphicDowncast<const CastQueueDescriptor*>(&descriptor);
@@ -194,7 +187,7 @@
         case LayerType::ChannelShuffle :
         {
             auto channelShuffleQueueDescriptor
-                    = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ChannelShuffleQueueDescriptor*>(&descriptor);
             return std::make_unique<RefChannelShuffleWorkload>(*channelShuffleQueueDescriptor, info);
         }
         case LayerType::Comparison :
@@ -215,13 +208,13 @@
         case LayerType::ConvertFp16ToFp32:
         {
             auto convertFp16ToFp32QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp16ToFp32QueueDescriptor*>(&descriptor);
             return std::make_unique<RefConvertFp16ToFp32Workload>(*convertFp16ToFp32QueueDescriptor, info);
         }
         case LayerType::ConvertFp32ToFp16:
         {
             auto convertFp32ToFp16QueueDescriptor
-                    = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ConvertFp32ToFp16QueueDescriptor*>(&descriptor);
             return std::make_unique<RefConvertFp32ToFp16Workload>(*convertFp32ToFp16QueueDescriptor, info);
         }
         case LayerType::Convolution2d:
@@ -265,7 +258,6 @@
             {
                 return std::make_unique<RefDebugSigned32Workload>(*debugQueueDescriptor, info);
             }
-
             return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(*debugQueueDescriptor, info);
         }
         case LayerType::DepthToSpace:
@@ -276,7 +268,7 @@
         case LayerType::DepthwiseConvolution2d:
         {
             auto depthwiseConvolution2DQueueDescriptor
-                = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DepthwiseConvolution2dQueueDescriptor*>(&descriptor);
             return std::make_unique<RefDepthwiseConvolution2dWorkload>(*depthwiseConvolution2DQueueDescriptor, info);
         }
         case LayerType::Dequantize:
@@ -287,7 +279,7 @@
         case LayerType::DetectionPostProcess:
         {
             auto detectionPostProcessQueueDescriptor
-                = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const DetectionPostProcessQueueDescriptor*>(&descriptor);
             return std::make_unique<RefDetectionPostProcessWorkload>(*detectionPostProcessQueueDescriptor, info);
         }
         case LayerType::Division:
@@ -305,13 +297,13 @@
         case LayerType::ElementwiseBinary:
         {
             auto elementwiseBinaryQueueDescriptor
-                    = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ElementwiseBinaryQueueDescriptor*>(&descriptor);
             return std::make_unique<RefElementwiseBinaryWorkload>(*elementwiseBinaryQueueDescriptor, info);
         }
         case LayerType::ElementwiseUnary:
         {
             auto elementwiseUnaryQueueDescriptor
-                = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const ElementwiseUnaryQueueDescriptor*>(&descriptor);
             if ((*elementwiseUnaryQueueDescriptor).m_Parameters.m_Operation == UnaryOperation::LogicalNot)
             {
                 return std::make_unique<RefLogicalUnaryWorkload>(*elementwiseUnaryQueueDescriptor, info);
@@ -321,7 +313,7 @@
         case LayerType::FakeQuantization:
         {
             auto fakeQuantizationQueueDescriptor
-                = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const FakeQuantizationQueueDescriptor*>(&descriptor);
             return std::make_unique<RefFakeQuantizationFloat32Workload>(*fakeQuantizationQueueDescriptor, info);
         }
         case LayerType::Fill:
@@ -344,7 +336,7 @@
         case LayerType::FullyConnected:
         {
             auto fullyConnectedQueueDescriptor
-                    = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const FullyConnectedQueueDescriptor*>(&descriptor);
             return std::make_unique<RefFullyConnectedWorkload>(*fullyConnectedQueueDescriptor, info);
         }
         case LayerType::Gather:
@@ -368,25 +360,23 @@
             {
                 throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length");
             }
-
             if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
             {
                 throw InvalidArgumentException("RefWorkloadFactory::CreateInput: "
                                                "data input and output differ in byte count.");
             }
-
             return std::make_unique<CopyMemGenericWorkload>(*inputQueueDescriptor, info);
         }
         case LayerType::InstanceNormalization:
         {
             auto instanceNormalizationQueueDescriptor
-                    = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const InstanceNormalizationQueueDescriptor*>(&descriptor);
             return std::make_unique<RefInstanceNormalizationWorkload>(*instanceNormalizationQueueDescriptor, info);
         }
         case LayerType::L2Normalization:
         {
             auto l2NormalizationQueueDescriptor
-                    = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const L2NormalizationQueueDescriptor*>(&descriptor);
             return std::make_unique<RefL2NormalizationWorkload>(*l2NormalizationQueueDescriptor, info);
         }
         case LayerType::LogicalBinary:
@@ -454,7 +444,7 @@
         case LayerType::Multiplication:
         {
             auto multiplicationQueueDescriptor
-                    = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const MultiplicationQueueDescriptor*>(&descriptor);
             if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
             {
                 return std::make_unique<RefMultiplicationWorkload<int32_t>>(*multiplicationQueueDescriptor, info);
@@ -485,7 +475,6 @@
                 throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output "
                                                "differ in byte count.");
             }
-
             return std::make_unique<CopyMemGenericWorkload>(*outputQueueDescriptor, info);
         }
         case LayerType::Pad:
@@ -509,7 +498,7 @@
                 return std::make_unique<RefPermuteQAsymmS8Workload>(*permuteQueueDescriptor, info);
             }
             return MakeWorkloadHelper<RefPermuteFloat16Workload, RefPermuteFloat32Workload, RefPermuteQAsymm8Workload,
-                    NullWorkload, NullWorkload, NullWorkload>(*permuteQueueDescriptor, info);
+                                      NullWorkload, NullWorkload, NullWorkload>(*permuteQueueDescriptor, info);
         }
         case LayerType::Pooling2d:
         {
@@ -583,7 +572,7 @@
         case LayerType::SpaceToBatchNd:
         {
             auto spaceToBatchNdQueueDescriptor
-                    = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const SpaceToBatchNdQueueDescriptor*>(&descriptor);
             return std::make_unique<RefSpaceToBatchNdWorkload>(*spaceToBatchNdQueueDescriptor, info);
         }
         case LayerType::SpaceToDepth:
@@ -639,19 +628,19 @@
                 return std::make_unique<RefTransposeQAsymmS8Workload>(*transposeQueueDescriptor, info);
             }
             return MakeWorkloadHelper<RefTransposeFloat16Workload, RefTransposeFloat32Workload,
-                    RefTransposeQAsymm8Workload, NullWorkload, NullWorkload, NullWorkload>
-                    (*transposeQueueDescriptor, info);
+                                      RefTransposeQAsymm8Workload, NullWorkload, NullWorkload, NullWorkload>
+                (*transposeQueueDescriptor, info);
         }
         case LayerType::TransposeConvolution2d:
         {
             auto transposeConvolution2dQueueDescriptor
-                    = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const TransposeConvolution2dQueueDescriptor*>(&descriptor);
             return std::make_unique<RefTransposeConvolution2dWorkload>(*transposeConvolution2dQueueDescriptor, info);
         }
         case LayerType::UnidirectionalSequenceLstm:
         {
             auto unidirectionalSequenceLstmQueueDescriptor
-                    = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
+                     = PolymorphicDowncast<const UnidirectionalSequenceLstmQueueDescriptor*>(&descriptor);
             return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(*unidirectionalSequenceLstmQueueDescriptor,
                                                                            info);
         }
@@ -660,540 +649,4 @@
     }
 }
 
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return std::make_unique<RefActivationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefAdditionWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefAdditionWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return std::make_unique<RefArgMinMaxWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateBatchNormalization(
-    const BatchNormalizationQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefBatchNormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefBatchToSpaceNdWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateCast(const CastQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<RefCastWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateChannelShuffle(const ChannelShuffleQueueDescriptor &descriptor,
-                                                                    const WorkloadInfo &info) const
-{
-    return std::make_unique<RefChannelShuffleWorkload>(descriptor,info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return std::make_unique<RefComparisonWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConcatWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConstantWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvertFp16ToFp32(
-    const ConvertFp16ToFp32QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConvertFp16ToFp32Workload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvertFp32ToFp16(
-    const ConvertFp32ToFp16QueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConvertFp32ToFp16Workload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConvolution2dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<RefConvolution3dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDebug(const DebugQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    if (IsBFloat16(info))
-    {
-        return std::make_unique<RefDebugBFloat16Workload>(descriptor, info);
-    }
-    if (IsFloat16(info))
-    {
-        return std::make_unique<RefDebugFloat16Workload>(descriptor, info);
-    }
-    if (IsQSymmS16(info))
-    {
-        return std::make_unique<RefDebugQSymmS16Workload>(descriptor, info);
-    }
-    if (IsQSymmS8(info))
-    {
-        return std::make_unique<RefDebugQSymmS8Workload>(descriptor, info);
-    }
-    if (IsQAsymmU8(info))
-    {
-        return std::make_unique<RefDebugQAsymmU8Workload>(descriptor, info);
-    }
-    if (IsQAsymmS8(info))
-    {
-        return std::make_unique<RefDebugQAsymmS8Workload>(descriptor, info);
-    }
-    if (IsSigned32(info))
-    {
-        return std::make_unique<RefDebugSigned32Workload>(descriptor, info);
-    }
-
-    return MakeWorkload<RefDebugFloat32Workload, RefDebugQAsymmU8Workload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return std::make_unique<RefDepthToSpaceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDepthwiseConvolution2d(
-    const DepthwiseConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefDepthwiseConvolution2dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return std::make_unique<RefDequantizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDetectionPostProcess(
-    const DetectionPostProcessQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefDetectionPostProcessWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefDivisionWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefDivisionWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                                      const WorkloadInfo& info) const
-{
-    if (descriptor.m_Parameters.m_Operation == UnaryOperation::LogicalNot)
-    {
-        return std::make_unique<RefLogicalUnaryWorkload>(descriptor, info);
-    }
-    return std::make_unique<RefElementwiseUnaryWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
-                                                                      const WorkloadInfo& info) const
-{
-    return MakeWorkload<RefFakeQuantizationFloat32Workload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFill(const FillQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<RefFillWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFloor(const FloorQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    if(IsQuantizedType(info.m_InputTensorInfos[0].GetDataType()))
-    {
-        return nullptr;
-    }
-    else
-    {
-        return std::make_unique<RefFloorWorkload>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateFullyConnected(
-    const FullyConnectedQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefFullyConnectedWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateGather(const GatherQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<RefGatherWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateInput(const InputQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos.empty() )
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Input cannot be zero length");
-    }
-    if (info.m_OutputTensorInfos.empty())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateInput: Output cannot be zero length");
-    }
-
-    if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateInput: data input and output differ in byte count.");
-    }
-
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateInstanceNormalization(
-    const InstanceNormalizationQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefInstanceNormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                                     const WorkloadInfo& info) const
-{
-    return std::make_unique<RefL2NormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<RefLogicalBinaryWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                                const WorkloadInfo& info) const
-{
-    return std::make_unique<RefLogSoftmaxWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateLstm(const LstmQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<RefLstmWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefMaximumWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefMaximumWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMean(const MeanQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return  std::make_unique<RefMeanWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    if (descriptor.m_Inputs.empty())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory: CreateMemCopy() expected an input tensor.");
-    }
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    if (descriptor.m_Inputs.empty())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory: CreateMemImport() expected an input tensor.");
-    }
-    return std::make_unique<ImportMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefMinimumWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefMinimumWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefMultiplicationWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefMultiplicationWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                                   const WorkloadInfo& info) const
-{
-    return std::make_unique<RefNormalizationWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateOutput(const OutputQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos.empty() )
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Input cannot be zero length");
-    }
-    if (info.m_OutputTensorInfos.empty())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: Output cannot be zero length");
-    }
-    if (info.m_InputTensorInfos[0].GetNumBytes() != info.m_OutputTensorInfos[0].GetNumBytes())
-    {
-        throw InvalidArgumentException("RefWorkloadFactory::CreateOutput: data input and output differ in byte count.");
-    }
-
-    return std::make_unique<CopyMemGenericWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePad(const PadQueueDescriptor& descriptor,
-                                                         const WorkloadInfo& info) const
-{
-    return std::make_unique<RefPadWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    if (IsQSymmS16(info))
-    {
-        return std::make_unique<RefPermuteQSymm16Workload>(descriptor, info);
-    }
-    else if (IsBFloat16(info))
-    {
-        return std::make_unique<RefPermuteBFloat16Workload>(descriptor, info);
-    }
-    else if (IsQAsymmS8(info))
-    {
-        return std::make_unique<RefPermuteQAsymmS8Workload>(descriptor, info);
-    }
-    return MakeWorkloadHelper<RefPermuteFloat16Workload, RefPermuteFloat32Workload, RefPermuteQAsymm8Workload,
-        NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return std::make_unique<RefPooling2dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePooling3d(const Pooling3dQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    return std::make_unique<RefPooling3dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePreCompiled(const PreCompiledQueueDescriptor& /*descriptor*/,
-                                                                 const WorkloadInfo& /*info*/) const
-{
-    return nullptr;
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreatePrelu(const PreluQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<RefPreluWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<RefQLstmWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<RefQuantizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateRank(const RankQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const
-{
-    return std::make_unique<RefRankWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<RefReduceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<RefReshapeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateResize(const ResizeQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const
-{
-    return std::make_unique<RefResizeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateShape(const ShapeQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<RefShapeWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSlice(const SliceQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<RefSliceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                                             const WorkloadInfo& info) const
-{
-    return std::make_unique<RefSoftmaxWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                                    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefSpaceToBatchNdWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return std::make_unique<RefSpaceToDepthWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                                              const WorkloadInfo& info) const
-{
-    return std::make_unique<RefSplitterWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateStack(const StackQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const
-{
-    return std::make_unique<RefStackWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                                  const WorkloadInfo& info) const
-{
-    return std::make_unique<RefStridedSliceWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                                 const WorkloadInfo& info) const
-{
-    if (info.m_InputTensorInfos[0].GetDataType() == armnn::DataType::Signed32)
-    {
-        return std::make_unique<RefSubtractionWorkload<int32_t>>(descriptor, info);
-    }
-    else
-    {
-        return std::make_unique<RefSubtractionWorkload<float>>(descriptor, info);
-    }
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                                               const WorkloadInfo& info) const
-{
-    if (IsQSymmS16(info))
-    {
-        return std::make_unique<RefTransposeQSymm16Workload>(descriptor, info);
-    }
-    else if (IsBFloat16(info))
-    {
-        return std::make_unique<RefTransposeBFloat16Workload>(descriptor, info);
-    }
-    else if (IsQAsymmS8(info))
-    {
-        return std::make_unique<RefTransposeQAsymmS8Workload>(descriptor, info);
-    }
-    return MakeWorkloadHelper<RefTransposeFloat16Workload, RefTransposeFloat32Workload, RefTransposeQAsymm8Workload,
-            NullWorkload, NullWorkload, NullWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateTransposeConvolution2d(
-    const TransposeConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefTransposeConvolution2dWorkload>(descriptor, info);
-}
-
-std::unique_ptr<IWorkload> RefWorkloadFactory::CreateUnidirectionalSequenceLstm(
-    const UnidirectionalSequenceLstmQueueDescriptor& descriptor,
-    const WorkloadInfo& info) const
-{
-    return std::make_unique<RefUnidirectionalSequenceLstmWorkload>(descriptor, info);;
-}
-
 } // namespace armnn
diff --git a/src/backends/reference/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp
index 22dc35a..ec7c62b 100644
--- a/src/backends/reference/RefWorkloadFactory.hpp
+++ b/src/backends/reference/RefWorkloadFactory.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #pragma once
@@ -16,13 +16,10 @@
 
 template <typename QueueDescriptorType>
 constexpr bool IsOperationQueueDescriptor(const QueueDescriptorType&) { return true; }
-
 template <>
 constexpr bool IsOperationQueueDescriptor(const MemCopyQueueDescriptor&) { return false; }
-
 template <>
 constexpr bool IsOperationQueueDescriptor(const ConstantQueueDescriptor&) { return false; }
-
 template <>
 constexpr bool IsOperationQueueDescriptor(const PermuteQueueDescriptor&) { return false; }
 
@@ -70,327 +67,6 @@
                                               const QueueDescriptor& descriptor,
                                               const WorkloadInfo& info) const override;
 
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateActivation(const ActivationQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateAddition(const AdditionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateArgMinMax(const ArgMinMaxQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchNormalization(const BatchNormalizationQueueDescriptor& descriptor,
-                                                        const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateCast(const CastQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateChannelShuffle(const ChannelShuffleQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateComparison(const ComparisonQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConcat(const ConcatQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConstant(const ConstantQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp16ToFp32(const ConvertFp16ToFp32QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvertFp32ToFp16(const ConvertFp32ToFp16QueueDescriptor& descriptor,
-                                                       const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution2d(const Convolution2dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateConvolution3d(const Convolution3dQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDebug(const DebugQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthToSpace(const DepthToSpaceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDepthwiseConvolution2d(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDequantize(const DequantizeQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDetectionPostProcess(const DetectionPostProcessQueueDescriptor& descriptor,
-                                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateDivision(const DivisionQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateElementwiseUnary(const ElementwiseUnaryQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFakeQuantization(const FakeQuantizationQueueDescriptor& descriptor,
-                                                      const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFill(const FillQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFloor(const FloorQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateFullyConnected(const FullyConnectedQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateGather(const GatherQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInput(const InputQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateInstanceNormalization(const InstanceNormalizationQueueDescriptor& descriptor,
-                                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateL2Normalization(const L2NormalizationQueueDescriptor& descriptor,
-                                                     const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogicalBinary(const LogicalBinaryQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLogSoftmax(const LogSoftmaxQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateLstm(const LstmQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMaximum(const MaximumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMean(const MeanQueueDescriptor& descriptor,
-                                          const WorkloadInfo& Info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemCopy(const MemCopyQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMemImport(const MemImportQueueDescriptor& descriptor,
-                                                const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMinimum(const MinimumQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateMultiplication(const MultiplicationQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateNormalization(const NormalizationQueueDescriptor& descriptor,
-                                                   const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateOutput(const OutputQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePad(const PadQueueDescriptor& descriptor,
-                                         const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePermute(const PermuteQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePooling2d(const Pooling2dQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePooling3d(const Pooling3dQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePreCompiled(const PreCompiledQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreatePrelu(const PreluQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQLstm(const QLstmQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateQuantize(const QuantizeQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateRank(const RankQueueDescriptor& descriptor,
-                                          const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReduce(const ReduceQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateReshape(const ReshapeQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateResize(const ResizeQueueDescriptor& descriptor,
-                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateShape(const ShapeQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSlice(const SliceQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSoftmax(const SoftmaxQueueDescriptor& descriptor,
-                                             const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor& descriptor,
-                                                    const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSpaceToDepth(const SpaceToDepthQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSplitter(const SplitterQueueDescriptor& descriptor,
-                                              const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStack(const StackQueueDescriptor& descriptor,
-                                           const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateStridedSlice(const StridedSliceQueueDescriptor& descriptor,
-                                                  const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateSubtraction(const SubtractionQueueDescriptor& descriptor,
-                                                 const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTranspose(const TransposeQueueDescriptor& descriptor,
-                                               const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateTransposeConvolution2d(const TransposeConvolution2dQueueDescriptor& descriptor,
-                                                            const WorkloadInfo& info) const override;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use ABI stable "
-    "CreateWorkload(LayerType, const QueueDescriptor&, const WorkloadInfo& info) instead.", "23.08")
-    std::unique_ptr<IWorkload> CreateUnidirectionalSequenceLstm(
-        const UnidirectionalSequenceLstmQueueDescriptor& descriptor,
-        const WorkloadInfo& info) const override;
-
 private:
     template <typename F32Workload, typename U8Workload, typename QueueDescriptorType>
     std::unique_ptr<IWorkload> MakeWorkload(const QueueDescriptorType& descriptor, const WorkloadInfo& info) const;