IVGCVSW-4624 Add a RANK Reference Implementation

 * Add Rank front end
 * Add Rank reference implementation
 * Add Rank serialization support
 * Add Scalar serialization support

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I06e4a468c2a84e79bae2e6c5348596bbbf853b4b
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
index 696c6d9..877d200 100644
--- a/src/backends/reference/RefLayerSupport.cpp
+++ b/src/backends/reference/RefLayerSupport.cpp
@@ -1651,6 +1651,21 @@
     return supported;
 }
 
+bool RefLayerSupport::IsRankSupported(const TensorInfo& input,
+                                      const TensorInfo& output,
+                                      Optional<std::string&> reasonIfUnsupported) const
+{
+    IgnoreUnused(input);
+    // Define supported output types.
+    std::array<DataType,1> supportedOutputTypes =
+    {
+        DataType::Signed32,
+    };
+
+    return CheckSupportRule(TypeAnyOf(output, supportedOutputTypes), reasonIfUnsupported,
+           "Reference rank: input type not supported.");
+}
+
 bool RefLayerSupport::IsReshapeSupported(const TensorInfo& input,
                                          const TensorInfo& output,
                                          const ReshapeDescriptor& descriptor,