COMPMID-1866: Revisit padding and window on CLDepthwiseConvolutionNHWC

Change-Id: I1fd20ebb5f3295722c833a599ea82798ceff6e01
Reviewed-on: https://review.mlplatform.org/471
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
diff --git a/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp b/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp
index 4f3636b..594d0b6 100644
--- a/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp
+++ b/src/core/CL/kernels/CLDepthwiseConvolutionLayer3x3NHWCKernel.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -112,8 +112,8 @@
 
     AccessWindowStatic input_access(input, 0, -border_size.top, ceil_to_multiple(input->dimension(0), num_elems_accessed_per_iteration),
                                     ceil_to_multiple(input->dimension(1) + border_size.bottom, num_rows_read_per_iteration));
-    AccessWindowRectangle  output_access(output, 0, 0, num_elems_accessed_per_iteration, num_rows_written_per_iteration);
-    AccessWindowHorizontal weights_access(weights, 0, num_elems_accessed_per_iteration);
+    AccessWindowRectangle output_access(output, 0, 0, num_elems_accessed_per_iteration, num_rows_written_per_iteration);
+    AccessWindowStatic    weights_access(weights, 0, 0, ceil_to_multiple(weights->dimension(0), num_elems_accessed_per_iteration), weights->dimension(1));
 
     bool window_changed = update_window_and_padding(win, input_access, weights_access, output_access);
 
diff --git a/src/core/CL/kernels/CLGEMMMatrixMultiplyKernel.cpp b/src/core/CL/kernels/CLGEMMMatrixMultiplyKernel.cpp
index 89fe7a4..b667621 100644
--- a/src/core/CL/kernels/CLGEMMMatrixMultiplyKernel.cpp
+++ b/src/core/CL/kernels/CLGEMMMatrixMultiplyKernel.cpp
@@ -166,10 +166,10 @@
         win     = calculate_max_window(tmp_info, Steps(num_elems_processed_per_iteration_x, num_elems_processed_per_iteration_y));
         win_out = calculate_max_window(*output, Steps(num_elems_processed_per_iteration_x, num_elems_processed_per_iteration_y));
 
-        AccessWindowRectangle input0_access(input0, 0, 0, num_elems_processed_per_iteration_y, 1, 1.f, 0.25f);
-        AccessWindowStatic    input1_access(input1, 0, 0,
-                                            ceil_to_multiple(input1->dimension(0), num_elems_processed_per_iteration_x),
-                                            ceil_to_multiple(input1->dimension(1), num_elems_processed_per_iteration_y));
+        AccessWindowStatic input0_access(input0, 0, 0, input0->dimension(0), input0->dimension(1));
+        AccessWindowStatic input1_access(input1, 0, 0,
+                                         ceil_to_multiple(input1->dimension(0), num_elems_processed_per_iteration_x),
+                                         ceil_to_multiple(input1->dimension(1), num_elems_processed_per_iteration_y));
         AccessWindowStatic output_access(output, 0, 0,
                                          ceil_to_multiple(output->dimension(0), num_elems_processed_per_iteration_x),
                                          output->dimension(1) + bottom_pad);
diff --git a/src/core/CL/kernels/CLScaleKernel.cpp b/src/core/CL/kernels/CLScaleKernel.cpp
index c56cc6d..dc7535c 100644
--- a/src/core/CL/kernels/CLScaleKernel.cpp
+++ b/src/core/CL/kernels/CLScaleKernel.cpp
@@ -94,14 +94,11 @@
 
             num_elems_processed_per_iteration = 4;
             // Configure kernel window
-            win                                   = calculate_max_window(*output, Steps(num_elems_processed_per_iteration));
-            const ValidRegion &input_valid_region = input->valid_region();
-
-            // Reads can occur within the valid region of the input
+            win = calculate_max_window(*output, Steps(num_elems_processed_per_iteration));
             AccessWindowStatic input_access(input,
-                                            input_valid_region.anchor[0] - border.left, input_valid_region.anchor[1] - border.top,
-                                            input_valid_region.anchor[0] + input_valid_region.shape[0] + border.right,
-                                            input_valid_region.anchor[1] + input_valid_region.shape[1] + border.bottom);
+                                            -border.left, -border.top,
+                                            input->dimension(0) + border.right,
+                                            input->dimension(1) + border.bottom);
             AccessWindowHorizontal output_access(output, 0, num_elems_processed_per_iteration);
 
             output_access.set_valid_region(win, calculate_valid_region_scale(*(input),
@@ -118,7 +115,9 @@
             num_elems_processed_per_iteration = 1;
             // Configure kernel window
             win = calculate_max_window(*output, Steps(num_elems_processed_per_iteration));
-            AccessWindowRectangle  input_access(input, -border.left, -border.top, num_elems_processed_per_iteration, num_elems_processed_per_iteration);
+            AccessWindowStatic input_access(input, -border.left, -border.top,
+                                            input->dimension(0) + border.right,
+                                            input->dimension(1) + border.bottom);
             AccessWindowHorizontal output_access(output, 0, num_elems_processed_per_iteration);
             window_changed = update_window_and_padding(win, input_access, output_access);
             output_access.set_valid_region(win, ValidRegion(Coordinates(), output->tensor_shape()));
@@ -230,10 +229,9 @@
 
     // Set config_id for enabling LWS tuning
     _config_id = "scale_";
-    _config_id += support::cpp11::to_string(border.right);
-    _config_id += (border_mode == BorderMode::REPLICATE? "Bord_rep":"");
+    _config_id += (border_mode == BorderMode::REPLICATE ? "Bord_rep" : "");
     _config_id += (sampling_policy == SamplingPolicy::CENTER ? "center" : "topleft");
-    _config_id += (is_nhwc? "nhwc":"nchw");
+    _config_id += (is_nhwc ? "nhwc" : "nchw");
     _config_id += "_";
     _config_id += support::cpp11::to_string(output->info()->dimension(0));
     _config_id += "_";