IVGCVSW-3420 Add Serialization support for the new Stack layer

 * Adds serialization/deserialization support
 * Adds related unit test

Signed-off-by: Matthew Jackson <matthew.jackson@arm.com>
Change-Id: I69deb5397b8a06c679715e24971e9bb1c282140d
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 0a9e335..b59bac60 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -929,7 +929,21 @@
                                         const armnn::StackDescriptor& stackDescriptor,
                                         const char* name)
 {
-    throw UnimplementedException("SerializerVisitor::VisitStackLayer not yet implemented");
+    auto stackBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Stack);
+
+    std::vector<unsigned int> inputShape;
+    for (unsigned int i =0; i < stackDescriptor.m_InputShape.GetNumDimensions(); i++)
+    {
+        inputShape.push_back(stackDescriptor.m_InputShape[i]);
+    }
+
+    auto flatBufferStackDescriptor = CreateStackDescriptor(m_flatBufferBuilder,
+                                                           stackDescriptor.m_Axis,
+                                                           stackDescriptor.m_NumInputs,
+                                                           m_flatBufferBuilder.CreateVector(inputShape));
+
+    auto stackLayer = serializer::CreateStackLayer(m_flatBufferBuilder, stackBaseLayer, flatBufferStackDescriptor);
+    CreateAnyLayer(stackLayer.o, serializer::Layer::Layer_StackLayer);
 }
 
 void SerializerVisitor::VisitStridedSliceLayer(const armnn::IConnectableLayer* layer,