aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-03-13 13:08:12 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:49:16 +0000
commitbe0ae93c50bfa3e588111585025278daa8cb0694 (patch)
treed78c13e8846c31587a5acb70b38b13fa7d03200d /src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp
parentae4ce7b411d0f4809ac7d3d90fe89bdb2520dbf6 (diff)
downloadComputeLibrary-be0ae93c50bfa3e588111585025278daa8cb0694.tar.gz
COMPMID-1005: Update Depthwise Convolution form RSH
Change-Id: I3033ddb8de183661010d6c71a83f71132037b139 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/124338 Tested-by: Jenkins <bsgcomp@arm.com> Reviewed-by: Pablo Tello <pablo.tello@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp')
-rw-r--r--src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp1121
1 files changed, 62 insertions, 1059 deletions
diff --git a/src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp b/src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp
index 0ec5a77475..dba2330507 100644
--- a/src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp
+++ b/src/core/NEON/kernels/convolution/depthwise/depthwise_2x2_3x3_2x2_fp32_fp32.cpp
@@ -29,1067 +29,70 @@ using Conv = DepthwiseConvolution<2, 2, 3, 3, 2, 2, float, float>;
using ConvImpl = DepthwiseConvolutionImpl<2, 2, 3, 3, 2, 2, float, float>;
template <>
-const Conv::TileFn Conv::tile_fns
- [max_in_pad_top]
- [max_in_pad_left]
- [max_in_pad_bottom]
- [max_in_pad_right]
- [max_out_pad_bottom]
- [max_out_pad_right] = {
- { // Input pad top = 0
- { // Input pad left = 0
- { // Input pad bottom = 0
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 0, 0, 0, 0>,
- Conv::template process_tile<0, 0, 0, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 0, 0, 1, 0>,
- Conv::template process_tile<0, 0, 0, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 0, 1, 0, 0>,
- Conv::template process_tile<0, 0, 0, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 0, 1, 1, 0>,
- Conv::template process_tile<0, 0, 0, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 0, 2, 0, 0>,
- Conv::template process_tile<0, 0, 0, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 0, 2, 1, 0>,
- Conv::template process_tile<0, 0, 0, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 0, 3, 0, 0>,
- Conv::template process_tile<0, 0, 0, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 0, 3, 1, 0>,
- Conv::template process_tile<0, 0, 0, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 0, 4, 0, 0>,
- Conv::template process_tile<0, 0, 0, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 0, 4, 1, 0>,
- Conv::template process_tile<0, 0, 0, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 0
- { // Input pad bottom = 1
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 1, 0, 0, 0>,
- Conv::template process_tile<0, 0, 1, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 1, 0, 1, 0>,
- Conv::template process_tile<0, 0, 1, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 1, 1, 0, 0>,
- Conv::template process_tile<0, 0, 1, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 1, 1, 1, 0>,
- Conv::template process_tile<0, 0, 1, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 1, 2, 0, 0>,
- Conv::template process_tile<0, 0, 1, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 1, 2, 1, 0>,
- Conv::template process_tile<0, 0, 1, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 1, 3, 0, 0>,
- Conv::template process_tile<0, 0, 1, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 1, 3, 1, 0>,
- Conv::template process_tile<0, 0, 1, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 1, 4, 0, 0>,
- Conv::template process_tile<0, 0, 1, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 1, 4, 1, 0>,
- Conv::template process_tile<0, 0, 1, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 1
- { // Input pad bottom = 2
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 2, 0, 0, 0>,
- Conv::template process_tile<0, 0, 2, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 2, 0, 1, 0>,
- Conv::template process_tile<0, 0, 2, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 2, 1, 0, 0>,
- Conv::template process_tile<0, 0, 2, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 2, 1, 1, 0>,
- Conv::template process_tile<0, 0, 2, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 2, 2, 0, 0>,
- Conv::template process_tile<0, 0, 2, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 2, 2, 1, 0>,
- Conv::template process_tile<0, 0, 2, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 2, 3, 0, 0>,
- Conv::template process_tile<0, 0, 2, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 2, 3, 1, 0>,
- Conv::template process_tile<0, 0, 2, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 2, 4, 0, 0>,
- Conv::template process_tile<0, 0, 2, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 2, 4, 1, 0>,
- Conv::template process_tile<0, 0, 2, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 2
- { // Input pad bottom = 3
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 3, 0, 0, 0>,
- Conv::template process_tile<0, 0, 3, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 3, 0, 1, 0>,
- Conv::template process_tile<0, 0, 3, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 3, 1, 0, 0>,
- Conv::template process_tile<0, 0, 3, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 3, 1, 1, 0>,
- Conv::template process_tile<0, 0, 3, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 3, 2, 0, 0>,
- Conv::template process_tile<0, 0, 3, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 3, 2, 1, 0>,
- Conv::template process_tile<0, 0, 3, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 3, 3, 0, 0>,
- Conv::template process_tile<0, 0, 3, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 3, 3, 1, 0>,
- Conv::template process_tile<0, 0, 3, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 3, 4, 0, 0>,
- Conv::template process_tile<0, 0, 3, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 3, 4, 1, 0>,
- Conv::template process_tile<0, 0, 3, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 3
- { // Input pad bottom = 4
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 4, 0, 0, 0>,
- Conv::template process_tile<0, 0, 4, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 4, 0, 1, 0>,
- Conv::template process_tile<0, 0, 4, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 4, 1, 0, 0>,
- Conv::template process_tile<0, 0, 4, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 4, 1, 1, 0>,
- Conv::template process_tile<0, 0, 4, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 4, 2, 0, 0>,
- Conv::template process_tile<0, 0, 4, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 4, 2, 1, 0>,
- Conv::template process_tile<0, 0, 4, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 4, 3, 0, 0>,
- Conv::template process_tile<0, 0, 4, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 4, 3, 1, 0>,
- Conv::template process_tile<0, 0, 4, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 0, 4, 4, 0, 0>,
- Conv::template process_tile<0, 0, 4, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 0, 4, 4, 1, 0>,
- Conv::template process_tile<0, 0, 4, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 4
- }, // Input pad left = 0
- { // Input pad left = 1
- { // Input pad bottom = 0
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 0, 0, 0, 0>,
- Conv::template process_tile<0, 1, 0, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 0, 0, 1, 0>,
- Conv::template process_tile<0, 1, 0, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 0, 1, 0, 0>,
- Conv::template process_tile<0, 1, 0, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 0, 1, 1, 0>,
- Conv::template process_tile<0, 1, 0, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 0, 2, 0, 0>,
- Conv::template process_tile<0, 1, 0, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 0, 2, 1, 0>,
- Conv::template process_tile<0, 1, 0, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 0, 3, 0, 0>,
- Conv::template process_tile<0, 1, 0, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 0, 3, 1, 0>,
- Conv::template process_tile<0, 1, 0, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 0, 4, 0, 0>,
- Conv::template process_tile<0, 1, 0, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 0, 4, 1, 0>,
- Conv::template process_tile<0, 1, 0, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 0
- { // Input pad bottom = 1
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 1, 0, 0, 0>,
- Conv::template process_tile<0, 1, 1, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 1, 0, 1, 0>,
- Conv::template process_tile<0, 1, 1, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 1, 1, 0, 0>,
- Conv::template process_tile<0, 1, 1, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 1, 1, 1, 0>,
- Conv::template process_tile<0, 1, 1, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 1, 2, 0, 0>,
- Conv::template process_tile<0, 1, 1, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 1, 2, 1, 0>,
- Conv::template process_tile<0, 1, 1, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 1, 3, 0, 0>,
- Conv::template process_tile<0, 1, 1, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 1, 3, 1, 0>,
- Conv::template process_tile<0, 1, 1, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 1, 4, 0, 0>,
- Conv::template process_tile<0, 1, 1, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 1, 4, 1, 0>,
- Conv::template process_tile<0, 1, 1, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 1
- { // Input pad bottom = 2
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 2, 0, 0, 0>,
- Conv::template process_tile<0, 1, 2, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 2, 0, 1, 0>,
- Conv::template process_tile<0, 1, 2, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 2, 1, 0, 0>,
- Conv::template process_tile<0, 1, 2, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 2, 1, 1, 0>,
- Conv::template process_tile<0, 1, 2, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 2, 2, 0, 0>,
- Conv::template process_tile<0, 1, 2, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 2, 2, 1, 0>,
- Conv::template process_tile<0, 1, 2, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 2, 3, 0, 0>,
- Conv::template process_tile<0, 1, 2, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 2, 3, 1, 0>,
- Conv::template process_tile<0, 1, 2, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 2, 4, 0, 0>,
- Conv::template process_tile<0, 1, 2, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 2, 4, 1, 0>,
- Conv::template process_tile<0, 1, 2, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 2
- { // Input pad bottom = 3
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 3, 0, 0, 0>,
- Conv::template process_tile<0, 1, 3, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 3, 0, 1, 0>,
- Conv::template process_tile<0, 1, 3, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 3, 1, 0, 0>,
- Conv::template process_tile<0, 1, 3, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 3, 1, 1, 0>,
- Conv::template process_tile<0, 1, 3, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 3, 2, 0, 0>,
- Conv::template process_tile<0, 1, 3, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 3, 2, 1, 0>,
- Conv::template process_tile<0, 1, 3, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 3, 3, 0, 0>,
- Conv::template process_tile<0, 1, 3, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 3, 3, 1, 0>,
- Conv::template process_tile<0, 1, 3, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 3, 4, 0, 0>,
- Conv::template process_tile<0, 1, 3, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 3, 4, 1, 0>,
- Conv::template process_tile<0, 1, 3, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 3
- { // Input pad bottom = 4
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 4, 0, 0, 0>,
- Conv::template process_tile<0, 1, 4, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 4, 0, 1, 0>,
- Conv::template process_tile<0, 1, 4, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 4, 1, 0, 0>,
- Conv::template process_tile<0, 1, 4, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 4, 1, 1, 0>,
- Conv::template process_tile<0, 1, 4, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 4, 2, 0, 0>,
- Conv::template process_tile<0, 1, 4, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 4, 2, 1, 0>,
- Conv::template process_tile<0, 1, 4, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 4, 3, 0, 0>,
- Conv::template process_tile<0, 1, 4, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 4, 3, 1, 0>,
- Conv::template process_tile<0, 1, 4, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<0, 1, 4, 4, 0, 0>,
- Conv::template process_tile<0, 1, 4, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<0, 1, 4, 4, 1, 0>,
- Conv::template process_tile<0, 1, 4, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 4
- }, // Input pad left = 1
- }, // Input pad top = 0
- { // Input pad top = 1
- { // Input pad left = 0
- { // Input pad bottom = 0
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 0, 0, 0, 0>,
- Conv::template process_tile<1, 0, 0, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 0, 0, 1, 0>,
- Conv::template process_tile<1, 0, 0, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 0, 1, 0, 0>,
- Conv::template process_tile<1, 0, 0, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 0, 1, 1, 0>,
- Conv::template process_tile<1, 0, 0, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 0, 2, 0, 0>,
- Conv::template process_tile<1, 0, 0, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 0, 2, 1, 0>,
- Conv::template process_tile<1, 0, 0, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 0, 3, 0, 0>,
- Conv::template process_tile<1, 0, 0, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 0, 3, 1, 0>,
- Conv::template process_tile<1, 0, 0, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 0, 4, 0, 0>,
- Conv::template process_tile<1, 0, 0, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 0, 4, 1, 0>,
- Conv::template process_tile<1, 0, 0, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 0
- { // Input pad bottom = 1
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 1, 0, 0, 0>,
- Conv::template process_tile<1, 0, 1, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 1, 0, 1, 0>,
- Conv::template process_tile<1, 0, 1, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 1, 1, 0, 0>,
- Conv::template process_tile<1, 0, 1, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 1, 1, 1, 0>,
- Conv::template process_tile<1, 0, 1, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 1, 2, 0, 0>,
- Conv::template process_tile<1, 0, 1, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 1, 2, 1, 0>,
- Conv::template process_tile<1, 0, 1, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 1, 3, 0, 0>,
- Conv::template process_tile<1, 0, 1, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 1, 3, 1, 0>,
- Conv::template process_tile<1, 0, 1, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 1, 4, 0, 0>,
- Conv::template process_tile<1, 0, 1, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 1, 4, 1, 0>,
- Conv::template process_tile<1, 0, 1, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 1
- { // Input pad bottom = 2
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 2, 0, 0, 0>,
- Conv::template process_tile<1, 0, 2, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 2, 0, 1, 0>,
- Conv::template process_tile<1, 0, 2, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 2, 1, 0, 0>,
- Conv::template process_tile<1, 0, 2, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 2, 1, 1, 0>,
- Conv::template process_tile<1, 0, 2, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 2, 2, 0, 0>,
- Conv::template process_tile<1, 0, 2, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 2, 2, 1, 0>,
- Conv::template process_tile<1, 0, 2, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 2, 3, 0, 0>,
- Conv::template process_tile<1, 0, 2, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 2, 3, 1, 0>,
- Conv::template process_tile<1, 0, 2, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 2, 4, 0, 0>,
- Conv::template process_tile<1, 0, 2, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 2, 4, 1, 0>,
- Conv::template process_tile<1, 0, 2, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 2
- { // Input pad bottom = 3
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 3, 0, 0, 0>,
- Conv::template process_tile<1, 0, 3, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 3, 0, 1, 0>,
- Conv::template process_tile<1, 0, 3, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 3, 1, 0, 0>,
- Conv::template process_tile<1, 0, 3, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 3, 1, 1, 0>,
- Conv::template process_tile<1, 0, 3, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 3, 2, 0, 0>,
- Conv::template process_tile<1, 0, 3, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 3, 2, 1, 0>,
- Conv::template process_tile<1, 0, 3, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 3, 3, 0, 0>,
- Conv::template process_tile<1, 0, 3, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 3, 3, 1, 0>,
- Conv::template process_tile<1, 0, 3, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 3, 4, 0, 0>,
- Conv::template process_tile<1, 0, 3, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 3, 4, 1, 0>,
- Conv::template process_tile<1, 0, 3, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 3
- { // Input pad bottom = 4
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 4, 0, 0, 0>,
- Conv::template process_tile<1, 0, 4, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 4, 0, 1, 0>,
- Conv::template process_tile<1, 0, 4, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 4, 1, 0, 0>,
- Conv::template process_tile<1, 0, 4, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 4, 1, 1, 0>,
- Conv::template process_tile<1, 0, 4, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 4, 2, 0, 0>,
- Conv::template process_tile<1, 0, 4, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 4, 2, 1, 0>,
- Conv::template process_tile<1, 0, 4, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 4, 3, 0, 0>,
- Conv::template process_tile<1, 0, 4, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 4, 3, 1, 0>,
- Conv::template process_tile<1, 0, 4, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 0, 4, 4, 0, 0>,
- Conv::template process_tile<1, 0, 4, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 0, 4, 4, 1, 0>,
- Conv::template process_tile<1, 0, 4, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 4
- }, // Input pad left = 0
- { // Input pad left = 1
- { // Input pad bottom = 0
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 0, 0, 0, 0>,
- Conv::template process_tile<1, 1, 0, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 0, 0, 1, 0>,
- Conv::template process_tile<1, 1, 0, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 0, 1, 0, 0>,
- Conv::template process_tile<1, 1, 0, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 0, 1, 1, 0>,
- Conv::template process_tile<1, 1, 0, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 0, 2, 0, 0>,
- Conv::template process_tile<1, 1, 0, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 0, 2, 1, 0>,
- Conv::template process_tile<1, 1, 0, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 0, 3, 0, 0>,
- Conv::template process_tile<1, 1, 0, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 0, 3, 1, 0>,
- Conv::template process_tile<1, 1, 0, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 0, 4, 0, 0>,
- Conv::template process_tile<1, 1, 0, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 0, 4, 1, 0>,
- Conv::template process_tile<1, 1, 0, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 0
- { // Input pad bottom = 1
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 1, 0, 0, 0>,
- Conv::template process_tile<1, 1, 1, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 1, 0, 1, 0>,
- Conv::template process_tile<1, 1, 1, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 1, 1, 0, 0>,
- Conv::template process_tile<1, 1, 1, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 1, 1, 1, 0>,
- Conv::template process_tile<1, 1, 1, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 1, 2, 0, 0>,
- Conv::template process_tile<1, 1, 1, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 1, 2, 1, 0>,
- Conv::template process_tile<1, 1, 1, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 1, 3, 0, 0>,
- Conv::template process_tile<1, 1, 1, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 1, 3, 1, 0>,
- Conv::template process_tile<1, 1, 1, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 1, 4, 0, 0>,
- Conv::template process_tile<1, 1, 1, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 1, 4, 1, 0>,
- Conv::template process_tile<1, 1, 1, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 1
- { // Input pad bottom = 2
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 2, 0, 0, 0>,
- Conv::template process_tile<1, 1, 2, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 2, 0, 1, 0>,
- Conv::template process_tile<1, 1, 2, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 2, 1, 0, 0>,
- Conv::template process_tile<1, 1, 2, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 2, 1, 1, 0>,
- Conv::template process_tile<1, 1, 2, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 2, 2, 0, 0>,
- Conv::template process_tile<1, 1, 2, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 2, 2, 1, 0>,
- Conv::template process_tile<1, 1, 2, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 2, 3, 0, 0>,
- Conv::template process_tile<1, 1, 2, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 2, 3, 1, 0>,
- Conv::template process_tile<1, 1, 2, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 2, 4, 0, 0>,
- Conv::template process_tile<1, 1, 2, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 2, 4, 1, 0>,
- Conv::template process_tile<1, 1, 2, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 2
- { // Input pad bottom = 3
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 3, 0, 0, 0>,
- Conv::template process_tile<1, 1, 3, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 3, 0, 1, 0>,
- Conv::template process_tile<1, 1, 3, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 3, 1, 0, 0>,
- Conv::template process_tile<1, 1, 3, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 3, 1, 1, 0>,
- Conv::template process_tile<1, 1, 3, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 3, 2, 0, 0>,
- Conv::template process_tile<1, 1, 3, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 3, 2, 1, 0>,
- Conv::template process_tile<1, 1, 3, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 3, 3, 0, 0>,
- Conv::template process_tile<1, 1, 3, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 3, 3, 1, 0>,
- Conv::template process_tile<1, 1, 3, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 3, 4, 0, 0>,
- Conv::template process_tile<1, 1, 3, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 3, 4, 1, 0>,
- Conv::template process_tile<1, 1, 3, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 3
- { // Input pad bottom = 4
- { // Input pad right = 0
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 4, 0, 0, 0>,
- Conv::template process_tile<1, 1, 4, 0, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 4, 0, 1, 0>,
- Conv::template process_tile<1, 1, 4, 0, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 0
- { // Input pad right = 1
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 4, 1, 0, 0>,
- Conv::template process_tile<1, 1, 4, 1, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 4, 1, 1, 0>,
- Conv::template process_tile<1, 1, 4, 1, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 1
- { // Input pad right = 2
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 4, 2, 0, 0>,
- Conv::template process_tile<1, 1, 4, 2, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 4, 2, 1, 0>,
- Conv::template process_tile<1, 1, 4, 2, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 2
- { // Input pad right = 3
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 4, 3, 0, 0>,
- Conv::template process_tile<1, 1, 4, 3, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 4, 3, 1, 0>,
- Conv::template process_tile<1, 1, 4, 3, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 3
- { // Input pad right = 4
- { // Output pad bottom = 0
- Conv::template process_tile<1, 1, 4, 4, 0, 0>,
- Conv::template process_tile<1, 1, 4, 4, 0, 1>,
- }, // Output pad bottom = 0
- { // Output pad bottom = 1
- Conv::template process_tile<1, 1, 4, 4, 1, 0>,
- Conv::template process_tile<1, 1, 4, 4, 1, 1>,
- }, // Output pad bottom = 1
- }, // Input pad right = 4
- }, // Input pad bottom = 4
- }, // Input pad left = 1
- }, // Input pad top = 1
+const Conv::TileFn Conv::tilefn_unpadded = ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 0>;
+
+template <>
+const Conv::TileFn Conv::tilefn_top[n_in_pad_top_fns] = {
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 1, 0, 0, 0, 0, 0>,
+};
+
+template <>
+const Conv::TileFn Conv::tilefn_left[n_in_pad_left_fns] = {
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 1, 0, 0, 0, 0>,
+};
+
+template <>
+const Conv::TileFn Conv::tilefn_bottom[n_in_pad_bottom_fns][n_out_pad_bottom_fns] = {
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 1, 0>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 1, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 1, 0, 1, 0>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 2, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 2, 0, 1, 0>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 3, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 3, 0, 1, 0>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 4, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 4, 0, 1, 0>,
+ },
+};
+
+template <>
+const Conv::TileFn Conv::tilefn_right[n_in_pad_right_fns][n_out_pad_right_fns] = {
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 0, 0, 1>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 1, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 1, 0, 1>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 2, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 2, 0, 1>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 3, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 3, 0, 1>,
+ },
+ {
+ ConvImpl::template process_tile<true, 0, 0, 0, 4, 0, 0>,
+ ConvImpl::template process_tile<true, 0, 0, 0, 4, 0, 1>,
+ },
};
+template <>
+const Conv::TileFn Conv::tilefn_generic = ConvImpl::template process_tile<false>;
template class DepthwiseConvolution<2, 2, 3, 3, 2, 2, float, float>;
} // namespace depthwise