diff --git a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
index 39ff279..ba5c900 100644
--- a/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLogSoftmaxWorkload.cpp
@@ -23,12 +23,11 @@
     const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);
     const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);
 
-    int aclAxis_int = ComputeAclAxis(descriptor.m_Axis, input);
-    unsigned int aclAxis = ComputePositiveAxis(aclAxis_int, input);
+    int aclAxis = ComputeAclAxis(descriptor.m_Axis, input);
     return arm_compute::NELogSoftmaxLayer::validate(&aclInputInfo,
                                                     &aclOutputInfo,
                                                     descriptor.m_Beta,
-                                                    static_cast<int>(aclAxis));
+                                                    aclAxis);
 }
 
 NeonLogSoftmaxWorkload::NeonLogSoftmaxWorkload(const LogSoftmaxQueueDescriptor& descriptor,
@@ -42,9 +41,8 @@
     arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
 
     auto layer = std::make_unique<arm_compute::NELogSoftmaxLayer>(memoryManager);
-    int aclAxis_int = ComputeAclAxis(m_Data.m_Parameters.m_Axis, info.m_InputTensorInfos[0]);
-    unsigned int aclAxis = ComputePositiveAxis(aclAxis_int, info.m_InputTensorInfos[0]);
-    layer->configure(&input, &output, m_Data.m_Parameters.m_Beta, static_cast<int>(aclAxis));
+    int aclAxis = ComputeAclAxis(m_Data.m_Parameters.m_Axis, info.m_InputTensorInfos[0]);
+    layer->configure(&input, &output, m_Data.m_Parameters.m_Beta, aclAxis);
     m_LogSoftmaxLayer.reset(layer.release());
 }
 
diff --git a/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp b/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
index 7e1501f..505844e 100644
--- a/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSoftmaxWorkload.cpp
@@ -23,12 +23,11 @@
     const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);
     const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);
 
-    int aclAxis_int = ComputeAclAxis(descriptor.m_Axis, input);
-    unsigned int aclAxis = ComputePositiveAxis(aclAxis_int, input);
+    int aclAxis = ComputeAclAxis(descriptor.m_Axis, input);
     return arm_compute::NESoftmaxLayer::validate(&aclInputInfo,
                                                  &aclOutputInfo,
                                                  descriptor.m_Beta,
-                                                 static_cast<int>(aclAxis));
+                                                 aclAxis);
 }
 
 NeonSoftmaxWorkload::NeonSoftmaxWorkload(const SoftmaxQueueDescriptor& descriptor,
@@ -42,9 +41,8 @@
     arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
 
     auto layer = std::make_unique<arm_compute::NESoftmaxLayer>(memoryManager);
-    int aclAxis_int = ComputeAclAxis(m_Data.m_Parameters.m_Axis, info.m_InputTensorInfos[0]);
-    unsigned int aclAxis = ComputePositiveAxis(aclAxis_int, info.m_InputTensorInfos[0]);
-    layer->configure(&input, &output, m_Data.m_Parameters.m_Beta, static_cast<int>(aclAxis));
+    int aclAxis = ComputeAclAxis(m_Data.m_Parameters.m_Axis, info.m_InputTensorInfos[0]);
+    layer->configure(&input, &output, m_Data.m_Parameters.m_Beta, aclAxis);
     m_SoftmaxLayer.reset(layer.release());
 }
 
