diff --git a/src/runtime/NEON/functions/NEConvolutionLayer.cpp b/src/runtime/NEON/functions/NEConvolutionLayer.cpp
index 6e25b42..8bd1119 100644
--- a/src/runtime/NEON/functions/NEConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEConvolutionLayer.cpp
@@ -30,7 +30,7 @@
 #include "src/core/helpers/MemoryHelpers.h"
 #include "src/runtime/cpu/operators/CpuConv2d.h"
 #include "src/runtime/cpu/operators/CpuDirectConv2d.h"
-#include "src/runtime/cpu/operators/CpuGemmConvolution.h"
+#include "src/runtime/cpu/operators/CpuGemmConv2d.h"
 #include "src/runtime/cpu/operators/CpuGemmDirectConv2d.h"
 #include "src/runtime/cpu/operators/CpuWinogradConv2d.h"
 
diff --git a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
index c32584e..47ab168 100644
--- a/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEGEMMConvolutionLayer.cpp
@@ -28,7 +28,7 @@
 #include "arm_compute/core/Validate.h"
 #include "arm_compute/runtime/Tensor.h"
 #include "src/core/helpers/MemoryHelpers.h"
-#include "src/runtime/cpu/operators/CpuGemmConvolution.h"
+#include "src/runtime/cpu/operators/CpuGemmConv2d.h"
 
 using namespace arm_compute::experimental;
 
@@ -36,14 +36,14 @@
 {
 struct NEGEMMConvolutionLayer::Impl
 {
-    const ITensor                           *weights{ nullptr };
-    std::unique_ptr<cpu::CpuGemmConvolution> op{ nullptr };
-    ITensorPack                              run_pack{};
-    MemoryGroup                              memory_group{};
-    IWeightsManager                         *weights_manager{ nullptr };
-    MemoryRequirements                       aux_mem_req{};
-    WorkspaceData<Tensor>                    workspace_tensors{};
-    bool                                     is_prepared{ false };
+    const ITensor                      *weights{ nullptr };
+    std::unique_ptr<cpu::CpuGemmConv2d> op{ nullptr };
+    ITensorPack                         run_pack{};
+    MemoryGroup                         memory_group{};
+    IWeightsManager                    *weights_manager{ nullptr };
+    MemoryRequirements                  aux_mem_req{};
+    WorkspaceData<Tensor>               workspace_tensors{};
+    bool                                is_prepared{ false };
 };
 
 NEGEMMConvolutionLayer::NEGEMMConvolutionLayer(const std::shared_ptr<IMemoryManager> &memory_manager, IWeightsManager *weights_manager)
@@ -59,7 +59,7 @@
 {
     ARM_COMPUTE_ERROR_ON_NULLPTR(input, weights, output);
     _impl->weights = weights;
-    _impl->op      = std::make_unique<cpu::CpuGemmConvolution>();
+    _impl->op      = std::make_unique<cpu::CpuGemmConv2d>();
     _impl->op->configure(input->info(), weights->info(), (biases != nullptr ? biases->info() : nullptr), output->info(), conv_info, weights_info, dilation, act_info, enable_fast_math, num_groups);
 
     _impl->run_pack =
@@ -76,7 +76,7 @@
 Status NEGEMMConvolutionLayer::validate(const ITensorInfo *input, const ITensorInfo *weights, const ITensorInfo *biases, const ITensorInfo *output, const PadStrideInfo &conv_info,
                                         const WeightsInfo &weights_info, const Size2D &dilation, const ActivationLayerInfo &act_info, bool enable_fast_math, unsigned int num_groups)
 {
-    return cpu::CpuGemmConvolution::validate(input, weights, biases, output, conv_info, weights_info, dilation, act_info, enable_fast_math, num_groups);
+    return cpu::CpuGemmConv2d::validate(input, weights, biases, output, conv_info, weights_info, dilation, act_info, enable_fast_math, num_groups);
 }
 
 void NEGEMMConvolutionLayer::run()
