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;
 }
