IVGCVSW-5317 'Add enable_fast_math Option to ExecuteNetwork'

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I4eb3e27837aea926593d49f9ccea07bab8388d5b
diff --git a/tests/ExecuteNetwork/ExecuteNetwork.cpp b/tests/ExecuteNetwork/ExecuteNetwork.cpp
index f2763a7..5924348 100644
--- a/tests/ExecuteNetwork/ExecuteNetwork.cpp
+++ b/tests/ExecuteNetwork/ExecuteNetwork.cpp
@@ -137,7 +137,9 @@
                 "Add unsupported operators as stand-in layers (where supported by parser)")
             ("infer-output-shape", po::bool_switch()->default_value(false),
                 "Infers output tensor shape from input tensor shape and validate where applicable (where supported by "
-                "parser)");
+                "parser)")
+            ("enable_fast_math", po::bool_switch()->default_value(false),
+             "Enable fast_math computation of Convolution2D operator where applicable (where supported by backend)");
     }
     catch (const std::exception& e)
     {
@@ -187,6 +189,7 @@
     bool parseUnsupported = vm["parse-unsupported"].as<bool>();
     bool timelineEnabled = vm["timeline-profiling"].as<bool>();
     bool inferOutputShape = vm["infer-output-shape"].as<bool>();
+    bool enableFastMath = vm["enable_fast_math"].as<bool>();
 
     if (enableBf16TurboMode && enableFp16TurboMode)
     {
@@ -250,7 +253,7 @@
                 results.push_back(std::async(std::launch::async, RunCsvTest, std::cref(testCase), std::cref(runtime),
                                              enableProfiling, enableFp16TurboMode, enableBf16TurboMode, thresholdTime,
                                              printIntermediate, enableLayerDetails, parseUnsupported,
-                                             inferOutputShape));
+                                             inferOutputShape, enableFastMath));
             }
 
             // Check results
@@ -270,7 +273,7 @@
                 testCase.values.insert(testCase.values.begin(), executableName);
                 if (RunCsvTest(testCase, runtime, enableProfiling,
                                enableFp16TurboMode, enableBf16TurboMode, thresholdTime, printIntermediate,
-                               enableLayerDetails, parseUnsupported, inferOutputShape) != EXIT_SUCCESS)
+                               enableLayerDetails, parseUnsupported, inferOutputShape, enableFastMath) != EXIT_SUCCESS)
                 {
                     return EXIT_FAILURE;
                 }
@@ -303,7 +306,7 @@
                     dynamicBackendsPath, modelPath, inputNames, inputTensorDataFilePaths, inputTypes, quantizeInput,
                     outputTypes, outputNames, outputTensorFiles, dequantizeOutput, enableProfiling,
                     enableFp16TurboMode, enableBf16TurboMode, thresholdTime, printIntermediate, subgraphId,
-                    enableLayerDetails, parseUnsupported, inferOutputShape);
+                    enableLayerDetails, parseUnsupported, inferOutputShape, enableFastMath);
             }
             ARMNN_LOG(info) << "Using tuning params: " << tuningPath << "\n";
             options.m_BackendOptions.emplace_back(
@@ -336,6 +339,6 @@
             inputNames, inputTensorDataFilePaths, inputTypes, quantizeInput, outputTypes, outputNames,
             outputTensorFiles, dequantizeOutput, enableProfiling, enableFp16TurboMode, enableBf16TurboMode,
             thresholdTime, printIntermediate, subgraphId, enableLayerDetails, parseUnsupported, inferOutputShape,
-            iterations, runtime);
+            enableFastMath, iterations, runtime);
     }
 }