Fix logical vts skip

 * Add Boolean support for Reshape
 * Use LogicalUnary factory and data type for LogicalNot

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I8e072fde200b7716556ae67f79616458cf98ff20
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
index b3feae6..d1933c9 100644
--- a/src/backends/reference/RefLayerSupport.cpp
+++ b/src/backends/reference/RefLayerSupport.cpp
@@ -807,13 +807,29 @@
         DataType::Signed32
     };
 
+    std::array<DataType, 1> logicalSupportedTypes =
+    {
+        DataType::Boolean
+    };
+
     bool supported = true;
 
-    supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported,
-                                  "Reference elementwise unary: input type not supported");
+    if (descriptor.m_Operation == UnaryOperation::LogicalNot)
+    {
+        supported &= CheckSupportRule(TypeAnyOf(input, logicalSupportedTypes), reasonIfUnsupported,
+                                      "Reference elementwise unary: input type not supported");
 
-    supported &= CheckSupportRule(TypeAnyOf(output, supportedTypes), reasonIfUnsupported,
-                                  "Reference elementwise unary: output type not supported");
+        supported &= CheckSupportRule(TypeAnyOf(output, logicalSupportedTypes), reasonIfUnsupported,
+                                      "Reference elementwise unary: output type not supported");
+    }
+    else
+    {
+        supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported,
+                                      "Reference elementwise unary: input type not supported");
+
+        supported &= CheckSupportRule(TypeAnyOf(output, supportedTypes), reasonIfUnsupported,
+                                      "Reference elementwise unary: output type not supported");
+    }
 
     supported &= CheckSupportRule(TypesAreEqual(input, output), reasonIfUnsupported,
                                   "Reference elementwise unary: input and output types not matching");
@@ -1720,7 +1736,7 @@
     IgnoreUnused(output);
     IgnoreUnused(descriptor);
     // Define supported output types.
-    std::array<DataType,7> supportedOutputTypes =
+    std::array<DataType,8> supportedOutputTypes =
     {
         DataType::BFloat16,
         DataType::Float32,
@@ -1728,7 +1744,8 @@
         DataType::Signed32,
         DataType::QAsymmS8,
         DataType::QAsymmU8,
-        DataType::QSymmS16
+        DataType::QSymmS16,
+        DataType::Boolean
     };
 
     return CheckSupportRule(TypeAnyOf(input, supportedOutputTypes), reasonIfUnsupported,