Avoid division with zero

- Check pixel alignment before calculating the padding extension for
CLGEMMReshapeRHSKernel
- Add missing control flow in NEWinogradLayer to avoid division with
zero for N_Blocks

Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I53fa432e0a4c463840917d81bedeb64a29bb07a4
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5177
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Manuel Bottini <manuel.bottini@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
diff --git a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
index 21a4b79..dc3bbbe 100644
--- a/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
+++ b/src/runtime/NEON/functions/NEWinogradConvolutionLayer.cpp
@@ -336,8 +336,8 @@
     _output      = output;
     _is_prepared = false;
 
-    int n_gemms = 0;
-    int N_BLOCK = 0; // Size of block used by GEMM.
+    int n_gemms = 1;
+    int N_BLOCK = 1; // Size of block used by GEMM.
 
     std::unique_ptr<INEWinogradLayerTransformInputKernel>   transform_input_kernel;
     std::unique_ptr<INEWinogradLayerTransformWeightsKernel> transform_weights_kernel;
@@ -452,6 +452,10 @@
         }
     }
 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
+    else
+    {
+        ARM_COMPUTE_ERROR("Not supported.");
+    }
 
     const PaddingType use_padding_type = (conv_info.pad_top() != 0u || conv_info.pad_left() != 0) ? PADDING_SAME : PADDING_VALID;
     const bool        use_same_padding = use_padding_type == PADDING_SAME;