COMPMID-3393: Minor tweaks on memory injection interface

* Avoid the need to overload workspace() everytime
* Remove the Layer suffix from the operators
* Clean interface by removing default arguments when unsupported

Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I7710ecd485cae13e9c2d45216debbd8103bc5a0f
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3610
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/src/runtime/CL/CLOperator.cpp b/src/runtime/CL/CLOperator.cpp
index 0052f1a..11ee30e 100644
--- a/src/runtime/CL/CLOperator.cpp
+++ b/src/runtime/CL/CLOperator.cpp
@@ -49,5 +49,10 @@
 {
     ARM_COMPUTE_UNUSED(constants);
 }
+
+MemoryRequirements ICLOperator::workspace() const
+{
+    return {};
+}
 } // namespace experimental
 } // namespace arm_compute
diff --git a/src/runtime/CL/functions/CLActivationLayer.cpp b/src/runtime/CL/functions/CLActivationLayer.cpp
index 640841e..784473d 100644
--- a/src/runtime/CL/functions/CLActivationLayer.cpp
+++ b/src/runtime/CL/functions/CLActivationLayer.cpp
@@ -33,30 +33,25 @@
 {
 namespace experimental
 {
-void CLActivationLayer::configure(const CLCompileContext &compile_context, ITensorInfo *input, ITensorInfo *output, ActivationLayerInfo act_info)
+void CLActivation::configure(const CLCompileContext &compile_context, ITensorInfo *input, ITensorInfo *output, ActivationLayerInfo act_info)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLActivationLayerKernel>();
     k->configure(compile_context, input, output, act_info);
     _kernel = std::move(k);
 }
 
-Status CLActivationLayer::validate(const ITensorInfo *input, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status CLActivation::validate(const ITensorInfo *input, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     return CLActivationLayerKernel::validate(input, output, act_info);
 }
-
-MemoryRequirements CLActivationLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct CLActivationLayer::Impl
 {
-    const ICLTensor                                 *src{ nullptr };
-    ICLTensor                                       *dst{ nullptr };
-    CLRuntimeContext                                *ctx{ nullptr };
-    std::unique_ptr<experimental::CLActivationLayer> op{ nullptr };
+    const ICLTensor                            *src{ nullptr };
+    ICLTensor                                  *dst{ nullptr };
+    CLRuntimeContext                           *ctx{ nullptr };
+    std::unique_ptr<experimental::CLActivation> op{ nullptr };
 };
 
 CLActivationLayer::CLActivationLayer(CLRuntimeContext *ctx)
@@ -83,13 +78,13 @@
     _impl->src = input;
     _impl->dst = output == nullptr ? input : output;
 
-    _impl->op = arm_compute::support::cpp14::make_unique<experimental::CLActivationLayer>();
+    _impl->op = arm_compute::support::cpp14::make_unique<experimental::CLActivation>();
     _impl->op->configure(compile_context, _impl->src->info(), _impl->dst->info(), act_info);
 }
 
 Status CLActivationLayer::validate(const ITensorInfo *input, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
-    return experimental::CLActivationLayer::validate(input, output, act_info);
+    return experimental::CLActivation::validate(input, output, act_info);
 }
 
 void CLActivationLayer::run()
diff --git a/src/runtime/CL/functions/CLConcatenateLayer.cpp b/src/runtime/CL/functions/CLConcatenateLayer.cpp
index 06903d2..1ddda02 100644
--- a/src/runtime/CL/functions/CLConcatenateLayer.cpp
+++ b/src/runtime/CL/functions/CLConcatenateLayer.cpp
@@ -42,14 +42,14 @@
 {
 namespace experimental
 {
-CLConcatenateLayer::CLConcatenateLayer()
+CLConcatenation::CLConcatenation()
     : _concat_kernels(),
       _num_inputs(0),
       _axis(Window::DimX)
 {
 }
 
-void CLConcatenateLayer::configure(const CLCompileContext &compile_context, const std::vector<ITensorInfo *> &inputs_vector, ITensorInfo *output, size_t axis)
+void CLConcatenation::configure(const CLCompileContext &compile_context, const std::vector<ITensorInfo *> &inputs_vector, ITensorInfo *output, size_t axis)
 {
     ARM_COMPUTE_ERROR_ON(output == nullptr);
     _axis       = axis;
@@ -143,7 +143,7 @@
     }
 }
 
-Status CLConcatenateLayer::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
+Status CLConcatenation::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(output == nullptr);
     const unsigned int num_inputs = inputs_vector.size();
@@ -220,12 +220,7 @@
     return Status{};
 }
 
-MemoryRequirements CLConcatenateLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLConcatenateLayer::run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace)
+void CLConcatenation::run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace)
 {
     ARM_COMPUTE_UNUSED(workspace);
 
@@ -259,11 +254,11 @@
 
 struct CLConcatenateLayer::Impl
 {
-    std::vector<const ICLTensor *>                    srcs{};
-    ICLTensor                                        *dst{ nullptr };
-    unsigned int                                      num_inputs{ 0 };
-    unsigned int                                      axis{ 0 };
-    std::unique_ptr<experimental::CLConcatenateLayer> op{ nullptr };
+    std::vector<const ICLTensor *>                 srcs{};
+    ICLTensor                                     *dst{ nullptr };
+    unsigned int                                   num_inputs{ 0 };
+    unsigned int                                   axis{ 0 };
+    std::unique_ptr<experimental::CLConcatenation> op{ nullptr };
 };
 
 CLConcatenateLayer::CLConcatenateLayer()
@@ -290,7 +285,7 @@
     _impl->dst        = output;
     _impl->axis       = axis;
     _impl->num_inputs = inputs_vector.size();
-    _impl->op         = arm_compute::support::cpp14::make_unique<experimental::CLConcatenateLayer>();
+    _impl->op         = arm_compute::support::cpp14::make_unique<experimental::CLConcatenation>();
 
     std::vector<ITensorInfo *> inputs_vector_info;
     for(unsigned int i = 0; i < inputs_vector.size(); ++i)
@@ -303,7 +298,7 @@
 
 Status CLConcatenateLayer::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
 {
-    return experimental::CLConcatenateLayer::validate(inputs_vector, output, axis);
+    return experimental::CLConcatenation::validate(inputs_vector, output, axis);
 }
 
 void CLConcatenateLayer::run()
diff --git a/src/runtime/CL/functions/CLElementWiseUnaryLayer.cpp b/src/runtime/CL/functions/CLElementWiseUnaryLayer.cpp
index 402b964..f8e9694 100644
--- a/src/runtime/CL/functions/CLElementWiseUnaryLayer.cpp
+++ b/src/runtime/CL/functions/CLElementWiseUnaryLayer.cpp
@@ -32,131 +32,96 @@
 {
 namespace experimental
 {
-void CLRsqrtLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLRsqrt::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::RSQRT);
     _kernel = std::move(k);
 }
 
-Status CLRsqrtLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLRsqrt::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::RSQRT);
 }
 
-MemoryRequirements CLRsqrtLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLExpLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLExp::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::EXP);
     _kernel = std::move(k);
 }
 
-Status CLExpLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLExp::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::EXP);
 }
 
-MemoryRequirements CLExpLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLNegLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLNeg::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::NEG);
     _kernel = std::move(k);
 }
 
-Status CLNegLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLNeg::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::NEG);
 }
 
-MemoryRequirements CLNegLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLSinLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLSin::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::SIN);
     _kernel = std::move(k);
 }
 
-Status CLSinLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLSin::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::SIN);
 }
 
-MemoryRequirements CLSinLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLAbsLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLAbs::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::ABS);
     _kernel = std::move(k);
 }
 
-Status CLAbsLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLAbs::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::ABS);
 }
 
-MemoryRequirements CLAbsLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLLogLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLLog::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::LOG);
     _kernel = std::move(k);
 }
 
-Status CLLogLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLLog::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::LOG);
 }
 
-MemoryRequirements CLLogLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void CLRoundLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLRound::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLElementWiseUnaryLayerKernel>();
     k->configure(compile_context, input, output, ElementWiseUnary::ROUND);
     _kernel = std::move(k);
 }
 
-Status CLRoundLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLRound::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLElementWiseUnaryLayerKernel::validate(input, output, ElementWiseUnary::ROUND);
 }
-
-MemoryRequirements CLRoundLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct CLRsqrtLayer::Impl
 {
-    const ICLTensor                            *src{ nullptr };
-    ICLTensor                                  *dst{ nullptr };
-    std::unique_ptr<experimental::CLRsqrtLayer> op{ nullptr };
+    const ICLTensor                       *src{ nullptr };
+    ICLTensor                             *dst{ nullptr };
+    std::unique_ptr<experimental::CLRsqrt> op{ nullptr };
 };
 
 CLRsqrtLayer::CLRsqrtLayer()
@@ -177,13 +142,13 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLRsqrtLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLRsqrt>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 
 Status CLRsqrtLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLRsqrtLayer::validate(input, output);
+    return experimental::CLRsqrt::validate(input, output);
 }
 
 void CLRsqrtLayer::run()
@@ -196,9 +161,9 @@
 
 struct CLExpLayer::Impl
 {
-    const ICLTensor                          *src{ nullptr };
-    ICLTensor                                *dst{ nullptr };
-    std::unique_ptr<experimental::CLExpLayer> op{ nullptr };
+    const ICLTensor                     *src{ nullptr };
+    ICLTensor                           *dst{ nullptr };
+    std::unique_ptr<experimental::CLExp> op{ nullptr };
 };
 
 CLExpLayer::CLExpLayer()
@@ -219,13 +184,13 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLExpLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLExp>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 
 Status CLExpLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLExpLayer::validate(input, output);
+    return experimental::CLExp::validate(input, output);
 }
 
 void CLExpLayer::run()
@@ -238,9 +203,9 @@
 
 struct CLNegLayer::Impl
 {
-    const ICLTensor                          *src{ nullptr };
-    ICLTensor                                *dst{ nullptr };
-    std::unique_ptr<experimental::CLNegLayer> op{ nullptr };
+    const ICLTensor                     *src{ nullptr };
+    ICLTensor                           *dst{ nullptr };
+    std::unique_ptr<experimental::CLNeg> op{ nullptr };
 };
 
 CLNegLayer::CLNegLayer()
@@ -261,12 +226,12 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLNegLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLNeg>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 Status CLNegLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLNegLayer::validate(input, output);
+    return experimental::CLNeg::validate(input, output);
 }
 
 void CLNegLayer::run()
@@ -279,9 +244,9 @@
 
 struct CLSinLayer::Impl
 {
-    const ICLTensor                          *src{ nullptr };
-    ICLTensor                                *dst{ nullptr };
-    std::unique_ptr<experimental::CLSinLayer> op{ nullptr };
+    const ICLTensor                     *src{ nullptr };
+    ICLTensor                           *dst{ nullptr };
+    std::unique_ptr<experimental::CLSin> op{ nullptr };
 };
 
 CLSinLayer::CLSinLayer()
@@ -302,12 +267,12 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLSinLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLSin>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 Status CLSinLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLSinLayer::validate(input, output);
+    return experimental::CLSin::validate(input, output);
 }
 
 void CLSinLayer::run()
@@ -320,9 +285,9 @@
 
 struct CLAbsLayer::Impl
 {
-    const ICLTensor                          *src{ nullptr };
-    ICLTensor                                *dst{ nullptr };
-    std::unique_ptr<experimental::CLAbsLayer> op{ nullptr };
+    const ICLTensor                     *src{ nullptr };
+    ICLTensor                           *dst{ nullptr };
+    std::unique_ptr<experimental::CLAbs> op{ nullptr };
 };
 
 CLAbsLayer::CLAbsLayer()
@@ -343,12 +308,12 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLAbsLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLAbs>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 Status CLAbsLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLAbsLayer::validate(input, output);
+    return experimental::CLAbs::validate(input, output);
 }
 
 void CLAbsLayer::run()
@@ -361,9 +326,9 @@
 
 struct CLLogLayer::Impl
 {
-    const ICLTensor                          *src{ nullptr };
-    ICLTensor                                *dst{ nullptr };
-    std::unique_ptr<experimental::CLLogLayer> op{ nullptr };
+    const ICLTensor                     *src{ nullptr };
+    ICLTensor                           *dst{ nullptr };
+    std::unique_ptr<experimental::CLLog> op{ nullptr };
 };
 
 CLLogLayer::CLLogLayer()
@@ -384,12 +349,12 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLLogLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLLog>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 Status CLLogLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLLogLayer::validate(input, output);
+    return experimental::CLLog::validate(input, output);
 }
 
 void CLLogLayer::run()
@@ -402,9 +367,9 @@
 
 struct CLRoundLayer::Impl
 {
-    const ICLTensor                            *src{ nullptr };
-    ICLTensor                                  *dst{ nullptr };
-    std::unique_ptr<experimental::CLRoundLayer> op{ nullptr };
+    const ICLTensor                       *src{ nullptr };
+    ICLTensor                             *dst{ nullptr };
+    std::unique_ptr<experimental::CLRound> op{ nullptr };
 };
 
 CLRoundLayer::CLRoundLayer()
@@ -425,12 +390,12 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLRoundLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLRound>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 Status CLRoundLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
-    return experimental::CLRoundLayer::validate(input, output);
+    return experimental::CLRound::validate(input, output);
 }
 
 void CLRoundLayer::run()
diff --git a/src/runtime/CL/functions/CLReshapeLayer.cpp b/src/runtime/CL/functions/CLReshapeLayer.cpp
index d75e798..ac8b176 100644
--- a/src/runtime/CL/functions/CLReshapeLayer.cpp
+++ b/src/runtime/CL/functions/CLReshapeLayer.cpp
@@ -32,29 +32,24 @@
 {
 namespace experimental
 {
-void CLReshapeLayer::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
+void CLReshape::configure(const CLCompileContext &compile_context, const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<CLReshapeLayerKernel>();
     k->configure(compile_context, input, output);
     _kernel = std::move(k);
 }
 
-Status CLReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status CLReshape::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::CLReshapeLayerKernel::validate(input, output);
 }
-
-MemoryRequirements CLReshapeLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct CLReshapeLayer::Impl
 {
-    const ICLTensor                              *src{ nullptr };
-    ICLTensor                                    *dst{ nullptr };
-    std::unique_ptr<experimental::CLReshapeLayer> op{ nullptr };
+    const ICLTensor                         *src{ nullptr };
+    ICLTensor                               *dst{ nullptr };
+    std::unique_ptr<experimental::CLReshape> op{ nullptr };
 };
 
 CLReshapeLayer::CLReshapeLayer()
@@ -75,14 +70,14 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLReshapeLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::CLReshape>();
     _impl->op->configure(compile_context, input->info(), output->info());
 }
 
 Status CLReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(input, output);
-    ARM_COMPUTE_RETURN_ON_ERROR(experimental::CLReshapeLayer::validate(input, output));
+    ARM_COMPUTE_RETURN_ON_ERROR(experimental::CLReshape::validate(input, output));
 
     return Status{};
 }
diff --git a/src/runtime/CL/functions/CLSlice.cpp b/src/runtime/CL/functions/CLSlice.cpp
index b60daee..3689707 100644
--- a/src/runtime/CL/functions/CLSlice.cpp
+++ b/src/runtime/CL/functions/CLSlice.cpp
@@ -60,11 +60,6 @@
 
     return CLStridedSliceKernel::validate(input, output, starts, ends, BiStrides(), 0, slice_end_mask, 0);
 }
-
-MemoryRequirements CLSlice::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct CLSlice::Impl
diff --git a/src/runtime/CL/functions/CLStridedSlice.cpp b/src/runtime/CL/functions/CLStridedSlice.cpp
index d1b1670..bdef078 100644
--- a/src/runtime/CL/functions/CLStridedSlice.cpp
+++ b/src/runtime/CL/functions/CLStridedSlice.cpp
@@ -47,11 +47,6 @@
 {
     return CLStridedSliceKernel::validate(input, output, starts, ends, strides, begin_mask, end_mask, shrink_axis_mask);
 }
-
-MemoryRequirements CLStridedSlice::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct CLStridedSlice::Impl
diff --git a/src/runtime/NEON/INEOperator.cpp b/src/runtime/NEON/INEOperator.cpp
index 3ace8a6..1d81997 100644
--- a/src/runtime/NEON/INEOperator.cpp
+++ b/src/runtime/NEON/INEOperator.cpp
@@ -49,5 +49,10 @@
 {
     ARM_COMPUTE_UNUSED(constants);
 }
+
+MemoryRequirements INEOperator::workspace() const
+{
+    return {};
+}
 } // namespace experimental
 } // namespace arm_compute
diff --git a/src/runtime/NEON/functions/NEActivationLayer.cpp b/src/runtime/NEON/functions/NEActivationLayer.cpp
index afa220f..0e75e58 100644
--- a/src/runtime/NEON/functions/NEActivationLayer.cpp
+++ b/src/runtime/NEON/functions/NEActivationLayer.cpp
@@ -45,11 +45,6 @@
 {
     return NEActivationLayerKernel::validate(input, output, activation_info);
 }
-
-MemoryRequirements NEActivationLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEActivationLayer::Impl
diff --git a/src/runtime/NEON/functions/NEArithmeticAddition.cpp b/src/runtime/NEON/functions/NEArithmeticAddition.cpp
index 95cee0e..b18309e 100644
--- a/src/runtime/NEON/functions/NEArithmeticAddition.cpp
+++ b/src/runtime/NEON/functions/NEArithmeticAddition.cpp
@@ -45,10 +45,6 @@
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEArithmeticAdditionKernel::validate(input1, input2, output, policy);
 }
-MemoryRequirements NEArithmeticAddition::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEArithmeticAddition::Impl
diff --git a/src/runtime/NEON/functions/NEArithmeticSubtraction.cpp b/src/runtime/NEON/functions/NEArithmeticSubtraction.cpp
index a69e78d..c7f492b 100644
--- a/src/runtime/NEON/functions/NEArithmeticSubtraction.cpp
+++ b/src/runtime/NEON/functions/NEArithmeticSubtraction.cpp
@@ -46,11 +46,6 @@
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEArithmeticSubtractionKernel::validate(input1, input2, output, policy);
 }
-
-MemoryRequirements NEArithmeticSubtraction::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEArithmeticSubtraction::Impl
diff --git a/src/runtime/NEON/functions/NEConcatenateLayer.cpp b/src/runtime/NEON/functions/NEConcatenateLayer.cpp
index 37cdd15..9f8a2a1 100644
--- a/src/runtime/NEON/functions/NEConcatenateLayer.cpp
+++ b/src/runtime/NEON/functions/NEConcatenateLayer.cpp
@@ -41,12 +41,12 @@
 {
 namespace experimental
 {
-NEConcatenateLayer::NEConcatenateLayer()
+NEConcatenation::NEConcatenation()
     : _concat_kernels(), _num_inputs(0), _axis(0)
 {
 }
 
-void NEConcatenateLayer::configure(const std::vector<const ITensorInfo *> &inputs_vector, ITensorInfo *output, size_t axis)
+void NEConcatenation::configure(const std::vector<const ITensorInfo *> &inputs_vector, ITensorInfo *output, size_t axis)
 {
     ARM_COMPUTE_ERROR_ON(output == nullptr);
 
@@ -100,7 +100,7 @@
     }
 }
 
-Status NEConcatenateLayer::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
+Status NEConcatenation::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
 {
     ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(output);
     ARM_COMPUTE_RETURN_ERROR_ON(inputs_vector.size() < 2);
@@ -146,12 +146,7 @@
     return Status{};
 }
 
-MemoryRequirements NEConcatenateLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
-
-void NEConcatenateLayer::run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace)
+void NEConcatenation::run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace)
 {
     ARM_COMPUTE_UNUSED(workspace);
 
@@ -177,11 +172,11 @@
 
 struct NEConcatenateLayer::Impl
 {
-    std::vector<const ITensor *>                      srcs{};
-    ITensor                                          *dst{ nullptr };
-    unsigned int                                      num_inputs{ 0 };
-    unsigned int                                      axis{ 0 };
-    std::unique_ptr<experimental::NEConcatenateLayer> op{ nullptr };
+    std::vector<const ITensor *>                   srcs{};
+    ITensor                                       *dst{ nullptr };
+    unsigned int                                   num_inputs{ 0 };
+    unsigned int                                   axis{ 0 };
+    std::unique_ptr<experimental::NEConcatenation> op{ nullptr };
 };
 
 NEConcatenateLayer::NEConcatenateLayer()
@@ -203,7 +198,7 @@
     _impl->dst        = output;
     _impl->axis       = axis;
     _impl->num_inputs = inputs_vector.size();
-    _impl->op         = arm_compute::support::cpp14::make_unique<experimental::NEConcatenateLayer>();
+    _impl->op         = arm_compute::support::cpp14::make_unique<experimental::NEConcatenation>();
 
     std::vector<const ITensorInfo *> inputs_vector_info;
     for(unsigned int i = 0; i < inputs_vector.size(); ++i)
@@ -216,7 +211,7 @@
 
 Status NEConcatenateLayer::validate(const std::vector<const ITensorInfo *> &inputs_vector, const ITensorInfo *output, size_t axis)
 {
-    return experimental::NEConcatenateLayer::validate(inputs_vector, output, axis);
+    return experimental::NEConcatenation::validate(inputs_vector, output, axis);
 }
 
 void NEConcatenateLayer::run()
diff --git a/src/runtime/NEON/functions/NEElementwiseOperators.cpp b/src/runtime/NEON/functions/NEElementwiseOperators.cpp
index 28039d6..9340cc0 100644
--- a/src/runtime/NEON/functions/NEElementwiseOperators.cpp
+++ b/src/runtime/NEON/functions/NEElementwiseOperators.cpp
@@ -34,101 +34,66 @@
 {
 namespace experimental
 {
-void NEElementwiseMax::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
+void NEElementwiseMax::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
-    ARM_COMPUTE_UNUSED(act_info);
     auto k = arm_compute::support::cpp14::make_unique<NEArithmeticOperationKernel>();
     k->configure(ArithmeticOperation::MAX, input1, input2, output);
     _kernel = std::move(k);
 }
 
-Status NEElementwiseMax::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status NEElementwiseMax::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output)
 {
-    ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEArithmeticOperationKernel::validate(ArithmeticOperation::MAX, input1, input2, output);
 }
 
-MemoryRequirements NEElementwiseMax::workspace() const
+void NEElementwiseMin::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
-    return MemoryRequirements{};
-}
-
-void NEElementwiseMin::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
-{
-    ARM_COMPUTE_UNUSED(act_info);
     auto k = arm_compute::support::cpp14::make_unique<NEArithmeticOperationKernel>();
     k->configure(ArithmeticOperation::MIN, input1, input2, output);
     _kernel = std::move(k);
 }
 
-Status NEElementwiseMin::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status NEElementwiseMin::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output)
 {
-    ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEArithmeticOperationKernel::validate(ArithmeticOperation::MIN, input1, input2, output);
 }
 
-MemoryRequirements NEElementwiseMin::workspace() const
+void NEElementwiseSquaredDiff::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
-    return MemoryRequirements{};
-}
-
-void NEElementwiseSquaredDiff::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
-{
-    ARM_COMPUTE_UNUSED(act_info);
     auto k = arm_compute::support::cpp14::make_unique<NEArithmeticOperationKernel>();
     k->configure(ArithmeticOperation::SQUARED_DIFF, input1, input2, output);
     _kernel = std::move(k);
 }
 
-Status NEElementwiseSquaredDiff::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status NEElementwiseSquaredDiff::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output)
 {
-    ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEArithmeticOperationKernel::validate(ArithmeticOperation::SQUARED_DIFF, input1, input2, output);
 }
 
-MemoryRequirements NEElementwiseSquaredDiff::workspace() const
+void NEElementwiseDivision::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
-    return MemoryRequirements{};
-}
-
-void NEElementwiseDivision::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
-{
-    ARM_COMPUTE_UNUSED(act_info);
     auto k = arm_compute::support::cpp14::make_unique<NEDivisionOperationKernel>();
     k->configure(input1, input2, output);
     _kernel = std::move(k);
 }
 
-Status NEElementwiseDivision::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status NEElementwiseDivision::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output)
 {
-    ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEDivisionOperationKernel::validate(input1, input2, output);
 }
 
-MemoryRequirements NEElementwiseDivision::workspace() const
+void NEElementwisePower::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
-    return MemoryRequirements{};
-}
-
-void NEElementwisePower::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
-{
-    ARM_COMPUTE_UNUSED(act_info);
     auto k = arm_compute::support::cpp14::make_unique<NEPowerOperationKernel>();
     k->configure(input1, input2, output);
     _kernel = std::move(k);
 }
 
-Status NEElementwisePower::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
+Status NEElementwisePower::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output)
 {
-    ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEPowerOperationKernel::validate(input1, input2, output);
 }
 
-MemoryRequirements NEElementwisePower::workspace() const
-{
-    return MemoryRequirements{};
-}
-
 template <ComparisonOperation COP>
 void NEElementwiseComparisonStatic<COP>::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output)
 {
@@ -143,12 +108,6 @@
     return NEComparisonOperationKernel::validate(COP, input1, input2, output);
 }
 
-template <ComparisonOperation COP>
-MemoryRequirements            NEElementwiseComparisonStatic<COP>::workspace() const
-{
-    return MemoryRequirements{};
-}
-
 void NEElementwiseComparison::configure(const ITensorInfo *input1, const ITensorInfo *input2, ITensorInfo *output, ComparisonOperation op)
 {
     auto k = arm_compute::support::cpp14::make_unique<NEComparisonOperationKernel>();
@@ -161,11 +120,6 @@
     return NEComparisonOperationKernel::validate(op, input1, input2, output);
 }
 
-MemoryRequirements NEElementwiseComparison::workspace() const
-{
-    return MemoryRequirements{};
-}
-
 // Supported Specializations
 template class NEElementwiseComparisonStatic<ComparisonOperation::Equal>;
 template class NEElementwiseComparisonStatic<ComparisonOperation::NotEqual>;
@@ -193,17 +147,18 @@
 
 void NEElementwiseMax::configure(ITensor *input1, ITensor *input2, ITensor *output, const ActivationLayerInfo &act_info)
 {
+    ARM_COMPUTE_UNUSED(act_info);
     _impl->src_0 = input1;
     _impl->src_1 = input2;
     _impl->dst   = output;
     _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEElementwiseMax>();
-    _impl->op->configure(input1->info(), input2->info(), output->info(), act_info);
+    _impl->op->configure(input1->info(), input2->info(), output->info());
 }
 
 Status NEElementwiseMax::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
-    return experimental::NEElementwiseMax::validate(input1, input2, output, act_info);
+    return experimental::NEElementwiseMax::validate(input1, input2, output);
 }
 
 void NEElementwiseMax::run()
@@ -231,17 +186,18 @@
 
 void NEElementwiseMin::configure(ITensor *input1, ITensor *input2, ITensor *output, const ActivationLayerInfo &act_info)
 {
+    ARM_COMPUTE_UNUSED(act_info);
     _impl->src_0 = input1;
     _impl->src_1 = input2;
     _impl->dst   = output;
     _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEElementwiseMin>();
-    _impl->op->configure(input1->info(), input2->info(), output->info(), act_info);
+    _impl->op->configure(input1->info(), input2->info(), output->info());
 }
 
 Status NEElementwiseMin::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
-    return experimental::NEElementwiseMin::validate(input1, input2, output, act_info);
+    return experimental::NEElementwiseMin::validate(input1, input2, output);
 }
 
 void NEElementwiseMin::run()
@@ -269,17 +225,18 @@
 
 void NEElementwiseSquaredDiff::configure(ITensor *input1, ITensor *input2, ITensor *output, const ActivationLayerInfo &act_info)
 {
+    ARM_COMPUTE_UNUSED(act_info);
     _impl->src_0 = input1;
     _impl->src_1 = input2;
     _impl->dst   = output;
     _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEElementwiseSquaredDiff>();
-    _impl->op->configure(input1->info(), input2->info(), output->info(), act_info);
+    _impl->op->configure(input1->info(), input2->info(), output->info());
 }
 
 Status NEElementwiseSquaredDiff::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
-    return experimental::NEElementwiseSquaredDiff::validate(input1, input2, output, act_info);
+    return experimental::NEElementwiseSquaredDiff::validate(input1, input2, output);
 }
 
 void NEElementwiseSquaredDiff::run()
@@ -312,13 +269,13 @@
     _impl->src_1 = input2;
     _impl->dst   = output;
     _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEElementwiseDivision>();
-    _impl->op->configure(input1->info(), input2->info(), output->info(), act_info);
+    _impl->op->configure(input1->info(), input2->info(), output->info());
 }
 
 Status NEElementwiseDivision::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
-    return experimental::NEElementwiseDivision::validate(input1, input2, output, act_info);
+    return experimental::NEElementwiseDivision::validate(input1, input2, output);
 }
 
 void NEElementwiseDivision::run()
@@ -351,13 +308,13 @@
     _impl->src_1 = input2;
     _impl->dst   = output;
     _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEElementwisePower>();
-    _impl->op->configure(input1->info(), input2->info(), output->info(), act_info);
+    _impl->op->configure(input1->info(), input2->info(), output->info());
 }
 
 Status NEElementwisePower::validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
-    return experimental::NEElementwisePower::validate(input1, input2, output, act_info);
+    return experimental::NEElementwisePower::validate(input1, input2, output);
 }
 
 void NEElementwisePower::run()
diff --git a/src/runtime/NEON/functions/NEPReluLayer.cpp b/src/runtime/NEON/functions/NEPReluLayer.cpp
index c54c706..15d9fd9 100644
--- a/src/runtime/NEON/functions/NEPReluLayer.cpp
+++ b/src/runtime/NEON/functions/NEPReluLayer.cpp
@@ -31,30 +31,25 @@
 {
 namespace experimental
 {
-void NEPReluLayer::configure(const ITensorInfo *input, const ITensorInfo *alpha, ITensorInfo *output)
+void NEPRelu::configure(const ITensorInfo *input, const ITensorInfo *alpha, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<NEArithmeticOperationKernel>();
     k->configure(ArithmeticOperation::PRELU, input, alpha, output);
     _kernel = std::move(k);
 }
 
-Status NEPReluLayer::validate(const ITensorInfo *input, const ITensorInfo *alpha, const ITensorInfo *output)
+Status NEPRelu::validate(const ITensorInfo *input, const ITensorInfo *alpha, const ITensorInfo *output)
 {
     return NEArithmeticOperationKernel::validate(ArithmeticOperation::PRELU, input, alpha, output);
 }
-
-MemoryRequirements NEPReluLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // nsamespace experimental
 
 struct NEPReluLayer::Impl
 {
-    const ITensor                              *src_0{ nullptr };
-    const ITensor                              *src_1{ nullptr };
-    ITensor                                    *dst{ nullptr };
-    std::unique_ptr<experimental::NEPReluLayer> op{ nullptr };
+    const ITensor                         *src_0{ nullptr };
+    const ITensor                         *src_1{ nullptr };
+    ITensor                               *dst{ nullptr };
+    std::unique_ptr<experimental::NEPRelu> op{ nullptr };
 };
 
 NEPReluLayer::NEPReluLayer()
@@ -70,7 +65,7 @@
     _impl->src_0 = input;
     _impl->src_1 = alpha;
     _impl->dst   = output;
-    _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEPReluLayer>();
+    _impl->op    = arm_compute::support::cpp14::make_unique<experimental::NEPRelu>();
     _impl->op->configure(input->info(), alpha->info(), output->info());
 }
 
@@ -83,6 +78,6 @@
 
 Status NEPReluLayer::validate(const ITensorInfo *input, const ITensorInfo *alpha, const ITensorInfo *output)
 {
-    return experimental::NEPReluLayer::validate(input, alpha, output);
+    return experimental::NEPRelu::validate(input, alpha, output);
 }
 } // namespace arm_compute
diff --git a/src/runtime/NEON/functions/NEPixelWiseMultiplication.cpp b/src/runtime/NEON/functions/NEPixelWiseMultiplication.cpp
index 3d51e0d..ba5dd7c 100644
--- a/src/runtime/NEON/functions/NEPixelWiseMultiplication.cpp
+++ b/src/runtime/NEON/functions/NEPixelWiseMultiplication.cpp
@@ -48,11 +48,6 @@
     return NEPixelWiseMultiplicationKernel::validate(input1, input2, output, scale, overflow_policy, rounding_policy);
 }
 
-MemoryRequirements NEPixelWiseMultiplication::workspace() const
-{
-    return MemoryRequirements{};
-}
-
 void NEComplexPixelWiseMultiplication::configure(ITensorInfo *input1, ITensorInfo *input2, ITensorInfo *output, const ActivationLayerInfo &act_info)
 {
     ARM_COMPUTE_UNUSED(act_info);
@@ -66,11 +61,6 @@
     ARM_COMPUTE_RETURN_ERROR_ON(act_info.enabled());
     return NEComplexPixelWiseMultiplicationKernel::validate(input1, input2, output);
 }
-
-MemoryRequirements NEComplexPixelWiseMultiplication::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEPixelWiseMultiplication::Impl
diff --git a/src/runtime/NEON/functions/NEReshapeLayer.cpp b/src/runtime/NEON/functions/NEReshapeLayer.cpp
index 101fdbd..47d5519 100644
--- a/src/runtime/NEON/functions/NEReshapeLayer.cpp
+++ b/src/runtime/NEON/functions/NEReshapeLayer.cpp
@@ -35,29 +35,24 @@
 {
 namespace experimental
 {
-void NEReshapeLayer::configure(const ITensorInfo *input, ITensorInfo *output)
+void NEReshape::configure(const ITensorInfo *input, ITensorInfo *output)
 {
     auto k = arm_compute::support::cpp14::make_unique<NEReshapeLayerKernel>();
     k->configure(input, output);
     _kernel = std::move(k);
 }
 
-Status NEReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
+Status NEReshape::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     return arm_compute::NEReshapeLayerKernel::validate(input, output);
 }
-
-MemoryRequirements NEReshapeLayer::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEReshapeLayer::Impl
 {
-    const ITensor                                *src{ nullptr };
-    ITensor                                      *dst{ nullptr };
-    std::unique_ptr<experimental::NEReshapeLayer> op{ nullptr };
+    const ITensor                           *src{ nullptr };
+    ITensor                                 *dst{ nullptr };
+    std::unique_ptr<experimental::NEReshape> op{ nullptr };
 };
 
 NEReshapeLayer::NEReshapeLayer()
@@ -75,14 +70,14 @@
 {
     _impl->src = input;
     _impl->dst = output;
-    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::NEReshapeLayer>();
+    _impl->op  = arm_compute::support::cpp14::make_unique<experimental::NEReshape>();
     _impl->op->configure(input->info(), output->info());
 }
 
 Status NEReshapeLayer::validate(const ITensorInfo *input, const ITensorInfo *output)
 {
     ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(input, output);
-    ARM_COMPUTE_RETURN_ON_ERROR(experimental::NEReshapeLayer::validate(input, output));
+    ARM_COMPUTE_RETURN_ON_ERROR(experimental::NEReshape::validate(input, output));
 
     return Status{};
 }
diff --git a/src/runtime/NEON/functions/NESlice.cpp b/src/runtime/NEON/functions/NESlice.cpp
index 15fbe8d..7c32521 100644
--- a/src/runtime/NEON/functions/NESlice.cpp
+++ b/src/runtime/NEON/functions/NESlice.cpp
@@ -62,11 +62,6 @@
 
     return NEStridedSliceKernel::validate(input, output, starts, ends, BiStrides(), 0, slice_end_mask, 0);
 }
-
-MemoryRequirements NESlice::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NESlice::Impl
diff --git a/src/runtime/NEON/functions/NEStridedSlice.cpp b/src/runtime/NEON/functions/NEStridedSlice.cpp
index 243c017..37e3590 100644
--- a/src/runtime/NEON/functions/NEStridedSlice.cpp
+++ b/src/runtime/NEON/functions/NEStridedSlice.cpp
@@ -47,11 +47,6 @@
 {
     return NEStridedSliceKernel::validate(input, output, starts, ends, strides, begin_mask, end_mask, shrink_axis_mask);
 }
-
-MemoryRequirements NEStridedSlice::workspace() const
-{
-    return MemoryRequirements{};
-}
 } // namespace experimental
 
 struct NEStridedSlice::Impl