COMPMID-2639: CLPadLayer support for 4D padding

Add support for 4D padding to CLPadLayerKernel.
Add validation tests with 4D padding.

Change-Id: I5579cc441a155c03fa1d14c6e77ba8ec693a806d
Signed-off-by: Matthew Jackson <matthew.jackson@arm.com>
Reviewed-on: https://review.mlplatform.org/c/1847
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/src/core/CL/kernels/CLPadLayerKernel.cpp b/src/core/CL/kernels/CLPadLayerKernel.cpp
index 5270e31..52b65c3 100644
--- a/src/core/CL/kernels/CLPadLayerKernel.cpp
+++ b/src/core/CL/kernels/CLPadLayerKernel.cpp
@@ -99,6 +99,12 @@
         {
             build_opts.add_option("-DPAD_NEAR=" + support::cpp11::to_string(padding.at(2).first));
             build_opts.add_option("-DSRC_DEPTH=" + support::cpp11::to_string(input->info()->dimension(2)));
+
+            if(padding.size() > 3)
+            {
+                build_opts.add_option("-DPAD_BTOP=" + support::cpp11::to_string(padding.at(3).first));
+                build_opts.add_option("-DSRC_BATCH=" + support::cpp11::to_string(input->info()->dimension(3)));
+            }
         }
     }
 
@@ -130,11 +136,13 @@
 
     Window slice_out = window.first_slice_window_3D();
     Window slice_in  = win_in.first_slice_window_3D();
+    unsigned int batch = 0;
     do
     {
         unsigned int idx = 0;
         add_3D_tensor_argument(idx, _input, slice_in);
         add_3D_tensor_argument(idx, _output, slice_out);
+        add_argument<unsigned int>(idx, batch++);
 
         enqueue(queue, *this, slice_out, lws_hint());
     }