diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp
index 0b7e539..bf17382 100644
--- a/src/backends/cl/ClWorkloadFactory.cpp
+++ b/src/backends/cl/ClWorkloadFactory.cpp
@@ -113,7 +113,7 @@
 std::unique_ptr<IWorkload> ClWorkloadFactory::CreateSplitter(const SplitterQueueDescriptor& descriptor,
                                                              const WorkloadInfo&            info) const
 {
-    return MakeWorkload<ClSplitterFloatWorkload, ClSplitterUint8Workload>(descriptor, info);
+    return std::make_unique<ClSplitterWorkload>(descriptor, info);
 }
 
 std::unique_ptr<armnn::IWorkload> ClWorkloadFactory::CreateMerger(const MergerQueueDescriptor& descriptor,
diff --git a/src/backends/cl/backend.mk b/src/backends/cl/backend.mk
index f54a8de..057089e 100644
--- a/src/backends/cl/backend.mk
+++ b/src/backends/cl/backend.mk
@@ -46,6 +46,4 @@
         workloads/ClSoftmaxBaseWorkload.cpp \
         workloads/ClSoftmaxFloatWorkload.cpp \
         workloads/ClSoftmaxUint8Workload.cpp \
-        workloads/ClSplitterFloatWorkload.cpp \
-        workloads/ClSplitterUint8Workload.cpp \
         workloads/ClSubtractionWorkload.cpp
diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt
index 959d3e2..9c48dc9 100644
--- a/src/backends/cl/workloads/CMakeLists.txt
+++ b/src/backends/cl/workloads/CMakeLists.txt
@@ -13,7 +13,6 @@
     ClBaseConstantWorkload.cpp
     ClBaseConstantWorkload.hpp
     ClBaseMergerWorkload.hpp
-    ClBaseSplitterWorkload.hpp
     ClBatchNormalizationFloatWorkload.cpp
     ClBatchNormalizationFloatWorkload.hpp
     ClConstantFloatWorkload.cpp
@@ -76,10 +75,7 @@
     ClSoftmaxFloatWorkload.hpp
     ClSoftmaxUint8Workload.cpp
     ClSoftmaxUint8Workload.hpp
-    ClSplitterFloatWorkload.cpp
-    ClSplitterFloatWorkload.hpp
-    ClSplitterUint8Workload.cpp
-    ClSplitterUint8Workload.hpp
+    ClSplitterWorkload.hpp
     ClSubtractionWorkload.cpp
     ClSubtractionWorkload.hpp
     ClWorkloads.hpp
diff --git a/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp b/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp
deleted file mode 100644
index 7fdcc84..0000000
--- a/src/backends/cl/workloads/ClBaseSplitterWorkload.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <backends/Workload.hpp>
-
-#include <arm_compute/runtime/CL/CLFunctions.h>
-
-namespace armnn
-{
-
-// Base class template providing an implementation of the Splitter layer common to all data types.
-template <armnn::DataType... DataTypes>
-class ClBaseSplitterWorkload : public TypedWorkload<SplitterQueueDescriptor, DataTypes...>
-{
-public:
-    using TypedWorkload<SplitterQueueDescriptor, DataTypes...>::TypedWorkload;
-
-    void Execute() const override
-    {
-        // With subtensors, merger is a no-op.
-    }
-};
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp b/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp
deleted file mode 100644
index 5fd634b..0000000
--- a/src/backends/cl/workloads/ClSplitterFloatWorkload.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClSplitterFloatWorkload.hpp"
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-void ClSplitterFloatWorkload::Execute() const
-{
-    ARMNN_SCOPED_PROFILING_EVENT_CL("ClSplitterFloatWorkload_Execute");
-    ClBaseSplitterWorkload::Execute();
-}
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp b/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp
deleted file mode 100644
index a0b5846..0000000
--- a/src/backends/cl/workloads/ClSplitterFloatWorkload.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClBaseSplitterWorkload.hpp"
-
-namespace armnn
-{
-
-class ClSplitterFloatWorkload : public ClBaseSplitterWorkload<DataType::Float16, DataType::Float32>
-{
-public:
-    using ClBaseSplitterWorkload<DataType::Float16, DataType::Float32>::ClBaseSplitterWorkload;
-    virtual void Execute() const override;
-};
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterUint8Workload.cpp b/src/backends/cl/workloads/ClSplitterUint8Workload.cpp
deleted file mode 100644
index 50a251a..0000000
--- a/src/backends/cl/workloads/ClSplitterUint8Workload.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#include "ClSplitterUint8Workload.hpp"
-
-#include "ClWorkloadUtils.hpp"
-
-namespace armnn
-{
-
-void ClSplitterUint8Workload::Execute() const
-{
-    ARMNN_SCOPED_PROFILING_EVENT_CL("ClSplitterUint8Workload_Execute");
-    ClBaseSplitterWorkload::Execute();
-}
-
-} //namespace armnn
diff --git a/src/backends/cl/workloads/ClSplitterUint8Workload.hpp b/src/backends/cl/workloads/ClSplitterUint8Workload.hpp
deleted file mode 100644
index 19e8be5..0000000
--- a/src/backends/cl/workloads/ClSplitterUint8Workload.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include "ClBaseSplitterWorkload.hpp"
-
-namespace armnn
-{
-class ClSplitterUint8Workload : public ClBaseSplitterWorkload<DataType::QuantisedAsymm8>
-{
-public:
-    using ClBaseSplitterWorkload<DataType::QuantisedAsymm8>::ClBaseSplitterWorkload;
-    virtual void Execute() const override;
-};
-} //namespace armnn
-
-
-
diff --git a/src/backends/cl/workloads/ClSplitterWorkload.hpp b/src/backends/cl/workloads/ClSplitterWorkload.hpp
new file mode 100644
index 0000000..ffc02c0
--- /dev/null
+++ b/src/backends/cl/workloads/ClSplitterWorkload.hpp
@@ -0,0 +1,25 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <backends/Workload.hpp>
+
+namespace armnn
+{
+
+// Base class template providing an implementation of the Splitter layer common to all data types.
+class ClSplitterWorkload : public BaseWorkload<SplitterQueueDescriptor>
+{
+public:
+    using BaseWorkload<SplitterQueueDescriptor>::BaseWorkload;
+
+    void Execute() const override
+    {
+        // With subtensors, splitter is a no-op.
+    }
+};
+
+} //namespace armnn
diff --git a/src/backends/cl/workloads/ClWorkloads.hpp b/src/backends/cl/workloads/ClWorkloads.hpp
index c0625f6..439ad2d 100644
--- a/src/backends/cl/workloads/ClWorkloads.hpp
+++ b/src/backends/cl/workloads/ClWorkloads.hpp
@@ -34,8 +34,7 @@
 #include "ClResizeBilinearFloatWorkload.hpp"
 #include "ClSoftmaxFloatWorkload.hpp"
 #include "ClSoftmaxUint8Workload.hpp"
-#include "ClSplitterFloatWorkload.hpp"
-#include "ClSplitterUint8Workload.hpp"
+#include "ClSplitterWorkload.hpp"
 #include "ClSubtractionWorkload.hpp"
 #include "ClConvertFp16ToFp32Workload.hpp"
 #include "ClConvertFp32ToFp16Workload.hpp"
diff --git a/src/backends/test/CreateWorkloadCl.cpp b/src/backends/test/CreateWorkloadCl.cpp
index 9b68546..8599920 100644
--- a/src/backends/test/CreateWorkloadCl.cpp
+++ b/src/backends/test/CreateWorkloadCl.cpp
@@ -399,13 +399,13 @@
     ClSoftmaxWorkloadTest<ClSoftmaxFloatWorkload, armnn::DataType::Float16>();
 }
 
-template <typename SplitterWorkloadType, typename armnn::DataType DataType>
+template <typename armnn::DataType DataType>
 static void ClSplitterWorkloadTest()
 {
     Graph graph;
     ClWorkloadFactory factory;
 
-    auto workload = CreateSplitterWorkloadTest<SplitterWorkloadType, DataType>(factory, graph);
+    auto workload = CreateSplitterWorkloadTest<ClSplitterWorkload, DataType>(factory, graph);
 
     // Checks that outputs are as we expect them (see definition of CreateSplitterWorkloadTest).
     SplitterQueueDescriptor queueDescriptor = workload->GetData();
@@ -426,15 +426,15 @@
 
 BOOST_AUTO_TEST_CASE(CreateSplitterFloatWorkload)
 {
-    ClSplitterWorkloadTest<ClSplitterFloatWorkload, armnn::DataType::Float32>();
+    ClSplitterWorkloadTest<armnn::DataType::Float32>();
 }
 
 BOOST_AUTO_TEST_CASE(CreateSplitterFloat16Workload)
 {
-    ClSplitterWorkloadTest<ClSplitterFloatWorkload, armnn::DataType::Float16>();
+    ClSplitterWorkloadTest<armnn::DataType::Float16>();
 }
 
-template <typename SplitterWorkloadType, typename MergerWorkloadType, typename armnn::DataType DataType>
+template <typename MergerWorkloadType, typename armnn::DataType DataType>
 static void ClSplitterMergerTest()
 {
     // Tests that it is possible to decide which output of the splitter layer
@@ -447,7 +447,7 @@
     ClWorkloadFactory factory;
 
     auto workloads =
-        CreateSplitterMergerWorkloadTest<SplitterWorkloadType, MergerWorkloadType, DataType>
+        CreateSplitterMergerWorkloadTest<ClSplitterWorkload, MergerWorkloadType, DataType>
             (factory, graph);
 
     auto wlSplitter = std::move(workloads.first);
@@ -478,12 +478,12 @@
 
 BOOST_AUTO_TEST_CASE(CreateSplitterMergerFloatWorkload)
 {
-    ClSplitterMergerTest<ClSplitterFloatWorkload, ClMergerFloatWorkload, armnn::DataType::Float32>();
+    ClSplitterMergerTest<ClMergerFloatWorkload, armnn::DataType::Float32>();
 }
 
 BOOST_AUTO_TEST_CASE(CreateSplitterMergerFloat16Workload)
 {
-    ClSplitterMergerTest<ClSplitterFloatWorkload, ClMergerFloatWorkload, armnn::DataType::Float16>();
+    ClSplitterMergerTest<ClMergerFloatWorkload, armnn::DataType::Float16>();
 }
 
 
@@ -494,13 +494,13 @@
 
     Graph graph;
     ClWorkloadFactory factory;
-    std::unique_ptr<ClSplitterFloatWorkload> wlSplitter;
+    std::unique_ptr<ClSplitterWorkload> wlSplitter;
     std::unique_ptr<ClActivationFloatWorkload> wlActiv0_0;
     std::unique_ptr<ClActivationFloatWorkload> wlActiv0_1;
     std::unique_ptr<ClActivationFloatWorkload> wlActiv1_0;
     std::unique_ptr<ClActivationFloatWorkload> wlActiv1_1;
 
-    CreateSplitterMultipleInputsOneOutputWorkloadTest<ClSplitterFloatWorkload,
+    CreateSplitterMultipleInputsOneOutputWorkloadTest<ClSplitterWorkload,
         ClActivationFloatWorkload, armnn::DataType::Float32>(factory, graph, wlSplitter, wlActiv0_0, wlActiv0_1,
                                                                wlActiv1_0, wlActiv1_1);
 
