COMPMID-2856 Add PrintLayer at graph level

Signed-off-by: Giorgio Arena <giorgio.arena@arm.com>
Change-Id: I8f02bb67adae8cc7d884f2417cc9c408985f0d5a
Reviewed-on: https://review.mlplatform.org/c/2546
Reviewed-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
diff --git a/src/graph/Workload.cpp b/src/graph/Workload.cpp
index d8046c3..0d2a405 100644
--- a/src/graph/Workload.cpp
+++ b/src/graph/Workload.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2020 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -25,6 +25,7 @@
 
 #include "arm_compute/graph/INode.h"
 #include "arm_compute/graph/ITensorHandle.h"
+#include "arm_compute/graph/nodes/PrintLayerNode.h"
 
 namespace arm_compute
 {
@@ -41,6 +42,20 @@
     {
         task.task->run();
     }
+#ifdef ARM_COMPUTE_ASSERTS_ENABLED
+    // COMPMID-3012 - Hide the printing logic from the execute_task method in the graph API
+    else if(task.node->type() == NodeType::PrintLayer)
+    {
+        auto print_node   = dynamic_cast<PrintLayerNode *>(task.node);
+        auto input_handle = print_node->input(0)->handle();
+        auto transform    = print_node->transform();
+
+        input_handle->map(true);
+        ITensor *input = transform ? transform(&input_handle->tensor()) : &input_handle->tensor();
+        input->print(print_node->stream(), print_node->format_info());
+        input_handle->unmap();
+    }
+#endif // ARM_COMPUTE_ASSERTS_ENABLED
 }
 
 void ExecutionTask::prepare()