IVGCVSW-5612 Fix tiny_wav2letter_relu_fixed_int8 delegate output

 * fix delegate perchannel quantization
 * change delegate to check reshape options before inputs
 * Add int8 "qsymms8" option to ExecuteNetwork
 * Add option to run ExecuteNetwork on tflite w/o delegate


!referencetests:301301

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: If3e12599b17aff1199d7ab0a55e1c901e480083d
diff --git a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp
index 2afd941..d902d23 100644
--- a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp
+++ b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp
@@ -52,6 +52,16 @@
                                    [](const std::string& s) { return armnn::numeric_cast<uint8_t>(std::stoi(s)); });
 }
 
+
+template<>
+auto ParseDataArray<armnn::DataType::QSymmS8>(std::istream& stream)
+{
+    return ParseArrayImpl<int8_t>(stream,
+                                   [](const std::string& s) { return armnn::numeric_cast<int8_t>(std::stoi(s)); });
+}
+
+
+
 template<>
 auto ParseDataArray<armnn::DataType::QAsymmU8>(std::istream& stream,
                                                const float& quantizationScale,
@@ -130,6 +140,15 @@
     }
 }
 
+void TensorPrinter::operator()(const std::vector<int8_t>& values)
+{
+    ForEachValue(values, [](int8_t value)
+    {
+        printf("%d ", value);
+    });
+    WriteToFile(values);
+}
+
 void TensorPrinter::operator()(const std::vector<int>& values)
 {
     ForEachValue(values, [](int value)
@@ -170,7 +189,8 @@
     }
 }
 
-using TContainer         = mapbox::util::variant<std::vector<float>, std::vector<int>, std::vector<unsigned char>>;
+using TContainer  =
+        mapbox::util::variant<std::vector<float>, std::vector<int>, std::vector<unsigned char>, std::vector<int8_t>>;
 using QuantizationParams = std::pair<float, int32_t>;
 
 void PopulateTensorWithData(TContainer& tensorData,
@@ -212,6 +232,12 @@
                      ParseDataArray<armnn::DataType::Signed32>(inputTensorFile) :
                      GenerateDummyTensorData<armnn::DataType::Signed32>(numElements);
     }
+    else if (dataTypeStr.compare("qsymms8") == 0)
+    {
+        tensorData = readFromFile ?
+                     ParseDataArray<armnn::DataType::QSymmS8>(inputTensorFile) :
+                     GenerateDummyTensorData<armnn::DataType::QSymmS8>(numElements);
+    }
     else if (dataTypeStr.compare("qasymm8") == 0)
     {
         tensorData = readFromFile ?