COMPMID-798 Add instrumentation to NEON kernels

Change-Id: I9dbb090cac731d68bd98a7d1c8ab0e1cb0a5c911
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/116746
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Tested-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h b/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h
index c3cbedf..a859202 100644
--- a/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h
+++ b/arm_compute/core/NEON/kernels/NEAbsoluteDifferenceKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEAbsoluteDifferenceKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEAbsoluteDifferenceKernel";
+    }
     /** Default constructor */
     NEAbsoluteDifferenceKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEAccumulateKernel.h b/arm_compute/core/NEON/kernels/NEAccumulateKernel.h
index fa8a3be..ad5a16c 100644
--- a/arm_compute/core/NEON/kernels/NEAccumulateKernel.h
+++ b/arm_compute/core/NEON/kernels/NEAccumulateKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -40,6 +40,10 @@
 class NEAccumulateKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEAccumulateKernel";
+    }
     /** Set the input and accumulation tensors
      *
      * @param[in]  input Source tensor. Data type supported: U8.
@@ -63,6 +67,10 @@
 class NEAccumulateWeightedKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEAccumulateWeightedKernel";
+    }
     /** Default constructor */
     NEAccumulateWeightedKernel();
     /** Set the input and accumulation tensors, and the scale value
@@ -85,6 +93,10 @@
 class NEAccumulateWeightedFP16Kernel : public NEAccumulateWeightedKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEAccumulateWeightedFP16Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;
 };
@@ -102,6 +114,10 @@
 class NEAccumulateSquaredKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEAccumulateSquaredKernel";
+    }
     /** Default constructor */
     NEAccumulateSquaredKernel();
     /** Set the input and accumulation tensors and the shift value.
diff --git a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h
index 1edda84..d3c5382 100644
--- a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -40,6 +40,10 @@
 class NEActivationLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEActivationLayerKernel";
+    }
     /** Constructor */
     NEActivationLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h
index b830e02..eedecfb 100644
--- a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NEArithmeticAdditionKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEArithmeticAdditionKernel";
+    }
     /** Default constructor */
     NEArithmeticAdditionKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h
index af81d39..73ecfcf 100644
--- a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NEArithmeticSubtractionKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEArithmeticSubtractionKernel";
+    }
     /** Default constructor */
     NEArithmeticSubtractionKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h
index f3c5574..f748830 100644
--- a/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEBatchNormalizationLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NEBatchNormalizationLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBatchNormalizationLayerKernel";
+    }
     /** Default constructor */
     NEBatchNormalizationLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h
index 983dbd3..2c5a9e6 100644
--- a/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h
+++ b/arm_compute/core/NEON/kernels/NEBitwiseAndKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEBitwiseAndKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBitwiseAndKernel";
+    }
     /** Default constructor */
     NEBitwiseAndKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h
index f57d040..ddba225 100644
--- a/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h
+++ b/arm_compute/core/NEON/kernels/NEBitwiseNotKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEBitwiseNotKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBitwiseNotKernel";
+    }
     /** Default constructor */
     NEBitwiseNotKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h
index f405b73..0cb974a 100644
--- a/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h
+++ b/arm_compute/core/NEON/kernels/NEBitwiseOrKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEBitwiseOrKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBitwiseOrKernel";
+    }
     /** Default constructor */
     NEBitwiseOrKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h b/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h
index 321416e..d464e39 100644
--- a/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEBitwiseXorKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEBitwiseXorKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBitwiseXorKernel";
+    }
     /** Default constructor */
     NEBitwiseXorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h b/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h
index 29248f6..9c13955 100644
--- a/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEBox3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEBox3x3Kernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBox3x3Kernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input            Source tensor. Data type supported: U8.
@@ -52,6 +56,10 @@
 class NEBox3x3FP16Kernel : public NEBox3x3Kernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEBox3x3FP16Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;
 };
diff --git a/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h b/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h
index a57c389..401b9e4 100644
--- a/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h
+++ b/arm_compute/core/NEON/kernels/NECannyEdgeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEGradientKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGradientKernel";
+    }
     /** Default constructor */
     NEGradientKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -87,6 +91,10 @@
 class NEGradientFP16Kernel : public NEGradientKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGradientFP16Kernel";
+    }
     // Inherited methods overriden:
     void configure(const ITensor *gx, const ITensor *gy, ITensor *magnitude, ITensor *phase, int32_t norm_type) override;
 };
@@ -104,6 +112,10 @@
 class NEEdgeNonMaxSuppressionKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEEdgeNonMaxSuppressionKernel";
+    }
     /** Default constructor */
     NEEdgeNonMaxSuppressionKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -157,6 +169,10 @@
 class NEEdgeTraceKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEEdgeTraceKernel";
+    }
     /** Default constructor */
     NEEdgeTraceKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h b/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h
index 4ae5f80..1a88714 100644
--- a/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h
+++ b/arm_compute/core/NEON/kernels/NEChannelCombineKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEChannelCombineKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEChannelCombineKernel";
+    }
     /** Default constructor */
     NEChannelCombineKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h b/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h
index 8c6977c..e57a3a6 100644
--- a/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h
+++ b/arm_compute/core/NEON/kernels/NEChannelExtractKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEChannelExtractKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEChannelExtractKernel";
+    }
     /** Default constructor */
     NEChannelExtractKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NECol2ImKernel.h b/arm_compute/core/NEON/kernels/NECol2ImKernel.h
index 243cc77..9fb493c 100644
--- a/arm_compute/core/NEON/kernels/NECol2ImKernel.h
+++ b/arm_compute/core/NEON/kernels/NECol2ImKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -53,6 +53,10 @@
 class NECol2ImKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NECol2ImKernel";
+    }
     /** Default constructor */
     NECol2ImKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEColorConvertKernel.h b/arm_compute/core/NEON/kernels/NEColorConvertKernel.h
index 1c8799f..608172c 100644
--- a/arm_compute/core/NEON/kernels/NEColorConvertKernel.h
+++ b/arm_compute/core/NEON/kernels/NEColorConvertKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEColorConvertKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEColorConvertKernel";
+    }
     /** Default constructor */
     NEColorConvertKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEConvolutionKernel.h b/arm_compute/core/NEON/kernels/NEConvolutionKernel.h
index 690c17a..534e0b0 100644
--- a/arm_compute/core/NEON/kernels/NEConvolutionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEConvolutionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -55,6 +55,10 @@
 class NEConvolutionKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEConvolutionKernel";
+    }
     /** Default constructor */
     NEConvolutionKernel();
     /** Initialise the kernel's input, output and border mode.
@@ -98,6 +102,10 @@
 class NESeparableConvolutionHorKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESeparableConvolutionHorKernel";
+    }
     /** Default constructor */
     NESeparableConvolutionHorKernel();
 
@@ -138,6 +146,10 @@
 class NESeparableConvolutionVertKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESeparableConvolutionVertKernel";
+    }
     /** Default constructor */
     NESeparableConvolutionVertKernel();
 
@@ -200,6 +212,10 @@
 class NEConvolutionRectangleKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEConvolutionRectangleKernel";
+    }
     /** Default constructor */
     NEConvolutionRectangleKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h b/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h
index e444679..ada07b1 100644
--- a/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h
+++ b/arm_compute/core/NEON/kernels/NECumulativeDistributionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -44,6 +44,10 @@
 class NECumulativeDistributionKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NECumulativeDistributionKernel";
+    }
     /** Default constructor */
     NECumulativeDistributionKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h b/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h
index 6029873..67ef529 100644
--- a/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEDepthConcatenateLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthConcatenateLayerKernel";
+    }
     /** Default constructor */
     NEDepthConcatenateLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDepthConvertLayerKernel.h b/arm_compute/core/NEON/kernels/NEDepthConvertLayerKernel.h
index af51ded..50536f2 100644
--- a/arm_compute/core/NEON/kernels/NEDepthConvertLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthConvertLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEDepthConvertLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthConvertLayerKernel";
+    }
     /** Default constructor*/
     NEDepthConvertLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.h b/arm_compute/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.h
index 38e2a5d..a441fb4 100644
--- a/arm_compute/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthwiseConvolutionLayer3x3Kernel.h
@@ -35,6 +35,10 @@
 class NEDepthwiseConvolutionLayer3x3Kernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthwiseConvolutionLayer3x3Kernel";
+    }
     /** Default constructor */
     NEDepthwiseConvolutionLayer3x3Kernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -67,4 +71,4 @@
     unsigned int   _num_elems_written_per_iteration;
 };
 } // namespace arm_compute
-#endif /* __ARM_COMPUTE_NEDEPTHWISECONVOLUTIONKERNEL3x3_H__ */
\ No newline at end of file
+#endif /* __ARM_COMPUTE_NEDEPTHWISECONVOLUTIONKERNEL3x3_H__ */
diff --git a/arm_compute/core/NEON/kernels/NEDepthwiseIm2ColKernel.h b/arm_compute/core/NEON/kernels/NEDepthwiseIm2ColKernel.h
index fde474d..8d59ba3 100644
--- a/arm_compute/core/NEON/kernels/NEDepthwiseIm2ColKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthwiseIm2ColKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEDepthwiseIm2ColKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthwiseIm2ColKernel";
+    }
     /** Default constructor */
     NEDepthwiseIm2ColKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDepthwiseVectorToTensorKernel.h b/arm_compute/core/NEON/kernels/NEDepthwiseVectorToTensorKernel.h
index 8b33fae..1900090 100644
--- a/arm_compute/core/NEON/kernels/NEDepthwiseVectorToTensorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthwiseVectorToTensorKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -40,6 +40,10 @@
 class NEDepthwiseVectorToTensorKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthwiseVectorToTensorKernel";
+    }
     /** Default constructor */
     NEDepthwiseVectorToTensorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDepthwiseWeightsReshapeKernel.h b/arm_compute/core/NEON/kernels/NEDepthwiseWeightsReshapeKernel.h
index 2e98611..4d23b8b 100644
--- a/arm_compute/core/NEON/kernels/NEDepthwiseWeightsReshapeKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDepthwiseWeightsReshapeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEDepthwiseWeightsReshapeKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDepthwiseWeightsReshapeKernel";
+    }
     /** Default constructor */
     NEDepthwiseWeightsReshapeKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h
index 51c75f8..25383aa 100644
--- a/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDequantizationLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEDequantizationLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDequantizationLayerKernel";
+    }
     /** Default constructor */
     NEDequantizationLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDerivativeKernel.h b/arm_compute/core/NEON/kernels/NEDerivativeKernel.h
index 5d46516..233c423 100644
--- a/arm_compute/core/NEON/kernels/NEDerivativeKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDerivativeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEDerivativeKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDerivativeKernel";
+    }
     /** Default constructor */
     NEDerivativeKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDilateKernel.h b/arm_compute/core/NEON/kernels/NEDilateKernel.h
index b05c3ad..ad15c62 100644
--- a/arm_compute/core/NEON/kernels/NEDilateKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDilateKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEDilateKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDilateKernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input            Source tensor. Data type supported: U8
diff --git a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h
index cd482dd..f859f97 100644
--- a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEDirectConvolutionLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDirectConvolutionLayerKernel";
+    }
     /** Default constructor */
     NEDirectConvolutionLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerOutputStageKernel.h b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerOutputStageKernel.h
index c42e5c4..77711d7 100644
--- a/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerOutputStageKernel.h
+++ b/arm_compute/core/NEON/kernels/NEDirectConvolutionLayerOutputStageKernel.h
@@ -36,6 +36,10 @@
 class NEDirectConvolutionLayerOutputStageKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEDirectConvolutionLayerOutputStageKernel";
+    }
     /** Default constructor */
     NEDirectConvolutionLayerOutputStageKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEErodeKernel.h b/arm_compute/core/NEON/kernels/NEErodeKernel.h
index 4d60d64..b1b236c 100644
--- a/arm_compute/core/NEON/kernels/NEErodeKernel.h
+++ b/arm_compute/core/NEON/kernels/NEErodeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEErodeKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEErodeKernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input            Source tensor. Data type supported: U8
diff --git a/arm_compute/core/NEON/kernels/NEFastCornersKernel.h b/arm_compute/core/NEON/kernels/NEFastCornersKernel.h
index dba5e88..1b645c4 100644
--- a/arm_compute/core/NEON/kernels/NEFastCornersKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFastCornersKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEFastCornersKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEFastCornersKernel";
+    }
     /** Constructor */
     NEFastCornersKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEFillArrayKernel.h b/arm_compute/core/NEON/kernels/NEFillArrayKernel.h
index 6b92a8b..62d537d 100644
--- a/arm_compute/core/NEON/kernels/NEFillArrayKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFillArrayKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEFillArrayKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEFillArrayKernel";
+    }
     /** Default contructor */
     NEFillArrayKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEFillBorderKernel.h b/arm_compute/core/NEON/kernels/NEFillBorderKernel.h
index 164158b..dd19b8f 100644
--- a/arm_compute/core/NEON/kernels/NEFillBorderKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFillBorderKernel.h
@@ -36,6 +36,10 @@
 class NEFillBorderKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEFillBorderKernel";
+    }
     /** Default Constructor */
     NEFillBorderKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h b/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h
index b264bb7..545a265 100644
--- a/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFillInnerBorderKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEFillInnerBorderKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEFillInnerBorderKernel";
+    }
     /** Default constructor */
     NEFillInnerBorderKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEFloorKernel.h b/arm_compute/core/NEON/kernels/NEFloorKernel.h
index a9221d0..b72d052 100644
--- a/arm_compute/core/NEON/kernels/NEFloorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEFloorKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEFloorKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEFloorKernel";
+    }
     /** Set the source, destination of the kernel
      *
      * @param[in]  input  Source tensor. Data type supported: F32.
diff --git a/arm_compute/core/NEON/kernels/NEGEMMAssemblyBaseKernel.h b/arm_compute/core/NEON/kernels/NEGEMMAssemblyBaseKernel.h
index 1090dd5..579e8ed 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMAssemblyBaseKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMAssemblyBaseKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGEMMAssemblyBaseKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMAssemblyBaseKernel";
+    }
     /** Constructor */
     NEGEMMAssemblyBaseKernel()
         : _input0(nullptr), _input1(nullptr), _output(nullptr), _workspace(nullptr), _alpha(1.f), _beta(0.f), _is_transposed_0(false), _is_transposed_1(false)
diff --git a/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h b/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h
index fd93def..79504fd 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMInterleave4x4Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -52,6 +52,10 @@
 class NEGEMMInterleave4x4Kernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMInterleave4x4Kernel";
+    }
     /* Constructor */
     NEGEMMInterleave4x4Kernel();
     /** Initialise the kernel's input and output.
diff --git a/arm_compute/core/NEON/kernels/NEGEMMInterleaveBlockedKernel.h b/arm_compute/core/NEON/kernels/NEGEMMInterleaveBlockedKernel.h
index b9bb18d..f5a1121 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMInterleaveBlockedKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMInterleaveBlockedKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEGEMMInterleaveBlockedKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMInterleaveBlockedKernel";
+    }
     /* Constructor */
     NEGEMMInterleaveBlockedKernel();
     /** Initialise the kernel's input and output.
diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h
index 7435994..354ae21 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMLowpMatrixMultiplyKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -43,6 +43,10 @@
 class NEGEMMLowpMatrixMultiplyKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpMatrixMultiplyKernel";
+    }
     /** Constructor */
     NEGEMMLowpMatrixMultiplyKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers)*/
diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpOffsetContributionKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpOffsetContributionKernel.h
index 5319683..7186320 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMLowpOffsetContributionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMLowpOffsetContributionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -46,6 +46,10 @@
 class NEGEMMLowpOffsetContributionKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpOffsetContributionKernel";
+    }
     /** Constructor */
     NEGEMMLowpOffsetContributionKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers)*/
diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel.h
index b1dd1fb..030a0c7 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -46,6 +46,10 @@
 class NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel";
+    }
     /** Constructor */
     NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers)*/
diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel.h
index 10b3330..84f45b0 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -46,6 +46,10 @@
 class NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel";
+    }
     /** Constructor */
     NEGEMMLowpQuantizeDownInt32ToUint8ScaleKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers)*/
diff --git a/arm_compute/core/NEON/kernels/NEGEMMLowpReductionKernel.h b/arm_compute/core/NEON/kernels/NEGEMMLowpReductionKernel.h
index 38c353e..4eab86d 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMLowpReductionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMLowpReductionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -69,6 +69,10 @@
 class NEGEMMLowpMatrixAReductionKernel : public INEGEMMLowpReductionKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpMatrixAReductionKernel";
+    }
     /** Initialise the kernel's input and output.
      *
      * @param[in]  mtx_a             Input tensor. Data type supported: QASYMM8
@@ -100,6 +104,10 @@
 class NEGEMMLowpMatrixBReductionKernel : public INEGEMMLowpReductionKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpMatrixBReductionKernel";
+    }
     /** Initialise the kernel's input and output.
      *
      * @param[in]  mtx_b            Input tensor. Data type supported: Data type supported: QASYMM8
diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h
index d5fb675..051b8b7 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixAccumulateBiasesKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -33,6 +33,10 @@
 class NEGEMMMatrixAccumulateBiasesKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMMatrixAccumulateBiasesKernel";
+    }
     /** Default constructor */
     NEGEMMMatrixAccumulateBiasesKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h
index 9d5adb6..5e4f8b7 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixAdditionKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -41,6 +41,10 @@
 class NEGEMMMatrixAdditionKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMMatrixAdditionKernel";
+    }
     /** Constructor */
     NEGEMMMatrixAdditionKernel();
     /** Prevent instances of this class from being copied */
diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h
index 9923c31..4598e15 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixMultiplyKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEGEMMMatrixMultiplyKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMMatrixMultiplyKernel";
+    }
     /** Constructor */
     NEGEMMMatrixMultiplyKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEGEMMMatrixVectorMultiplyKernel.h b/arm_compute/core/NEON/kernels/NEGEMMMatrixVectorMultiplyKernel.h
index d844af5..5ea8390 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMMatrixVectorMultiplyKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMMatrixVectorMultiplyKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -33,6 +33,10 @@
 class NEGEMMMatrixVectorMultiplyKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMMatrixVectorMultiplyKernel";
+    }
     /** Default constructor */
     NEGEMMMatrixVectorMultiplyKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h b/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h
index 451dce2..fcdd8dd 100644
--- a/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGEMMTranspose1xWKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2018 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -68,6 +68,10 @@
 class NEGEMMTranspose1xWKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMTranspose1xWKernel";
+    }
     /** Initialise the kernel's input and output.
      *
      * @param[in]  input  Input tensor. Data types supported: U8/S8/QS8/QASYMM8/U16/S16/QS16/F16/U32/S32/F32
diff --git a/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h b/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h
index 962948c..404f5dd 100644
--- a/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEGaussian3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGaussian3x3Kernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGaussian3x3Kernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input            Source tensor. Data type supported: U8
diff --git a/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h b/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h
index 95d1f4b..a06326c 100644
--- a/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEGaussian5x5Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGaussian5x5HorKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGaussian5x5HorKernel";
+    }
     /** Default constructor */
     NEGaussian5x5HorKernel();
 
@@ -57,6 +61,10 @@
 class NEGaussian5x5VertKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGaussian5x5VertKernel";
+    }
     /** Initialise the kernel's source, destination and border mode.
      *
      * @param[in]  input            Source tensor. Data type supported: S16.
diff --git a/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h b/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h
index d285011..ac22934 100644
--- a/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h
+++ b/arm_compute/core/NEON/kernels/NEGaussianPyramidKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGaussianPyramidHorKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGaussianPyramidHorKernel";
+    }
     /** Default constructor */
     NEGaussianPyramidHorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -66,6 +70,10 @@
 class NEGaussianPyramidVertKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGaussianPyramidVertKernel";
+    }
     /** Default constructor */
     NEGaussianPyramidVertKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h b/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h
index 0eae9eb..37d0419 100644
--- a/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEHOGDescriptorKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEHOGOrientationBinningKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHOGOrientationBinningKernel";
+    }
     /** Default constructor */
     NEHOGOrientationBinningKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -91,6 +95,10 @@
 class NEHOGBlockNormalizationKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHOGBlockNormalizationKernel";
+    }
     /** Default constructor */
     NEHOGBlockNormalizationKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h b/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h
index 838b914..0db1a40 100644
--- a/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h
+++ b/arm_compute/core/NEON/kernels/NEHOGDetectorKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEHOGDetectorKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHOGDetectorKernel";
+    }
     /** Default constructor */
     NEHOGDetectorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h b/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h
index c3c37e4..8037e41 100644
--- a/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h
+++ b/arm_compute/core/NEON/kernels/NEHarrisCornersKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -84,6 +84,10 @@
 class NEHarrisScoreKernel : public INEHarrisScoreKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHarrisScoreKernel";
+    }
     /** Default constructor */
     NEHarrisScoreKernel();
     // Inherited methods overridden:
@@ -105,6 +109,10 @@
 class NEHarrisScoreFP16Kernel : public INEHarrisScoreKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHarrisScoreFP16Kernel";
+    }
     /** Default constructor */
     NEHarrisScoreFP16Kernel();
     // Inherited methods overridden:
diff --git a/arm_compute/core/NEON/kernels/NEHistogramKernel.h b/arm_compute/core/NEON/kernels/NEHistogramKernel.h
index 672472e..086353b 100644
--- a/arm_compute/core/NEON/kernels/NEHistogramKernel.h
+++ b/arm_compute/core/NEON/kernels/NEHistogramKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -40,6 +40,10 @@
 class NEHistogramKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHistogramKernel";
+    }
     /** Default constructor */
     NEHistogramKernel();
     /** Default destructor */
diff --git a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h
index bc12b22..6d11fbe 100644
--- a/arm_compute/core/NEON/kernels/NEIm2ColKernel.h
+++ b/arm_compute/core/NEON/kernels/NEIm2ColKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -57,6 +57,10 @@
 class NEIm2ColKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEIm2ColKernel";
+    }
     /** Default constructor */
     NEIm2ColKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h b/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h
index 0e86eba..8d34926 100644
--- a/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h
+++ b/arm_compute/core/NEON/kernels/NEIntegralImageKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEIntegralImageKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEIntegralImageKernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input  Source tensor. Data type supported: U8
diff --git a/arm_compute/core/NEON/kernels/NEL2NormalizeLayerKernel.h b/arm_compute/core/NEON/kernels/NEL2NormalizeLayerKernel.h
index 7aa5116..7fb968e 100644
--- a/arm_compute/core/NEON/kernels/NEL2NormalizeLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEL2NormalizeLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEL2NormalizeLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEL2NormalizeLayerKernel";
+    }
     /** Default constructor */
     NEL2NormalizeLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NELKTrackerKernel.h b/arm_compute/core/NEON/kernels/NELKTrackerKernel.h
index f65a6c2..f210558 100644
--- a/arm_compute/core/NEON/kernels/NELKTrackerKernel.h
+++ b/arm_compute/core/NEON/kernels/NELKTrackerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -51,6 +51,10 @@
 class NELKTrackerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NELKTrackerKernel";
+    }
     /** Default constructor */
     NELKTrackerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h b/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h
index 593d965..5e3410f 100644
--- a/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h
+++ b/arm_compute/core/NEON/kernels/NELocallyConnectedMatrixMultiplyKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NELocallyConnectedMatrixMultiplyKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NELocallyConnectedMatrixMultiplyKernel";
+    }
     /** Default constructor */
     NELocallyConnectedMatrixMultiplyKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h b/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h
index 76c6163..522ed54 100644
--- a/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h
+++ b/arm_compute/core/NEON/kernels/NEMagnitudePhaseKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEMagnitudePhaseKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMagnitudePhaseKernel";
+    }
     /** Default constructor */
     NEMagnitudePhaseKernel();
     /** Destructor */
@@ -100,6 +104,10 @@
 class NEMagnitudePhaseFP16Kernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMagnitudePhaseFP16Kernel";
+    }
     /** Default constructor */
     NEMagnitudePhaseFP16Kernel();
     /** Destructor */
diff --git a/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h b/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h
index 5579767..bba6e2a 100644
--- a/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h
+++ b/arm_compute/core/NEON/kernels/NEMeanStdDevKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEMeanStdDevKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMeanStdDevKernel";
+    }
     /** Default constructor */
     NEMeanStdDevKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h b/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h
index 769c2c1..2403677 100644
--- a/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEMedian3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEMedian3x3Kernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMedian3x3Kernel";
+    }
     /** Set the source, destination and border mode of the kernel
      *
      * @param[in]  input            Source tensor. Data type supported: U8
diff --git a/arm_compute/core/NEON/kernels/NEMinMaxLayerKernel.h b/arm_compute/core/NEON/kernels/NEMinMaxLayerKernel.h
index da4f2c4..592b594 100644
--- a/arm_compute/core/NEON/kernels/NEMinMaxLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEMinMaxLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEMinMaxLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMinMaxLayerKernel";
+    }
     /** Default constructor */
     NEMinMaxLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h b/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h
index ef193d1..bf2d207 100644
--- a/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h
+++ b/arm_compute/core/NEON/kernels/NEMinMaxLocationKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEMinMaxKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMinMaxKernel";
+    }
     /** Default constructor */
     NEMinMaxKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -102,6 +106,10 @@
 class NEMinMaxLocationKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEMinMaxLocationKernel";
+    }
     /** Default constructor */
     NEMinMaxLocationKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h b/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h
index 2ddd58e..42701ef 100644
--- a/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h
+++ b/arm_compute/core/NEON/kernels/NENonLinearFilterKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NENonLinearFilterKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NENonLinearFilterKernel";
+    }
     /** Default constructor */
     NENonLinearFilterKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h b/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h
index da8aecf..f122ed1 100644
--- a/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NENonMaximaSuppression3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NENonMaximaSuppression3x3Kernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NENonMaximaSuppression3x3Kernel";
+    }
     /** Default constructor */
     NENonMaximaSuppression3x3Kernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -84,6 +88,10 @@
 class NENonMaximaSuppression3x3FP16Kernel : public NENonMaximaSuppression3x3Kernel
 {
 public:
+    const char *name() const override
+    {
+        return "NENonMaximaSuppression3x3FP16Kernel";
+    }
     /** Initialise the kernel's sources, destinations and border mode.
      *
      * @param[in]  input            Source tensor. Data types supported: U8/F32.
diff --git a/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h b/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h
index 405daf1..b835ca7 100644
--- a/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NENormalizationLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NENormalizationLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NENormalizationLayerKernel";
+    }
     /** Default constructor */
     NENormalizationLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h
index 10f990e..2a82d6e 100644
--- a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h
+++ b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NEPixelWiseMultiplicationKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEPixelWiseMultiplicationKernel";
+    }
     /** Default constructor */
     NEPixelWiseMultiplicationKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h
index 19c4656..0b17b76 100644
--- a/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEPoolingLayerKernel.h
@@ -34,6 +34,10 @@
 class NEPoolingLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEPoolingLayerKernel";
+    }
     /** Default constructor */
     NEPoolingLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h
index e80f9eb..9642ac5 100644
--- a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NEQuantizationLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEQuantizationLayerKernel";
+    }
     /** Default constructor */
     NEQuantizationLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h
index dc604fc..5d9a7cf 100644
--- a/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEROIPoolingLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NEROIPoolingLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEROIPoolingLayerKernel";
+    }
     /** Default constructor */
     NEROIPoolingLayerKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h b/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h
index 9be8943..a5ddd06 100644
--- a/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h
+++ b/arm_compute/core/NEON/kernels/NEReductionOperationKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEReductionOperationKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEReductionOperationKernel";
+    }
     /** Default constructor */
     NEReductionOperationKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NERemapKernel.h b/arm_compute/core/NEON/kernels/NERemapKernel.h
index 7aa5de7..8a4ecd4 100644
--- a/arm_compute/core/NEON/kernels/NERemapKernel.h
+++ b/arm_compute/core/NEON/kernels/NERemapKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NERemapKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NERemapKernel";
+    }
     /** Default constructor */
     NERemapKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h b/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h
index 062a6e1..cd70198 100644
--- a/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEReshapeLayerKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEReshapeLayerKernel";
+    }
     /** Set the input and output of the kernel
      *
      * @param[in]  input  Source tensor. Data type supported: U8/S8/QS8/U16/S16/QS16/U32/S32/F16/F32
diff --git a/arm_compute/core/NEON/kernels/NEScaleKernel.h b/arm_compute/core/NEON/kernels/NEScaleKernel.h
index ac154d4..eb47409 100644
--- a/arm_compute/core/NEON/kernels/NEScaleKernel.h
+++ b/arm_compute/core/NEON/kernels/NEScaleKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NEScaleKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEScaleKernel";
+    }
     /** Default constructor */
     NEScaleKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h b/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h
index 01c4c90..9040341 100644
--- a/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NEScharr3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -43,6 +43,10 @@
 class NEScharr3x3Kernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEScharr3x3Kernel";
+    }
     /** Default constructor */
     NEScharr3x3Kernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h b/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h
index 46e8032..21e8748 100644
--- a/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h
+++ b/arm_compute/core/NEON/kernels/NESobel3x3Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -43,6 +43,10 @@
 class NESobel3x3Kernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESobel3x3Kernel";
+    }
     /** Default constructor */
     NESobel3x3Kernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h b/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h
index 9770c2c..361a194 100644
--- a/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h
+++ b/arm_compute/core/NEON/kernels/NESobel5x5Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NESobel5x5HorKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESobel5x5HorKernel";
+    }
     /** Default constructor */
     NESobel5x5HorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -79,6 +83,10 @@
 class NESobel5x5VertKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESobel5x5VertKernel";
+    }
     /** Default constructor */
     NESobel5x5VertKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h b/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h
index 5683f7c..a5cc86d 100644
--- a/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h
+++ b/arm_compute/core/NEON/kernels/NESobel7x7Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -36,6 +36,10 @@
 class NESobel7x7HorKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESobel7x7HorKernel";
+    }
     /** Default constructor */
     NESobel7x7HorKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -79,6 +83,10 @@
 class NESobel7x7VertKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NESobel7x7VertKernel";
+    }
     /** Default constructor */
     NESobel7x7VertKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h b/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h
index 0fecfac..bd0e642 100644
--- a/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NESoftmaxLayerKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NELogits1DMaxKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NELogits1DMaxKernel";
+    }
     /** Default constructor */
     NELogits1DMaxKernel();
     /** Set the input and output tensors.
@@ -68,6 +72,10 @@
 class NELogits1DShiftExpSumKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NELogits1DShiftExpSumKernel";
+    }
     /** Default constructor */
     NELogits1DShiftExpSumKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
@@ -120,6 +128,10 @@
 class NELogits1DNormKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NELogits1DNormKernel";
+    }
     /** Default constructor */
     NELogits1DNormKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NETableLookupKernel.h b/arm_compute/core/NEON/kernels/NETableLookupKernel.h
index 46eefc9..9bc4a44 100644
--- a/arm_compute/core/NEON/kernels/NETableLookupKernel.h
+++ b/arm_compute/core/NEON/kernels/NETableLookupKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -35,6 +35,10 @@
 class NETableLookupKernel : public INESimpleKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NETableLookupKernel";
+    }
     /** Default constructor */
     NETableLookupKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEThresholdKernel.h b/arm_compute/core/NEON/kernels/NEThresholdKernel.h
index 8fd561b..9993780 100644
--- a/arm_compute/core/NEON/kernels/NEThresholdKernel.h
+++ b/arm_compute/core/NEON/kernels/NEThresholdKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -39,6 +39,10 @@
 class NEThresholdKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEThresholdKernel";
+    }
     /** Constructor
      * Initialize all the pointers to nullptr and parameters to zero.
      */
diff --git a/arm_compute/core/NEON/kernels/NETransposeKernel.h b/arm_compute/core/NEON/kernels/NETransposeKernel.h
index 855d270..dc7ef8f 100644
--- a/arm_compute/core/NEON/kernels/NETransposeKernel.h
+++ b/arm_compute/core/NEON/kernels/NETransposeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -38,6 +38,10 @@
 class NETransposeKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NETransposeKernel";
+    }
     /** Default constructor */
     NETransposeKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEWarpKernel.h b/arm_compute/core/NEON/kernels/NEWarpKernel.h
index d7cb82f..a147d57 100644
--- a/arm_compute/core/NEON/kernels/NEWarpKernel.h
+++ b/arm_compute/core/NEON/kernels/NEWarpKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2017 ARM Limited.
+ * Copyright (c) 2016-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -98,6 +98,10 @@
 class NEWarpAffineKernel : public INEWarpKernel
 {
 private:
+    const char *name() const override
+    {
+        return "NEWarpAffineKernel";
+    }
     // Inherited methods overridden:
     void warp_undefined(const Window &window) override;
     void warp_constant(const Window &window) override;
@@ -111,6 +115,10 @@
 class NEWarpPerspectiveKernel : public INEWarpKernel
 {
 private:
+    const char *name() const override
+    {
+        return "NEWarpPerspectiveKernel";
+    }
     // Inherited methods overridden:
     void warp_undefined(const Window &window) override;
     void warp_constant(const Window &window) override;
diff --git a/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h b/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h
index 84ec736..e92829c 100644
--- a/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h
+++ b/arm_compute/core/NEON/kernels/NEWeightsReshapeKernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -56,6 +56,10 @@
 class NEWeightsReshapeKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEWeightsReshapeKernel";
+    }
     /** Constructor.*/
     NEWeightsReshapeKernel();
     /** Prevent instances of this class from being copied (As this class contains pointers) */
diff --git a/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h b/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
index 78ac564..b85f372 100644
--- a/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
+++ b/arm_compute/core/NEON/kernels/NEWinogradLayerKernel.h
@@ -79,6 +79,10 @@
 class NEWinogradLayerKernel : public INEKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEWinogradLayerKernel";
+    }
     /** Constructor */
     NEWinogradLayerKernel();
 
diff --git a/arm_compute/core/NEON/kernels/arm32/NEGEMMAArch32Kernel.h b/arm_compute/core/NEON/kernels/arm32/NEGEMMAArch32Kernel.h
index 7564f6a..4868f83 100644
--- a/arm_compute/core/NEON/kernels/arm32/NEGEMMAArch32Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm32/NEGEMMAArch32Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGEMMAArch32Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMAArch32Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;
 
diff --git a/arm_compute/core/NEON/kernels/arm64/NEGEMMAArch64Kernel.h b/arm_compute/core/NEON/kernels/arm64/NEGEMMAArch64Kernel.h
index 5c29a82..5252378 100644
--- a/arm_compute/core/NEON/kernels/arm64/NEGEMMAArch64Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm64/NEGEMMAArch64Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEGEMMAArch64Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMAArch64Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;
 
diff --git a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64A53Kernel.h b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64A53Kernel.h
index 8e97837..83c209d 100644
--- a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64A53Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64A53Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEGEMMLowpAArch64A53Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpAArch64A53Kernel";
+    }
     /** Default constructor */
     NEGEMMLowpAArch64A53Kernel();
     // Inherited methods overridden:
diff --git a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64Kernel.h b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64Kernel.h
index 3829d5e..f813242 100644
--- a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEGEMMLowpAArch64Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpAArch64Kernel";
+    }
     /** Default constructor */
     NEGEMMLowpAArch64Kernel();
 
diff --git a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64V8P4Kernel.h b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64V8P4Kernel.h
index b944993..b854d3a 100644
--- a/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64V8P4Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm64/NEGEMMLowpAArch64V8P4Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -37,6 +37,10 @@
 class NEGEMMLowpAArch64V8P4Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEGEMMLowpAArch64V8P4Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;
     /** Static function to check if given info will lead to a valid configuration of @ref NEGEMMAssemblyBaseKernel
diff --git a/arm_compute/core/NEON/kernels/arm64/NEHGEMMAArch64FP16Kernel.h b/arm_compute/core/NEON/kernels/arm64/NEHGEMMAArch64FP16Kernel.h
index 5671d99..75c4dbd 100644
--- a/arm_compute/core/NEON/kernels/arm64/NEHGEMMAArch64FP16Kernel.h
+++ b/arm_compute/core/NEON/kernels/arm64/NEHGEMMAArch64FP16Kernel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -34,6 +34,10 @@
 class NEHGEMMAArch64FP16Kernel : public NEGEMMAssemblyBaseKernel
 {
 public:
+    const char *name() const override
+    {
+        return "NEHGEMMAArch64FP16Kernel";
+    }
     // Inherited methods overridden:
     void run(const Window &window, const ThreadInfo &info) override;