MLCE-510 Add CpuRef Shape Operator to ArmNN

 * Add front end
 * Add reference workload
 * Serialization/Deserialization
 * Add unit tests
 * Update ArmNN Versioning

Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I6fcb1fa341d6f08dea4003b13544e6e9f53fefd3
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 30a7e74..fd7f8dc 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -1309,6 +1309,17 @@
     CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_NormalizationLayer);
 }
 
+void SerializerStrategy::SerializeShapeLayer(const armnn::IConnectableLayer* layer,
+                                             const char* name)
+{
+    IgnoreUnused(name);
+
+    auto shapeBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Shape);
+    auto shapeLayer = serializer::CreateShapeLayer(m_flatBufferBuilder, shapeBaseLayer);
+
+    CreateAnyLayer(shapeLayer.o, serializer::Layer::Layer_ShapeLayer);
+}
+
 void SerializerStrategy::SerializeStackLayer(const armnn::IConnectableLayer* layer,
                                         const armnn::StackDescriptor& stackDescriptor,
                                         const char* name)
@@ -2138,6 +2149,11 @@
             SerializeResizeLayer(layer, layerDescriptor, name);
             break;
         }
+        case armnn::LayerType::Shape:
+        {
+            SerializeShapeLayer(layer, name);
+            break;
+        }
         case armnn::LayerType::Slice:
         {
             const armnn::SliceDescriptor& layerDescriptor =