diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp
index 09dfab9..434b069 100644
--- a/src/backends/cl/ClLayerSupport.cpp
+++ b/src/backends/cl/ClLayerSupport.cpp
@@ -20,7 +20,7 @@
 #include "workloads/ClConvertFp16ToFp32Workload.hpp"
 #include "workloads/ClConvertFp32ToFp16Workload.hpp"
 #include "workloads/ClConvolution2dWorkload.hpp"
-#include "workloads/ClDepthwiseConvolutionBaseWorkload.hpp"
+#include "workloads/ClDepthwiseConvolutionWorkload.hpp"
 #include "workloads/ClDivisionFloatWorkload.hpp"
 #include "workloads/ClL2NormalizationFloatWorkload.hpp"
 #include "workloads/ClMultiplicationWorkload.hpp"
diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp
index 2e07445..c00d0ba 100644
--- a/src/backends/cl/ClWorkloadFactory.cpp
+++ b/src/backends/cl/ClWorkloadFactory.cpp
@@ -150,7 +150,7 @@
 std::unique_ptr<IWorkload> ClWorkloadFactory::CreateDepthwiseConvolution2d(
     const DepthwiseConvolution2dQueueDescriptor& descriptor, const WorkloadInfo& info) const
 {
-    return MakeWorkload<ClDepthwiseConvolutionFloatWorkload, ClDepthwiseConvolutionUint8Workload>(descriptor, info);
+    return std::make_unique<ClDepthwiseConvolutionWorkload>(descriptor, info);
 }
 
 std::unique_ptr<armnn::IWorkload> ClWorkloadFactory::CreateNormalization(const NormalizationQueueDescriptor& descriptor,
diff --git a/src/backends/cl/backend.mk b/src/backends/cl/backend.mk
index c86940c..04b8b9e 100644
--- a/src/backends/cl/backend.mk
+++ b/src/backends/cl/backend.mk
@@ -22,9 +22,7 @@
         workloads/ClConvertFp16ToFp32Workload.cpp \
         workloads/ClConvertFp32ToFp16Workload.cpp \
         workloads/ClConvolution2dWorkload.cpp \
-        workloads/ClDepthwiseConvolutionBaseWorkload.cpp \
-        workloads/ClDepthwiseConvolutionFloatWorkload.cpp \
-        workloads/ClDepthwiseConvolutionUint8Workload.cpp \
+        workloads/ClDepthwiseConvolutionWorkload.cpp \
         workloads/ClDivisionFloatWorkload.cpp \
         workloads/ClFloorFloatWorkload.cpp \
         workloads/ClFullyConnectedWorkload.cpp \
diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt
index 5a1653e..4d1c1bf 100644
--- a/src/backends/cl/workloads/CMakeLists.txt
+++ b/src/backends/cl/workloads/CMakeLists.txt
@@ -25,12 +25,8 @@
     ClConvertFp32ToFp16Workload.hpp
     ClConvolution2dWorkload.cpp
     ClConvolution2dWorkload.hpp
-    ClDepthwiseConvolutionBaseWorkload.cpp
-    ClDepthwiseConvolutionBaseWorkload.hpp
-    ClDepthwiseConvolutionFloatWorkload.cpp
-    ClDepthwiseConvolutionFloatWorkload.hpp
-    ClDepthwiseConvolutionUint8Workload.cpp
-    ClDepthwiseConvolutionUint8Workload.hpp
+    ClDepthwiseConvolutionWorkload.cpp
+    ClDepthwiseConvolutionWorkload.hpp
     ClDivisionFloatWorkload.cpp
     ClDivisionFloatWorkload.hpp
     ClFloorFloatWorkload.cpp
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.cpp b/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.cpp
deleted file mode 100644
index 17ecd29..0000000
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClDepthwiseConvolutionFloatWorkload.hpp"
-
-#include <backends/CpuTensorHandle.hpp>
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-ClDepthwiseConvolutionFloatWorkload::ClDepthwiseConvolutionFloatWorkload(
-    const DepthwiseConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info)
-    : ClDepthwiseConvolutionBaseWorkload(descriptor, info)
-{
-    InitializeArmComputeClTensorData(*m_KernelTensor, m_Data.m_Weight);
-
-    if (m_BiasTensor)
-    {
-        InitializeArmComputeClTensorData(*m_BiasTensor, m_Data.m_Bias);
-    }
-
-    m_DepthwiseConvolutionLayer->prepare();
-    FreeUnusedTensors();
-}
-
-void ClDepthwiseConvolutionFloatWorkload::Execute() const
-{
-    ARMNN_SCOPED_PROFILING_EVENT_CL("ClDepthwiseConvolutionFloatWorkload_Execute");
-    BOOST_ASSERT(m_DepthwiseConvolutionLayer);
-
-    m_DepthwiseConvolutionLayer->run();
-}
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.hpp b/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.hpp
deleted file mode 100644
index 4f9d5f3..0000000
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionFloatWorkload.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClDepthwiseConvolutionBaseWorkload.hpp"
-
-namespace armnn
-{
-
-class ClDepthwiseConvolutionFloatWorkload : public ClDepthwiseConvolutionBaseWorkload<DataType::Float16,
-                                                                                      DataType::Float32>
-{
-public:
-    ClDepthwiseConvolutionFloatWorkload(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                        const WorkloadInfo& info);
-    void Execute() const override;
-};
-
-} //namespace armnn
-
-
-
-
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.cpp b/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.cpp
deleted file mode 100644
index 22922e4..0000000
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClDepthwiseConvolutionUint8Workload.hpp"
-
-#include <backends/CpuTensorHandle.hpp>
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-ClDepthwiseConvolutionUint8Workload::ClDepthwiseConvolutionUint8Workload(
-    const DepthwiseConvolution2dQueueDescriptor& descriptor,
-    const WorkloadInfo& info)
-    : ClDepthwiseConvolutionBaseWorkload(descriptor, info)
-{
-    InitializeArmComputeClTensorData(*m_KernelTensor, m_Data.m_Weight);
-
-    if (m_BiasTensor)
-    {
-        InitializeArmComputeClTensorData(*m_BiasTensor, m_Data.m_Bias);
-    }
-
-    m_DepthwiseConvolutionLayer->prepare();
-    FreeUnusedTensors();
-}
-
-void ClDepthwiseConvolutionUint8Workload::Execute() const
-{
-    ARMNN_SCOPED_PROFILING_EVENT_CL("ClDepthwiseConvolutionUint8Workload_Execute");
-    BOOST_ASSERT(m_DepthwiseConvolutionLayer);
-
-    m_DepthwiseConvolutionLayer->run();
-}
-
-} //namespace armnn
-
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.hpp b/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.hpp
deleted file mode 100644
index b9f676d..0000000
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionUint8Workload.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClDepthwiseConvolutionBaseWorkload.hpp"
-
-namespace armnn
-{
-
-class ClDepthwiseConvolutionUint8Workload : public ClDepthwiseConvolutionBaseWorkload<DataType::QuantisedAsymm8>
-{
-public:
-    ClDepthwiseConvolutionUint8Workload(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                        const WorkloadInfo& info);
-    void Execute() const override;
-};
-
-} //namespace armnn
-
-
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.cpp b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
similarity index 82%
rename from src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.cpp
rename to src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
index 53ac3ba..142cbc2 100644
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.cpp
+++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
@@ -3,15 +3,18 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "ClDepthwiseConvolutionBaseWorkload.hpp"
+#include "ClDepthwiseConvolutionWorkload.hpp"
 
 #include "TypeUtils.hpp"
+#include "ClWorkloadUtils.hpp"
 
 #include <backends/aclCommon/ArmComputeUtils.hpp>
 #include <backends/aclCommon/ArmComputeTensorUtils.hpp>
 #include <backends/cl/ClTensorHandle.hpp>
 #include <backends/CpuTensorHandle.hpp>
 
+#include <arm_compute/runtime/CL/functions/CLDepthwiseConvolutionLayer.h>
+
 namespace armnn
 {
 
@@ -49,11 +52,10 @@
                                                               aclDepthMultiplier);
 }
 
-template<armnn::DataType... dataTypes>
-ClDepthwiseConvolutionBaseWorkload<dataTypes...>::ClDepthwiseConvolutionBaseWorkload(
+ClDepthwiseConvolutionWorkload::ClDepthwiseConvolutionWorkload(
     const DepthwiseConvolution2dQueueDescriptor& descriptor,
     const WorkloadInfo& info)
-    : TypedWorkload<DepthwiseConvolution2dQueueDescriptor, dataTypes...>(descriptor, info)
+    : BaseWorkload<DepthwiseConvolution2dQueueDescriptor>(descriptor, info)
 {
     auto& weightInfo = m_Data.m_Weight->GetTensorInfo();
 
@@ -74,8 +76,7 @@
                                              m_Data.m_Parameters.m_PadBottom,
                                              arm_compute::DimensionRoundingType::FLOOR);
 
-    std::string name = std::string("ClDepthwiseConvolution") +
-            GetDataTypeName(m_Data.m_Weight->GetTensorInfo().GetDataType()) + "Workload";
+    std::string name = std::string("ClDepthwiseConvolutionWorkload");
     m_Data.ValidateInputsOutputs(name, 1, 1);
 
     arm_compute::ICLTensor& input  = static_cast<IClTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
@@ -109,17 +110,30 @@
     }
 
     BOOST_ASSERT(m_DepthwiseConvolutionLayer);
+
+    InitializeArmComputeClTensorData(*m_KernelTensor, m_Data.m_Weight);
+
+    if (m_BiasTensor)
+    {
+        InitializeArmComputeClTensorData(*m_BiasTensor, m_Data.m_Bias);
+    }
+
+    m_DepthwiseConvolutionLayer->prepare();
+    FreeUnusedTensors();
 }
 
-template<armnn::DataType... dataTypes>
-void ClDepthwiseConvolutionBaseWorkload<dataTypes...>::FreeUnusedTensors()
+void ClDepthwiseConvolutionWorkload::FreeUnusedTensors()
 {
     FreeTensorIfUnused(m_KernelTensor);
     FreeTensorIfUnused(m_BiasTensor);
 }
 
-// Generate known implementations for linker
-template class ClDepthwiseConvolutionBaseWorkload<DataType::Float16, DataType::Float32>;
-template class ClDepthwiseConvolutionBaseWorkload<DataType::QuantisedAsymm8>;
+void ClDepthwiseConvolutionWorkload::Execute() const
+{
+    ARMNN_SCOPED_PROFILING_EVENT_CL("ClDepthwiseConvolutionWorkload_Execute");
+    BOOST_ASSERT(m_DepthwiseConvolutionLayer);
+
+    m_DepthwiseConvolutionLayer->run();
+}
 
 } // namespace armnn
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.hpp b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
similarity index 64%
rename from src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.hpp
rename to src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
index 27aec8e..cde9f50 100644
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionBaseWorkload.hpp
+++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
@@ -7,7 +7,9 @@
 
 #include <backends/Workload.hpp>
 
-#include <arm_compute/runtime/CL/CLFunctions.h>
+#include <arm_compute/runtime/IFunction.h>
+#include <arm_compute/core/Error.h>
+#include <arm_compute/runtime/CL/CLTensor.h>
 
 namespace armnn
 {
@@ -18,14 +20,15 @@
                                                            const TensorInfo& weights,
                                                            const Optional<TensorInfo>& biases);
 
-template<armnn::DataType... dataTypes>
-class ClDepthwiseConvolutionBaseWorkload : public TypedWorkload<DepthwiseConvolution2dQueueDescriptor, dataTypes...>
+class ClDepthwiseConvolutionWorkload : public BaseWorkload<DepthwiseConvolution2dQueueDescriptor>
 {
 public:
-    using TypedWorkload<DepthwiseConvolution2dQueueDescriptor, dataTypes...>::m_Data;
+    using BaseWorkload<DepthwiseConvolution2dQueueDescriptor>::m_Data;
 
-    ClDepthwiseConvolutionBaseWorkload(const DepthwiseConvolution2dQueueDescriptor& descriptor,
-                                       const WorkloadInfo& info);
+    ClDepthwiseConvolutionWorkload(const DepthwiseConvolution2dQueueDescriptor& descriptor,
+                                   const WorkloadInfo& info);
+
+    void Execute() const override;
 
 protected:
     std::unique_ptr<arm_compute::IFunction> m_DepthwiseConvolutionLayer;
diff --git a/src/backends/cl/workloads/ClWorkloads.hpp b/src/backends/cl/workloads/ClWorkloads.hpp
index 0ef8fd3..6574d43 100644
--- a/src/backends/cl/workloads/ClWorkloads.hpp
+++ b/src/backends/cl/workloads/ClWorkloads.hpp
@@ -13,8 +13,7 @@
 #include "ClConstantFloatWorkload.hpp"
 #include "ClConstantUint8Workload.hpp"
 #include "ClConvolution2dWorkload.hpp"
-#include "ClDepthwiseConvolutionFloatWorkload.hpp"
-#include "ClDepthwiseConvolutionUint8Workload.hpp"
+#include "ClDepthwiseConvolutionWorkload.hpp"
 #include "ClDivisionFloatWorkload.hpp"
 #include "ClFloorFloatWorkload.hpp"
 #include "ClFullyConnectedWorkload.hpp"
