IVGCVSW-1951 Remove type templating from ClSplitterWorkload

Change-Id: Ib289ed5885e0e22ce6d73d7b3b3b103691187a34
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);