MLCE-754 'Improve operator support error/warning from Arm NN Delegate'

* Improved error reporting on armnn_delegate

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I1bd131fb56d64b32b1fafad0465256178720226c
diff --git a/delegate/src/Activation.hpp b/delegate/src/Activation.hpp
index 5f14e2c..5ac92f8 100644
--- a/delegate/src/Activation.hpp
+++ b/delegate/src/Activation.hpp
@@ -24,7 +24,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("ACTIVATION",
                                    tfLiteContext,
                                    IsActivationSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/ArgMinMax.hpp b/delegate/src/ArgMinMax.hpp
index 54994df..0b0b13d 100644
--- a/delegate/src/ArgMinMax.hpp
+++ b/delegate/src/ArgMinMax.hpp
@@ -93,7 +93,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("ARGMINMAX",
                                    tfLiteContext,
                                    IsArgMinMaxSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/BatchSpace.hpp b/delegate/src/BatchSpace.hpp
index 318806f..5f8d5cc 100644
--- a/delegate/src/BatchSpace.hpp
+++ b/delegate/src/BatchSpace.hpp
@@ -74,7 +74,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("BATCH_TO_SPACE_ND",
                                    tfLiteContext,
                                    IsBatchToSpaceNdSupported,
                                    delegateData.m_Backends,
@@ -165,7 +165,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SPACE_TO_BATCH_ND",
                                    tfLiteContext,
                                    IsSpaceToBatchNdSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Comparison.hpp b/delegate/src/Comparison.hpp
index 2e6a7db..ce12e9f 100644
--- a/delegate/src/Comparison.hpp
+++ b/delegate/src/Comparison.hpp
@@ -91,7 +91,7 @@
 
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("COMPARISON",
                                    tfLiteContext,
                                    IsComparisonSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Control.hpp b/delegate/src/Control.hpp
index f20b9f0..7e02de1 100644
--- a/delegate/src/Control.hpp
+++ b/delegate/src/Control.hpp
@@ -121,7 +121,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("CONCATENATION",
                                    tfLiteContext,
                                    IsConcatSupported,
                                    delegateData.m_Backends,
@@ -260,7 +260,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("MEAN",
                                    tfLiteContext,
                                    IsMeanSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Convolution.hpp b/delegate/src/Convolution.hpp
index a7d6c1d..1b5ed40 100644
--- a/delegate/src/Convolution.hpp
+++ b/delegate/src/Convolution.hpp
@@ -147,7 +147,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("CONV2D",
                                    tfLiteContext,
                                    IsConvolution2dSupported,
                                    delegateData.m_Backends,
@@ -300,7 +300,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("CONV3D",
                                    tfLiteContext,
                                    IsConvolution3dSupported,
                                    delegateData.m_Backends,
@@ -500,7 +500,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("DEPTHWISE_CONV2D",
                                    tfLiteContext,
                                    IsDepthwiseConvolutionSupported,
                                    delegateData.m_Backends,
@@ -695,7 +695,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("TRANSPOSE_CONV2D",
                                    tfLiteContext,
                                    IsTransposeConvolution2dSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/DelegateUtils.hpp b/delegate/src/DelegateUtils.hpp
index 678a3db..e0ba1cf 100644
--- a/delegate/src/DelegateUtils.hpp
+++ b/delegate/src/DelegateUtils.hpp
@@ -25,7 +25,7 @@
 {
 
 // Macro to call an Is<layer_name>Supported function and log caller name together with reason for lack of support
-#define FORWARD_LAYER_SUPPORT_FUNC(funcName, tfLiteContext, func, backends, supported, ...) \
+#define FORWARD_LAYER_SUPPORT_FUNC(opName, tfLiteContext, func, backends, supported, ...) \
 try \
 { \
     for (auto&& backendId : backends) \
@@ -45,23 +45,23 @@
                 if (reasonIfUnsupported.size() > 0) \
                 { \
                     TFLITE_LOG_PROD(tflite::TFLITE_LOG_WARNING, \
-                                    "%s: not supported by armnn: %s", funcName, reasonIfUnsupported.c_str()); \
+                                    "%s: not supported by armnn: %s", opName, reasonIfUnsupported.c_str()); \
                 } \
                 else \
                 { \
                     TFLITE_LOG_PROD(tflite::TFLITE_LOG_WARNING, \
-                                    "%s: not supported by armnn", funcName); \
+                                    "%s: not supported by armnn", opName); \
                 } \
             } \
         } \
         else \
         { \
-            TF_LITE_KERNEL_LOG(tfLiteContext, "%s: backend not registered: %s", funcName, backendId.Get().c_str()); \
+            TF_LITE_KERNEL_LOG(tfLiteContext, "%s: backend not registered: %s", opName, backendId.Get().c_str()); \
         } \
     } \
     if (!supported) \
     { \
-        TF_LITE_KERNEL_LOG(tfLiteContext, "%s: not supported by any specified backend", funcName); \
+        TF_LITE_KERNEL_LOG(tfLiteContext, "%s: not supported by any specified backend", opName); \
     } \
 } \
 catch (const armnn::InvalidArgumentException &e) \
@@ -224,7 +224,7 @@
     armnn::ReshapeDescriptor reshapeDescriptor;
     reshapeDescriptor.m_TargetShape = reshapedInfo.GetShape();
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("RESHAPE",
                                tfLiteContext,
                                IsReshapeSupported,
                                delegateData.m_Backends,
@@ -331,7 +331,7 @@
     }
 
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("ACTIVATION",
                                tfLiteContext,
                                IsActivationSupported,
                                data.m_Backends,
@@ -561,7 +561,7 @@
 {
     IgnoreUnused(layer);
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("CONSTANT",
                                tfLiteContext,
                                IsConstantSupported,
                                data.m_Backends,
@@ -608,7 +608,7 @@
         {
             armnn::TensorInfo inputTensorInfo = GetTensorInfoForTfLiteTensor(tfLiteInputTensor);
             bool isSupported = false;
-            FORWARD_LAYER_SUPPORT_FUNC(__func__,
+            FORWARD_LAYER_SUPPORT_FUNC("CONSTANT",
                                        tfLiteContext,
                                        IsConstantSupported,
                                        delegateData.m_Backends,
diff --git a/delegate/src/ElementwiseBinary.hpp b/delegate/src/ElementwiseBinary.hpp
index 0534c07..434694c 100644
--- a/delegate/src/ElementwiseBinary.hpp
+++ b/delegate/src/ElementwiseBinary.hpp
@@ -27,7 +27,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("ADD",
                                    tfLiteContext,
                                    IsAdditionSupported,
                                    delegateData.m_Backends,
@@ -51,7 +51,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("DIV",
                                    tfLiteContext,
                                    IsDivisionSupported,
                                    delegateData.m_Backends,
@@ -103,7 +103,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("MAXIMUM",
                                    tfLiteContext,
                                    IsMaximumSupported,
                                    delegateData.m_Backends,
@@ -126,7 +126,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("MINIMUM",
                                    tfLiteContext,
                                    IsMinimumSupported,
                                    delegateData.m_Backends,
@@ -149,7 +149,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("MUL",
                                    tfLiteContext,
                                    IsMultiplicationSupported,
                                    delegateData.m_Backends,
@@ -172,7 +172,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SUB",
                                    tfLiteContext,
                                    IsSubtractionSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/ElementwiseUnary.hpp b/delegate/src/ElementwiseUnary.hpp
index f2f5301..c65ddef 100644
--- a/delegate/src/ElementwiseUnary.hpp
+++ b/delegate/src/ElementwiseUnary.hpp
@@ -54,7 +54,7 @@
 
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("ELEMENTWISE_UNARY",
                                    tfLiteContext,
                                    IsElementwiseUnarySupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Fill.hpp b/delegate/src/Fill.hpp
index c6f94dd..859f5ff 100644
--- a/delegate/src/Fill.hpp
+++ b/delegate/src/Fill.hpp
@@ -74,7 +74,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("FILL",
                                    tfLiteContext,
                                    IsFillSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/FullyConnected.hpp b/delegate/src/FullyConnected.hpp
index 49686d6..18db550 100644
--- a/delegate/src/FullyConnected.hpp
+++ b/delegate/src/FullyConnected.hpp
@@ -112,7 +112,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("FULLY_CONNECTED",
                                    tfLiteContext,
                                    IsFullyConnectedSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Gather.hpp b/delegate/src/Gather.hpp
index 634373a..11f3b61 100644
--- a/delegate/src/Gather.hpp
+++ b/delegate/src/Gather.hpp
@@ -73,7 +73,7 @@
     {
         // Check if supported
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("GATHER",
                                    tfLiteContext,
                                    IsGatherSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/LogicalBinary.hpp b/delegate/src/LogicalBinary.hpp
index d877585..2e9091b 100644
--- a/delegate/src/LogicalBinary.hpp
+++ b/delegate/src/LogicalBinary.hpp
@@ -54,7 +54,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("LOGICAL_BINARY",
                                    tfLiteContext,
                                    IsLogicalBinarySupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Lstm.hpp b/delegate/src/Lstm.hpp
index 8d719ee..565c481 100644
--- a/delegate/src/Lstm.hpp
+++ b/delegate/src/Lstm.hpp
@@ -218,7 +218,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("LSTM",
                                    tfLiteContext,
                                    IsLstmSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Normalization.hpp b/delegate/src/Normalization.hpp
index 68ff3af..fa1c547 100644
--- a/delegate/src/Normalization.hpp
+++ b/delegate/src/Normalization.hpp
@@ -44,7 +44,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("L2_NORMALIZATION",
                                    tfLiteContext,
                                    IsL2NormalizationSupported,
                                    delegateData.m_Backends,
@@ -114,7 +114,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("NORMALIZATION",
                                    tfLiteContext,
                                    IsNormalizationSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Pack.hpp b/delegate/src/Pack.hpp
index 5e93ba3..2dc266b 100644
--- a/delegate/src/Pack.hpp
+++ b/delegate/src/Pack.hpp
@@ -76,7 +76,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("STACK",
                                    tfLiteContext,
                                    IsStackSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Pad.hpp b/delegate/src/Pad.hpp
index 78e0776..8428079 100644
--- a/delegate/src/Pad.hpp
+++ b/delegate/src/Pad.hpp
@@ -152,7 +152,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("PAD",
                                    tfLiteContext,
                                    IsPadSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Pooling.hpp b/delegate/src/Pooling.hpp
index 07c1946..4095ac4 100644
--- a/delegate/src/Pooling.hpp
+++ b/delegate/src/Pooling.hpp
@@ -85,7 +85,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("POOLING_2D",
                                    tfLiteContext,
                                    IsPooling2dSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Prelu.hpp b/delegate/src/Prelu.hpp
index 9baeaf4..aef70e8 100644
--- a/delegate/src/Prelu.hpp
+++ b/delegate/src/Prelu.hpp
@@ -24,7 +24,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("PRELU",
                                    tfLiteContext,
                                    IsPreluSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Quantization.hpp b/delegate/src/Quantization.hpp
index 3c274c6..26a9339 100644
--- a/delegate/src/Quantization.hpp
+++ b/delegate/src/Quantization.hpp
@@ -52,7 +52,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("DEQUANTIZE",
                                    tfLiteContext,
                                    IsDequantizeSupported,
                                    delegateData.m_Backends,
@@ -131,7 +131,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("QUANTIZE",
                                    tfLiteContext,
                                    IsQuantizeSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Redefine.hpp b/delegate/src/Redefine.hpp
index 766e600..ce25f7f 100644
--- a/delegate/src/Redefine.hpp
+++ b/delegate/src/Redefine.hpp
@@ -46,7 +46,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("CAST",
                                    tfLiteContext,
                                    IsCastSupported,
                                    delegateData.m_Backends,
@@ -212,7 +212,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("RESHAPE",
                                    tfLiteContext,
                                    IsReshapeSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Reduce.hpp b/delegate/src/Reduce.hpp
index bcea16f..b8db04c 100644
--- a/delegate/src/Reduce.hpp
+++ b/delegate/src/Reduce.hpp
@@ -107,7 +107,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("REDUCE",
                                    tfLiteContext,
                                    IsReduceSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Resize.hpp b/delegate/src/Resize.hpp
index 937cc00..63f8e68 100644
--- a/delegate/src/Resize.hpp
+++ b/delegate/src/Resize.hpp
@@ -28,7 +28,7 @@
                                     const armnn::ResizeDescriptor& descriptor)
 {
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("RESIZE",
                                tfLiteContext,
                                IsResizeSupported,
                                delegateData.m_Backends,
diff --git a/delegate/src/Shape.hpp b/delegate/src/Shape.hpp
index b173299..51aa8f1 100644
--- a/delegate/src/Shape.hpp
+++ b/delegate/src/Shape.hpp
@@ -54,7 +54,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SHAPE",
                                    tfLiteContext,
                                    IsShapeSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/SharedFunctions.cpp b/delegate/src/SharedFunctions.cpp
index 79b9f90..ad5d310 100644
--- a/delegate/src/SharedFunctions.cpp
+++ b/delegate/src/SharedFunctions.cpp
@@ -24,7 +24,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("FLOOR",
                                    tfLiteContext,
                                    IsFloorSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Slice.hpp b/delegate/src/Slice.hpp
index a237034..04b19cb 100644
--- a/delegate/src/Slice.hpp
+++ b/delegate/src/Slice.hpp
@@ -116,7 +116,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SLICE",
                                    tfLiteContext,
                                    IsStridedSliceSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Softmax.hpp b/delegate/src/Softmax.hpp
index 0de8e14..f257091 100644
--- a/delegate/src/Softmax.hpp
+++ b/delegate/src/Softmax.hpp
@@ -22,7 +22,7 @@
                                      const armnn::SoftmaxDescriptor& descriptor)
 {
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("SOFTMAX",
                                tfLiteContext,
                                IsSoftmaxSupported,
                                delegateData.m_Backends,
@@ -41,7 +41,7 @@
                                         const armnn::LogSoftmaxDescriptor& descriptor)
 {
     bool isSupported = false;
-    FORWARD_LAYER_SUPPORT_FUNC(__func__,
+    FORWARD_LAYER_SUPPORT_FUNC("LOG_SOFTMAX",
                                tfLiteContext,
                                IsLogSoftmaxSupported,
                                delegateData.m_Backends,
diff --git a/delegate/src/SpaceDepth.hpp b/delegate/src/SpaceDepth.hpp
index 03859b6..ac162fb 100644
--- a/delegate/src/SpaceDepth.hpp
+++ b/delegate/src/SpaceDepth.hpp
@@ -45,7 +45,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SPACE_TO_DEPTH",
                                    tfLiteContext,
                                    IsSpaceToDepthSupported,
                                    delegateData.m_Backends,
@@ -104,7 +104,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("DEPTH_TO_SPACE",
                                    tfLiteContext,
                                    IsDepthToSpaceSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Split.hpp b/delegate/src/Split.hpp
index ad55e53..66e2295 100644
--- a/delegate/src/Split.hpp
+++ b/delegate/src/Split.hpp
@@ -117,7 +117,7 @@
     {
         // Check if supported
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SPLIT",
                                    tfLiteContext,
                                    IsSplitterSupported,
                                    delegateData.m_Backends,
@@ -309,7 +309,7 @@
     {
         // Check if supported
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("SPLIT",
                                    tfLiteContext,
                                    IsSplitterSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Transpose.hpp b/delegate/src/Transpose.hpp
index 580e062..0741ad2 100644
--- a/delegate/src/Transpose.hpp
+++ b/delegate/src/Transpose.hpp
@@ -74,7 +74,7 @@
 
     auto validateFunc = [&](const armnn::TensorInfo& outputTensorInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("TRANSPOSE",
                                    tfLiteContext,
                                    IsTransposeSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/UnidirectionalSequenceLstm.hpp b/delegate/src/UnidirectionalSequenceLstm.hpp
index 8aff393..a923874 100644
--- a/delegate/src/UnidirectionalSequenceLstm.hpp
+++ b/delegate/src/UnidirectionalSequenceLstm.hpp
@@ -224,7 +224,7 @@
     bool isSupported = false;
     auto validateFunc = [&](const armnn::TensorInfo& outputInfo, bool& isSupported)
     {
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("UNIDIRECTIONAL_SEQUENCE_LSTM",
                                    tfLiteContext,
                                    IsUnidirectionalSequenceLstmSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/Unpack.hpp b/delegate/src/Unpack.hpp
index 4163163..447a4da 100644
--- a/delegate/src/Unpack.hpp
+++ b/delegate/src/Unpack.hpp
@@ -137,7 +137,7 @@
     {
         // Check if splitter is supported
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("UNPACK",
                                    tfLiteContext,
                                    IsSplitterSupported,
                                    delegateData.m_Backends,
@@ -156,7 +156,7 @@
     if (!delegateData.m_Network)
     {
         bool isSupported = false;
-        FORWARD_LAYER_SUPPORT_FUNC(__func__,
+        FORWARD_LAYER_SUPPORT_FUNC("RESHAPE",
                                    tfLiteContext,
                                    IsReshapeSupported,
                                    delegateData.m_Backends,
diff --git a/delegate/src/armnn_delegate.cpp b/delegate/src/armnn_delegate.cpp
index ed19b72..03db4a1 100644
--- a/delegate/src/armnn_delegate.cpp
+++ b/delegate/src/armnn_delegate.cpp
@@ -183,6 +183,9 @@
 
     TfLiteIntArray* nodesToDelegate = TfLiteIntArrayCreate(executionPlan->size);
     nodesToDelegate->size = 0;
+
+    std::set<int32_t> unsupportedOperators;
+
     for (int i = 0; i < executionPlan->size; ++i)
     {
         const int nodeIndex = executionPlan->data[i];
@@ -203,12 +206,21 @@
                    delegateData, tfLiteContext, tfLiteRegistration, tfLiteNode, nodeIndex) != kTfLiteOk)
         {
             // node is not supported by ArmNN
+            unsupportedOperators.insert(tfLiteRegistration->builtin_code);
             continue;
         }
 
         nodesToDelegate->data[nodesToDelegate->size++] = nodeIndex;
     }
 
+    for (std::set<int32_t>::iterator it=unsupportedOperators.begin(); it!=unsupportedOperators.end(); ++it)
+    {
+        TF_LITE_KERNEL_LOG(tfLiteContext,
+                           "Operator %s [%d] is not supported by armnn_delegate.",
+                           tflite::EnumNameBuiltinOperator(tflite::BuiltinOperator(*it)),
+                           *it);
+    }
+
     std::sort(&nodesToDelegate->data[0], &nodesToDelegate->data[nodesToDelegate->size]);
     return nodesToDelegate;
 }