diff options
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.cpp | 1121 |
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 |