IVGCVSW-5987 Print Reduce Descriptor on dot graph

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I565a510de0dabdc25d518698174cd61d796239f4
diff --git a/include/armnn/TypesUtils.hpp b/include/armnn/TypesUtils.hpp
index 1012fcf..1e1926a 100644
--- a/include/armnn/TypesUtils.hpp
+++ b/include/armnn/TypesUtils.hpp
@@ -123,6 +123,17 @@
     }
 }
 
+constexpr char const* GetReduceOperationAsCString(ReduceOperation reduce_operation)
+{
+    switch (reduce_operation)
+    {
+        case ReduceOperation::Sum:  return "Sum";
+        case ReduceOperation::Max:  return "Max";
+        case ReduceOperation::Mean: return "Mean";
+        case ReduceOperation::Min:  return "Min";
+        default:                    return "Unknown";
+    }
+}
 constexpr unsigned int GetDataTypeSize(DataType dataType)
 {
     switch (dataType)
diff --git a/src/armnn/SerializeLayerParameters.cpp b/src/armnn/SerializeLayerParameters.cpp
index e4bf094..b298e14 100644
--- a/src/armnn/SerializeLayerParameters.cpp
+++ b/src/armnn/SerializeLayerParameters.cpp
@@ -135,6 +135,26 @@
     fn("DataLayout", GetDataLayoutName(desc.m_DataLayout));
 }
 
+void StringifyLayerParameters<ReduceDescriptor>::Serialize(ParameterStringifyFunction& fn, const ReduceDescriptor& desc)
+{
+    {
+        std::stringstream ss;
+        int count = 0;
+        for (auto&& var : desc.m_vAxis)
+        {
+            if (count > 0)
+            {
+                ss << ",";
+            }
+            ss << var;
+            ++count;
+        }
+        fn("Axis", ss.str());
+    }
+    fn("KeepDims", (desc.m_KeepDims ? "true" : "false"));
+    fn("ReduceOperation", GetReduceOperationAsCString(desc.m_ReduceOperation));
+}
+
 void StringifyLayerParameters<SoftmaxDescriptor>::Serialize(ParameterStringifyFunction& fn,
                                                             const SoftmaxDescriptor& desc)
 {
diff --git a/src/armnn/SerializeLayerParameters.hpp b/src/armnn/SerializeLayerParameters.hpp
index ae921c4..20228e3 100644
--- a/src/armnn/SerializeLayerParameters.hpp
+++ b/src/armnn/SerializeLayerParameters.hpp
@@ -60,6 +60,11 @@
     static void Serialize(ParameterStringifyFunction& fn, const Pooling2dDescriptor& desc);
 };
 
+template <> struct StringifyLayerParameters<ReduceDescriptor>
+{
+    static void Serialize(ParameterStringifyFunction& fn, const ReduceDescriptor& desc);
+};
+
 template <> struct StringifyLayerParameters<SoftmaxDescriptor>
 {
     static void Serialize(ParameterStringifyFunction& fn, const SoftmaxDescriptor& desc);