MLCE-1093 Reshape and concat invalid results

!android-nn-driver:10089

 * Disabled SubTensors on CL and Neon Backends.
 * Added Axis to ViewsDescriptor to store the value where ever possible.
 * Updated Splitter tests to provide all the information needed in the
   Descriptor.
 * Updated Serializer and Deserializer to handle axis.

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I6a22d4750e04003689495b5e9e3c33deb37162bd
diff --git a/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.cpp
index 9e3d83c..13483e5 100644
--- a/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/SplitterTestImpl.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2020,2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -199,11 +199,29 @@
 
     // Do the first split
     armnn::SplitterQueueDescriptor data;
+    data.m_Parameters = armnn::SplitterDescriptor(2, 3);
+
     armnn::WorkloadInfo info;
     AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
     AddOutputToWorkload(data, info, outputTensorInfo1, outputHandle1.get());
     AddOutputToWorkload(data, info, outputTensorInfo2, outputHandle2.get());
 
+    data.m_Parameters.SetViewSize(0, 0, outputChannels1);
+    data.m_Parameters.SetViewSize(0, 1, outputHeight1);
+    data.m_Parameters.SetViewSize(0, 2, outputWidth1);
+
+    data.m_Parameters.SetViewSize(1, 0, outputChannels2);
+    data.m_Parameters.SetViewSize(1, 1, outputHeight2);
+    data.m_Parameters.SetViewSize(1, 2, outputWidth2);
+
+    data.m_Parameters.SetViewOriginCoord(0, 0, 0);
+    data.m_Parameters.SetViewOriginCoord(0, 1, 0);
+    data.m_Parameters.SetViewOriginCoord(0, 2, 0);
+
+    data.m_Parameters.SetViewOriginCoord(1, 0, 1);
+    data.m_Parameters.SetViewOriginCoord(1, 1, 0);
+    data.m_Parameters.SetViewOriginCoord(1, 2, 0);
+
     data.m_ViewOrigins.push_back(window1);
     data.m_ViewOrigins.push_back(window2);
 
@@ -224,11 +242,29 @@
 
     // Do the second split.
     armnn::SplitterQueueDescriptor data2;
+    data2.m_Parameters = armnn::SplitterDescriptor(2, 3);
+
     armnn::WorkloadInfo info2;
     AddInputToWorkload(data2, info2, outputTensorInfo2, outputHandle2.get());
     AddOutputToWorkload(data2, info2, outputTensorInfo3, outputHandle3.get());
     AddOutputToWorkload(data2, info2, outputTensorInfo4, outputHandle4.get());
 
+    data2.m_Parameters.SetViewSize(0, 0, outputChannels1);
+    data2.m_Parameters.SetViewSize(0, 1, outputHeight1);
+    data2.m_Parameters.SetViewSize(0, 2, outputWidth1);
+
+    data2.m_Parameters.SetViewSize(1, 0, outputChannels2);
+    data2.m_Parameters.SetViewSize(1, 1, outputHeight2);
+    data2.m_Parameters.SetViewSize(1, 2, outputWidth1);
+
+    data2.m_Parameters.SetViewOriginCoord(0, 0, 0);
+    data2.m_Parameters.SetViewOriginCoord(0, 1, 0);
+    data2.m_Parameters.SetViewOriginCoord(0, 2, 0);
+
+    data2.m_Parameters.SetViewOriginCoord(1, 0, 1);
+    data2.m_Parameters.SetViewOriginCoord(1, 1, 0);
+    data2.m_Parameters.SetViewOriginCoord(1, 2, 0);
+
     data2.m_ViewOrigins.push_back(window3);
     data2.m_ViewOrigins.push_back(window4);
 
@@ -307,6 +343,17 @@
     AddInputToWorkload(data, info, tensorInfo, inputHandle.get());
     AddOutputToWorkload(data, info, tensorInfo, outputHandle.get());
 
+    data.m_Parameters = armnn::SplitterDescriptor(1, 3);
+    data.m_Parameters.SetAxis(0);
+
+    data.m_Parameters.SetViewSize(0, 0, 3);
+    data.m_Parameters.SetViewSize(0, 1, 6);
+    data.m_Parameters.SetViewSize(0, 2, 5);
+
+    data.m_Parameters.SetViewOriginCoord(0, 0, 0);
+    data.m_Parameters.SetViewOriginCoord(0, 1, 0);
+    data.m_Parameters.SetViewOriginCoord(0, 2, 0);
+
     data.m_ViewOrigins.push_back(window);
 
     std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::Splitter,