IVGCVSW-4115 Fix for armnn-driver-tests Capabilities failure

* Add TensorQuant8SymmPerChannel to ArmnnDriverImpl::getCapabilities_1_2
* Add TensorQuant8Symm and TensorQuant8SymmPerChannel to Capabilities
  supported operands tests

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: Ifbc742c5562f243172d2f4e6a2f6a8f3b6a405ea
diff --git a/1.2/ArmnnDriverImpl.cpp b/1.2/ArmnnDriverImpl.cpp
index 7309c2a..6ea9bc4 100644
--- a/1.2/ArmnnDriverImpl.cpp
+++ b/1.2/ArmnnDriverImpl.cpp
@@ -43,6 +43,11 @@
 const char *g_OperandTypeTensorQuant8SymmPerformancePowerUsage =
         "Armnn.operandTypeTensorQuant8SymmPerformance.powerUsage";
 
+const char *g_OperandTypeTensorQuant8SymmPerChannelPerformanceExecTime =
+    "Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.execTime";
+const char *g_OperandTypeTensorQuant8SymmPerChannelPerformancePowerUsage =
+    "Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.powerUsage";
+
 
 const char *g_OperandTypeTensorInt32PerformanceExecTime     = "Armnn.operandTypeTensorInt32Performance.execTime";
 const char *g_OperandTypeTensorInt32PerformancePowerUsage   = "Armnn.operandTypeTensorInt32Performance.powerUsage";
@@ -274,6 +279,14 @@
                     .powerUsage = ParseSystemProperty(g_OperandTypeTensorQuant16SymmPerformancePowerUsage, defaultValue)
                 });
 
+        update(&capabilities.operandPerformance, OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL,
+               {
+                   .execTime =
+                   ParseSystemProperty(g_OperandTypeTensorQuant8SymmPerChannelPerformanceExecTime, defaultValue),
+                   .powerUsage =
+                   ParseSystemProperty(g_OperandTypeTensorQuant8SymmPerChannelPerformancePowerUsage, defaultValue)
+               });
+
         update(&capabilities.operandPerformance, OperandType::TENSOR_INT32,
                 {
                     .execTime = ParseSystemProperty(g_OperandTypeTensorInt32PerformanceExecTime, defaultValue),
diff --git a/test/1.2/Capabilities.cpp b/test/1.2/Capabilities.cpp
index 4424f9b..8a769db 100644
--- a/test/1.2/Capabilities.cpp
+++ b/test/1.2/Capabilities.cpp
@@ -50,6 +50,10 @@
         __system_property_set("Armnn.operandTypeTensorInt32Performance.powerUsage", nullStr);
         __system_property_set("Armnn.operandTypeInt32Performance.execTime", nullStr);
         __system_property_set("Armnn.operandTypeInt32Performance.powerUsage", nullStr);
+        __system_property_set("Armnn.operandTypeTensorQuant8SymmPerformance.execTime", nullStr);
+        __system_property_set("Armnn.operandTypeTensorQuant8SymmPerformance.powerUsage", nullStr);
+        __system_property_set("Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.execTime", nullStr);
+        __system_property_set("Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.powerUsage", nullStr);
     }
 };
 
@@ -77,14 +81,14 @@
             CheckOperandType(capabilities, OperandType::TENSOR_QUANT16_SYMM, 3.0f, 3.1f);
             CheckOperandType(capabilities, OperandType::TENSOR_INT32, 3.2f, 3.3f);
             CheckOperandType(capabilities, OperandType::INT32, 3.4f, 3.5f);
+            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM, 2.8f, 2.9f);
+            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL, 2.8f, 2.9f);
 
             // Unsupported operands take FLT_MAX value
             CheckOperandType(capabilities, OperandType::UINT32, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::BOOL, FLT_MAX, FLT_MAX);
-            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_QUANT16_ASYMM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_BOOL8, FLT_MAX, FLT_MAX);
-            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::OEM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_OEM_BYTE, FLT_MAX, FLT_MAX);
 
@@ -107,6 +111,10 @@
     __system_property_set("Armnn.operandTypeTensorInt32Performance.powerUsage", "3.3f");
     __system_property_set("Armnn.operandTypeInt32Performance.execTime", "3.4f");
     __system_property_set("Armnn.operandTypeInt32Performance.powerUsage", "3.5f");
+    __system_property_set("Armnn.operandTypeTensorQuant8SymmPerformance.execTime", "2.8f");
+    __system_property_set("Armnn.operandTypeTensorQuant8SymmPerformance.powerUsage", "2.9f");
+    __system_property_set("Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.execTime", "2.8f");
+    __system_property_set("Armnn.operandTypeTensorQuant8SymmPerChannelPerformance.powerUsage", "2.9f");
 
     armnn::IRuntime::CreationOptions options;
     armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
@@ -131,14 +139,14 @@
             CheckOperandType(capabilities, OperandType::TENSOR_QUANT16_SYMM, defaultValue, defaultValue);
             CheckOperandType(capabilities, OperandType::TENSOR_INT32, defaultValue, defaultValue);
             CheckOperandType(capabilities, OperandType::INT32, defaultValue, defaultValue);
+            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL, defaultValue, defaultValue);
+            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM, defaultValue, defaultValue);
 
             // Unsupported operands take FLT_MAX value
             CheckOperandType(capabilities, OperandType::UINT32, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::BOOL, FLT_MAX, FLT_MAX);
-            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_QUANT16_ASYMM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_BOOL8, FLT_MAX, FLT_MAX);
-            CheckOperandType(capabilities, OperandType::TENSOR_QUANT8_SYMM_PER_CHANNEL, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::OEM, FLT_MAX, FLT_MAX);
             CheckOperandType(capabilities, OperandType::TENSOR_OEM_BYTE, FLT_MAX, FLT_MAX);