COMPMID-3604: Graph failures during tuning

Update ICLTuner interface to account for the new memory injection
interface.
Redirect to appropriate kernel execution interface depending on if the
kernel supports memory injection or not.

Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I8ce29f5c22f1865c9e688d12b65e68ee4486f99c
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3588
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/src/runtime/CL/CLScheduler.cpp b/src/runtime/CL/CLScheduler.cpp
index 56f5f21..5ef66f4 100644
--- a/src/runtime/CL/CLScheduler.cpp
+++ b/src/runtime/CL/CLScheduler.cpp
@@ -157,22 +157,16 @@
                              "The CLScheduler is not initialised yet! Please call the CLScheduler::get().default_init(), \
                              or CLScheduler::get()::init() and CLKernelLibrary::get()::init() function before running functions!");
 
+    const bool inject_memory = !inputs.empty();
+
     // Tune the kernel if the CLTuner has been provided
     if(_cl_tuner != nullptr)
     {
-        // Tune the OpenCL kernel
-        _cl_tuner->tune_kernel_dynamic(kernel);
+        inject_memory ? _cl_tuner->tune_kernel_dynamic(kernel, inputs, outputs) : _cl_tuner->tune_kernel_dynamic(kernel);
     }
 
     // Run kernel
-    if(inputs.empty())
-    {
-        kernel.run(kernel.window(), _queue);
-    }
-    else
-    {
-        kernel.run_op(inputs, outputs, kernel.window(), _queue);
-    }
+    inject_memory ? kernel.run_op(inputs, outputs, kernel.window(), _queue) : kernel.run(kernel.window(), _queue);
 
     if(flush)
     {