IVGCVSW-5636 'Implement NNAPI caching functions'

* Serialize/Deserialize axis parameter on Softmax Descriptor.

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I1bba0dd7d78f9f211f77115dcefccf24a4a61b39
diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp
index bfd4f6b..8b1e9b9 100644
--- a/src/armnnDeserializer/Deserializer.cpp
+++ b/src/armnnDeserializer/Deserializer.cpp
@@ -1652,7 +1652,8 @@
     CHECK_VALID_SIZE(outputs.size(), 1);
 
     auto layerName = GetLayerName(graph, layerIndex);
-    armnn::FillDescriptor descriptor(1.0f);
+    armnn::FillDescriptor descriptor;
+    descriptor.m_Value = graph->layers()->Get(layerIndex)->layer_as_FillLayer()->descriptor()->value();
     IConnectableLayer* layer = m_Network->AddFillLayer(descriptor, layerName.c_str());
 
     armnn::TensorInfo outputTensorInfo = ToTensorInfo(outputs[0]);
@@ -2484,6 +2485,7 @@
 
     armnn::SoftmaxDescriptor descriptor;
     descriptor.m_Beta = graph->layers()->Get(layerIndex)->layer_as_SoftmaxLayer()->descriptor()->beta();
+    descriptor.m_Axis = graph->layers()->Get(layerIndex)->layer_as_SoftmaxLayer()->descriptor()->axis();
     auto layerName = GetLayerName(graph, layerIndex);
 
     IConnectableLayer* layer = m_Network->AddSoftmaxLayer(descriptor, layerName.c_str());
diff --git a/src/armnnSerializer/ArmnnSchema.fbs b/src/armnnSerializer/ArmnnSchema.fbs
index 40de349..362dd5c 100644
--- a/src/armnnSerializer/ArmnnSchema.fbs
+++ b/src/armnnSerializer/ArmnnSchema.fbs
@@ -495,6 +495,7 @@
 
 table SoftmaxDescriptor {
     beta:float;
+    axis:int = -1;
 }
 
 table DepthwiseConvolution2dLayer {
diff --git a/src/armnnSerializer/ArmnnSchema_generated.h b/src/armnnSerializer/ArmnnSchema_generated.h
index 7747f9e..b66bac6 100644
--- a/src/armnnSerializer/ArmnnSchema_generated.h
+++ b/src/armnnSerializer/ArmnnSchema_generated.h
@@ -5126,14 +5126,19 @@
 struct SoftmaxDescriptor FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   typedef SoftmaxDescriptorBuilder Builder;
   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
-    VT_BETA = 4
+    VT_BETA = 4,
+    VT_AXIS = 6
   };
   float beta() const {
     return GetField<float>(VT_BETA, 0.0f);
   }
+  int32_t axis() const {
+    return GetField<int32_t>(VT_AXIS, -1);
+  }
   bool Verify(flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
            VerifyField<float>(verifier, VT_BETA) &&
+           VerifyField<int32_t>(verifier, VT_AXIS) &&
            verifier.EndTable();
   }
 };
@@ -5145,6 +5150,9 @@
   void add_beta(float beta) {
     fbb_.AddElement<float>(SoftmaxDescriptor::VT_BETA, beta, 0.0f);
   }
+  void add_axis(int32_t axis) {
+    fbb_.AddElement<int32_t>(SoftmaxDescriptor::VT_AXIS, axis, -1);
+  }
   explicit SoftmaxDescriptorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
         : fbb_(_fbb) {
     start_ = fbb_.StartTable();
@@ -5159,8 +5167,10 @@
 
 inline flatbuffers::Offset<SoftmaxDescriptor> CreateSoftmaxDescriptor(
     flatbuffers::FlatBufferBuilder &_fbb,
-    float beta = 0.0f) {
+    float beta = 0.0f,
+    int32_t axis = -1) {
   SoftmaxDescriptorBuilder builder_(_fbb);
+  builder_.add_axis(axis);
   builder_.add_beta(beta);
   return builder_.Finish();
 }
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index c087843..a9f7b7d 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -1037,7 +1037,9 @@
 
     // Create the FlatBuffer SoftmaxDescriptor
     auto flatBufferSoftmaxDesc =
-        serializer::CreateSoftmaxDescriptor(m_flatBufferBuilder, softmaxDescriptor.m_Beta);
+        serializer::CreateSoftmaxDescriptor(m_flatBufferBuilder,
+                                            softmaxDescriptor.m_Beta,
+                                            softmaxDescriptor.m_Axis);
 
     // Create the FlatBuffer SoftmaxLayer
     auto flatBufferSoftmaxLayer =