COMPMID-1139: Fix SIGSEGV in arm_compute_benchmark

Invalid boundary checks.

Change-Id: I9c346dc15d2080f710b283364e83831fa3466941
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/131029
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp
index be706e2..7877cf5 100644
--- a/src/core/NEON/kernels/NEPoolingLayerKernel.cpp
+++ b/src/core/NEON/kernels/NEPoolingLayerKernel.cpp
@@ -2143,14 +2143,14 @@
 
             for(int y = 0; y < pool_size_y; ++y)
             {
-                if(y + idx_height > window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
+                if(y + idx_height - pool_pad_top >= window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
                 {
                     continue;
                 }
 
                 for(int x = 0; x < pool_size_x; ++x)
                 {
-                    if(x + idx_width > window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
+                    if(x + idx_width - pool_pad_left >= window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
                     {
                         continue;
                     }
@@ -2374,14 +2374,14 @@
 
             for(int y = 0; y < pool_size_y; ++y)
             {
-                if(y + idx_height > window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
+                if(y + idx_height - pool_pad_top >= window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
                 {
                     continue;
                 }
 
                 for(int x = 0; x < pool_size_x; ++x)
                 {
-                    if(x + idx_width > window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
+                    if(x + idx_width - pool_pad_left >= window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
                     {
                         continue;
                     }
@@ -2408,14 +2408,14 @@
             vres = vdupq_n_f32(std::numeric_limits<float>::lowest());
             for(int y = 0; y < pool_size_y; ++y)
             {
-                if(y + idx_height > window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
+                if(y + idx_height - pool_pad_top >= window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
                 {
                     continue;
                 }
 
                 for(int x = 0; x < pool_size_x; ++x)
                 {
-                    if(x + idx_width > window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
+                    if(x + idx_width - pool_pad_left >= window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
                     {
                         continue;
                     }
@@ -2571,14 +2571,14 @@
             // Perform pooling
             for(int y = 0; y < pool_size_y; ++y)
             {
-                if(y + idx_height > window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
+                if(y + idx_height - pool_pad_top >= window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
                 {
                     continue;
                 }
 
                 for(int x = 0; x < pool_size_x; ++x)
                 {
-                    if(x + idx_width > window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
+                    if(x + idx_width - pool_pad_left >= window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
                     {
                         continue;
                     }
@@ -2606,14 +2606,14 @@
 
             for(int y = 0; y < pool_size_y; ++y)
             {
-                if(y + idx_height > window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
+                if(y + idx_height - pool_pad_top >= window_input.z().end() || y + idx_height - pool_pad_top < window_input.z().start())
                 {
                     continue;
                 }
 
                 for(int x = 0; x < pool_size_x; ++x)
                 {
-                    if(x + idx_width > window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
+                    if(x + idx_width - pool_pad_left >= window_input.y().end() || x + idx_width - pool_pad_left < window_input.y().start())
                     {
                         continue;
                     }