From 9d0b5f82c2734444145718f12788f2dde436ef45 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Wed, 1 May 2019 13:03:59 +0100 Subject: COMPMID-2177 Fix clang warnings Change-Id: I78039db8c58d7b14a042c41e54c25fb9cb509bf7 Signed-off-by: Michalis Spyrou Reviewed-on: https://review.mlplatform.org/c/1092 Reviewed-by: VidhyaSudhan Loganathan Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins --- tests/validation/reference/ArithmeticDivision.cpp | 6 +- .../validation/reference/ArithmeticOperations.cpp | 14 ++-- tests/validation/reference/CannyEdgeDetector.cpp | 8 +- tests/validation/reference/Comparisons.cpp | 13 +-- tests/validation/reference/ConcatenateLayer.cpp | 1 + .../validation/reference/DepthConcatenateLayer.cpp | 4 +- .../validation/reference/ElementwiseOperations.cpp | 12 ++- tests/validation/reference/HOGDetector.cpp | 6 +- .../reference/PixelWiseMultiplication.cpp | 8 +- tests/validation/reference/SliceOperations.cpp | 6 +- tests/validation/reference/Sobel.cpp | 2 +- tests/validation/reference/StackLayer.cpp | 6 +- tests/validation/reference/Winograd.cpp | 96 +++++++++++----------- 13 files changed, 102 insertions(+), 80 deletions(-) (limited to 'tests/validation/reference') diff --git a/tests/validation/reference/ArithmeticDivision.cpp b/tests/validation/reference/ArithmeticDivision.cpp index 0102231993..0ced439404 100644 --- a/tests/validation/reference/ArithmeticDivision.cpp +++ b/tests/validation/reference/ArithmeticDivision.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -77,7 +77,9 @@ SimpleTensor arithmetic_division(const SimpleTensor &src1, const SimpleTen { SimpleTensor dst(TensorShape::broadcast_shape(src1.shape(), src2.shape()), data_type); - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(src1, src2, dst, id_src1, id_src2, id_dst); diff --git a/tests/validation/reference/ArithmeticOperations.cpp b/tests/validation/reference/ArithmeticOperations.cpp index 062be93b95..a6205af2c6 100644 --- a/tests/validation/reference/ArithmeticOperations.cpp +++ b/tests/validation/reference/ArithmeticOperations.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -88,7 +88,9 @@ struct BroadcastUnroll<0> template SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleTensor &src1, const SimpleTensor &src2, SimpleTensor &dst, ConvertPolicy convert_policy) { - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst); @@ -98,14 +100,16 @@ SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleTensor< template <> SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleTensor &src1, const SimpleTensor &src2, SimpleTensor &dst, ConvertPolicy convert_policy) { + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; + if(dst.data_type() == DataType::QASYMM8) { SimpleTensor src1_tmp = convert_from_asymmetric(src1); SimpleTensor src2_tmp = convert_from_asymmetric(src2); SimpleTensor dst_tmp(TensorShape::broadcast_shape(src1.shape(), src2.shape()), dst.data_type()); - Coordinates id_src1, id_src2, id_dst; - BroadcastUnroll::unroll(op, src1_tmp, src2_tmp, dst_tmp, convert_policy, id_src1, id_src2, id_dst); dst = convert_to_asymmetric(dst_tmp, dst.quantization_info()); @@ -114,8 +118,6 @@ SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleT else { // DataType::U8 - Coordinates id_src1, id_src2, id_dst; - BroadcastUnroll::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst); return dst; diff --git a/tests/validation/reference/CannyEdgeDetector.cpp b/tests/validation/reference/CannyEdgeDetector.cpp index 92a11db0bd..a952ddedb0 100644 --- a/tests/validation/reference/CannyEdgeDetector.cpp +++ b/tests/validation/reference/CannyEdgeDetector.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -117,7 +117,8 @@ SimpleTensor canny_edge_detector_impl(const SimpleTensor &src, int32_t upp ValidRegion valid_region = shape_to_valid_region(src.shape(), border_mode == BorderMode::UNDEFINED, BorderSize(gradient_size / 2 + 1)); // Sobel computation: U == int16_t or int32_t - SimpleTensor gx, gy; + SimpleTensor gx{}; + SimpleTensor gy{}; std::tie(gx, gy) = sobel(src, gradient_size, border_mode, constant_border_value, GradientDimension::GRAD_XY); using unsigned_U = typename traits::make_unsigned_conditional_t::type; @@ -178,7 +179,8 @@ SimpleTensor canny_edge_detector_impl(const SimpleTensor &src, int32_t upp continue; } - unsigned_U mag_90, mag90; + unsigned_U mag_90; + unsigned_U mag90; switch(grad_dir[i]) { case 0: // North/South edge direction, compare against East/West pixels (left & right) diff --git a/tests/validation/reference/Comparisons.cpp b/tests/validation/reference/Comparisons.cpp index a83c365a22..6d08daf89d 100644 --- a/tests/validation/reference/Comparisons.cpp +++ b/tests/validation/reference/Comparisons.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -109,7 +109,9 @@ SimpleTensor compare(ComparisonOperation op, const SimpleTensor &src { SimpleTensor dst(TensorShape::broadcast_shape(src1.shape(), src2.shape()), DataType::U8); - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(op, src1, src2, dst, id_src1, id_src2, id_dst); return dst; } @@ -119,18 +121,19 @@ SimpleTensor compare(ComparisonOperation op, const SimpleTensor dst(TensorShape::broadcast_shape(src1.shape(), src2.shape()), DataType::U8); + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; + if(src1.data_type() == DataType::QASYMM8) { SimpleTensor src1_tmp = convert_from_asymmetric(src1); SimpleTensor src2_tmp = convert_from_asymmetric(src2); - - Coordinates id_src1, id_src2, id_dst; BroadcastUnroll::unroll(op, src1_tmp, src2_tmp, dst, id_src1, id_src2, id_dst); } else { // DataType::U8 - Coordinates id_src1, id_src2, id_dst; BroadcastUnroll::unroll(op, src1, src2, dst, id_src1, id_src2, id_dst); } return dst; diff --git a/tests/validation/reference/ConcatenateLayer.cpp b/tests/validation/reference/ConcatenateLayer.cpp index 93b1768ebd..af818a576c 100644 --- a/tests/validation/reference/ConcatenateLayer.cpp +++ b/tests/validation/reference/ConcatenateLayer.cpp @@ -41,6 +41,7 @@ SimpleTensor widthconcatenate_layer(const std::vector> &srcs, { // Create reference std::vector shapes; + shapes.reserve(srcs.size()); for(const auto &src : srcs) { shapes.emplace_back(src.shape()); diff --git a/tests/validation/reference/DepthConcatenateLayer.cpp b/tests/validation/reference/DepthConcatenateLayer.cpp index 139675d108..22271a0d10 100644 --- a/tests/validation/reference/DepthConcatenateLayer.cpp +++ b/tests/validation/reference/DepthConcatenateLayer.cpp @@ -38,7 +38,7 @@ SimpleTensor depthconcatenate_layer(const std::vector> &srcs, { // Create reference std::vector shapes; - + shapes.reserve(srcs.size()); for(const auto &src : srcs) { shapes.emplace_back(src.shape()); @@ -66,7 +66,7 @@ SimpleTensor depthconcatenate_layer(const std::vector> &srcs, { auto ptr_slice = static_cast(dst(Coordinates(0, 0, slice, b))); const auto num_elems_in_slice((dst.num_elements() / depth_out) * src.shape().z()); - std::transform(ptr_slice, ptr_slice + num_elems_in_slice, ptr_slice, [src, dst](T t) + std::transform(ptr_slice, ptr_slice + num_elems_in_slice, ptr_slice, [src, dst](T) { return dst.quantization_info().quantize(src.quantization_info().dequantize(0), RoundingPolicy::TO_NEAREST_UP); }); diff --git a/tests/validation/reference/ElementwiseOperations.cpp b/tests/validation/reference/ElementwiseOperations.cpp index 6d533edea5..2ffb0faa75 100644 --- a/tests/validation/reference/ElementwiseOperations.cpp +++ b/tests/validation/reference/ElementwiseOperations.cpp @@ -124,7 +124,9 @@ struct BroadcastUnroll<0> template SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleTensor &src1, const SimpleTensor &src2, SimpleTensor &dst, ConvertPolicy convert_policy) { - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst); @@ -140,7 +142,9 @@ SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleT SimpleTensor src2_tmp = convert_from_asymmetric(src2); SimpleTensor dst_tmp(TensorShape::broadcast_shape(src1.shape(), src2.shape()), dst.data_type()); - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(op, src1_tmp, src2_tmp, dst_tmp, convert_policy, id_src1, id_src2, id_dst); @@ -150,7 +154,9 @@ SimpleTensor arithmetic_operation(ArithmeticOperation op, const SimpleT else { // DataType::U8 - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst); diff --git a/tests/validation/reference/HOGDetector.cpp b/tests/validation/reference/HOGDetector.cpp index 5a5ae3700d..8ca1b0c204 100644 --- a/tests/validation/reference/HOGDetector.cpp +++ b/tests/validation/reference/HOGDetector.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -39,8 +39,8 @@ Size2D num_detection_windows(const TensorShape &shape, const Size2D &window_step const size_t num_block_strides_width = hog_info.detection_window_size().width / hog_info.block_stride().width; const size_t num_block_strides_height = hog_info.detection_window_size().height / hog_info.block_stride().height; - return Size2D(floor_to_multiple(shape.x() - num_block_strides_width, window_step.width) + window_step.width, - floor_to_multiple(shape.y() - num_block_strides_height, window_step.height) + window_step.height); + return Size2D{ floor_to_multiple(shape.x() - num_block_strides_width, window_step.width) + window_step.width, + floor_to_multiple(shape.y() - num_block_strides_height, window_step.height) + window_step.height }; } } // namespace diff --git a/tests/validation/reference/PixelWiseMultiplication.cpp b/tests/validation/reference/PixelWiseMultiplication.cpp index 3470de241a..ea058ecdba 100644 --- a/tests/validation/reference/PixelWiseMultiplication.cpp +++ b/tests/validation/reference/PixelWiseMultiplication.cpp @@ -139,7 +139,9 @@ SimpleTensor pixel_wise_multiplication(const SimpleTensor &src1, const S ARM_COMPUTE_ERROR("Scale of pixel-wise multiplication must be non-negative"); } - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(src1, src2, dst, scale, convert_policy, rounding_policy, id_src1, id_src2, id_dst); @@ -166,7 +168,9 @@ SimpleTensor pixel_wise_multiplication(const SimpleTensor &src ARM_COMPUTE_ERROR("Scale of pixel-wise multiplication must be non-negative"); } - Coordinates id_src1, id_src2, id_dst; + Coordinates id_src1{}; + Coordinates id_src2{}; + Coordinates id_dst{}; BroadcastUnroll::unroll(src1, src2, dst, scale, convert_policy, rounding_policy, id_src1, id_src2, id_dst); } return dst; diff --git a/tests/validation/reference/SliceOperations.cpp b/tests/validation/reference/SliceOperations.cpp index 40ca9de927..b34afdc92e 100644 --- a/tests/validation/reference/SliceOperations.cpp +++ b/tests/validation/reference/SliceOperations.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -103,7 +103,9 @@ SimpleTensor strided_slice(const SimpleTensor &src, SimpleTensor dst{ dst_shape, src.data_type(), 1 }; // Get coordinates - Coordinates starts_abs, ends_abs, final_strides; + Coordinates starts_abs{}; + Coordinates ends_abs{}; + Coordinates final_strides{}; std::tie(starts_abs, ends_abs, final_strides) = calculate_strided_slice_coords(src_shape, starts, ends, strides, begin_mask, end_mask, shrink_axis_mask); diff --git a/tests/validation/reference/Sobel.cpp b/tests/validation/reference/Sobel.cpp index ff0e11d3a8..233f1ad4fc 100644 --- a/tests/validation/reference/Sobel.cpp +++ b/tests/validation/reference/Sobel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * diff --git a/tests/validation/reference/StackLayer.cpp b/tests/validation/reference/StackLayer.cpp index 50e440c914..9e9e434230 100644 --- a/tests/validation/reference/StackLayer.cpp +++ b/tests/validation/reference/StackLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -56,11 +56,11 @@ SimpleTensor stack_layer(const std::vector> &in, const Tensor // i_coordinates[0] = xi, i_coordinates[1] = yi, i_coordinates[2] = zi // i_coordinates[3] = bi, i_coordinates[4] = i, i_coordinates[5] = 0 // i_coordinates[5] will be always zero and used for not incrementing the output when the input has less than 4 dimensions - int i_coordinates[6] = { 0 }; + std::array i_coordinates{ 0 }; // Array of pointers used to map the output coordinates to the input ones accordingly with the axis // This array is initialized with &i_coordinates[5] since this will be always zero - int *o_coordinates[5] = { &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5] }; + std::array o_coordinates = { &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5], &i_coordinates[5] }; // Set the axis coordinate o_coordinates[axis] = &i_coordinates[4]; diff --git a/tests/validation/reference/Winograd.cpp b/tests/validation/reference/Winograd.cpp index 06463d577f..47f5ac7a7d 100644 --- a/tests/validation/reference/Winograd.cpp +++ b/tests/validation/reference/Winograd.cpp @@ -45,7 +45,7 @@ template void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile_size, const Size2D &kernel_size, WinogradTransformType winograd_transform_type) { // Winograd input transform matrices - static const float imatrix2x2_3x3[] = + static const std::array imatrix2x2_3x3 = { 1.0f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, @@ -53,7 +53,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 1.0f, 0.0f, -1.0f }; - static const float imatrix4x4_3x3[] = + static const std::array imatrix4x4_3x3 = { 4.0f, 0.0f, -5.0f, 0.0f, 1.0f, 0.0f, 0.0f, -4.0f, -4.0f, 1.0f, 1.0f, 0.0f, @@ -63,7 +63,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 4.0f, 0.0f, -5.0f, 0.0f, 1.0f, }; - static const float imatrix4x4_5x5[] = + static const std::array imatrix4x4_5x5 = { 1.f, 0.f, -21.f / 4.f, 0.f, 21.f / 4.f, 0.f, -1.f, 0.f, 0.f, 1.f, 1.f, -17.f / 4.f, -17.f / 4.f, 1.f, 1.f, 0.f, @@ -75,7 +75,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.f, -1.f, 0.f, 21.f / 4.f, 0.f, -21.f / 4.f, 0.f, 1.f }; - static const float imatrix2x1_7x7[] = + static const std::array imatrix2x1_7x7 = { -36.0f, 0.0f, 49.0f, 0.0f, -14.0f, 0.0f, 1.0f, 0.0f, 0.0f, -36.0f, 36.0f, 13.0f, -13.0f, -1.0f, 1.0f, 0.0f, @@ -90,7 +90,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile // ------------------------------------------ // Winograd filter transform matrices - static const float fmatrix2x2_3x3[] = + static const std::array fmatrix2x2_3x3 = { 1.0f, 0.0f, 0.0f, 0.5f, 0.5f, 0.5f, @@ -98,7 +98,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 0.0f, 1.0f }; - static const float fmatrix4x4_3x3[] = + static const std::array fmatrix4x4_3x3 = { 0.25f, 0.0f, 0.0f, -1.0f / 6.0f, -1.0f / 6.0f, -1.0f / 6.0f, @@ -108,7 +108,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 0.0f, 1.0f }; - static const float fmatrix4x4_5x5[] = + static const std::array fmatrix4x4_5x5 = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, @@ -121,7 +121,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile }; - static const float fmatrix2x1_7x7[] = + static const std::array fmatrix2x1_7x7 = { -1.0f / 36.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f / 48.0f, -1.0f / 48.0f, 1.0f / 48.0f, -1.0f / 48.0f, 1.0f / 48.0f, -1.0f / 48.0f, 1.0f / 48.0f, @@ -136,13 +136,13 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile // ------------------------------------------ // Winograd output transform matrices - static const float omatrix2x2_3x3[] = + static const std::array omatrix2x2_3x3 = { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, -1.0f }; - static const float omatrix4x4_3x3[] = + static const std::array omatrix4x4_3x3 = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, -1.0f, 2.0f, -2.0f, 0.0f, @@ -150,7 +150,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 1.0f, -1.0f, 8.0f, -8.0f, 1.0f }; - static const float omatrix4x4_5x5[] = + static const std::array omatrix4x4_5x5 = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 8.0f, 8.0f, 0.0f, 0.0f, 1.0f, -1.0f, 2.0f, -2.0f, 4.0f, -4.0f, 0.0f, @@ -158,7 +158,7 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile 0.0f, 1.0f, -1.0f, 8.0f, -8.0f, 1.0f, -1.0f, 1.0f }; - static const float omatrix2x1_7x7[] = + static const std::array omatrix2x1_7x7 = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, -1.0f, 1.0f, -2.0f, 2.0f, -3.0f, 3.0f, 1.0f @@ -171,42 +171,42 @@ void initialize_matrix_transform(SimpleTensor &src, const Size2D &output_tile // Key = (Output tile size, Kernel size, Winograd transform type) static std::map matrix_map = { - { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::INPUT), imatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::INPUT), imatrix4x4_3x3 }, - { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::INPUT), imatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::INPUT), imatrix4x4_3x3 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::INPUT), imatrix2x2_3x3 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::INPUT), imatrix4x4_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::INPUT), imatrix4x4_5x5 }, - { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::INPUT), imatrix4x4_5x5 }, - { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::INPUT), imatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::INPUT), imatrix2x1_7x7 }, - { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::INPUT), imatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::INPUT), imatrix4x4_5x5 }, - { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3 }, - { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::FILTER), fmatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::FILTER), fmatrix4x4_3x3 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5 }, - { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::FILTER), fmatrix4x4_5x5 }, - { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::FILTER), fmatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7 }, - { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5 }, - { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3 }, - { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::OUTPUT), omatrix2x2_3x3 }, - { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::OUTPUT), omatrix4x4_3x3 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3 }, - { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5 }, - { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::OUTPUT), omatrix4x4_5x5 }, - { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::OUTPUT), omatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7 }, - { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7 }, - { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5 }, + { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::INPUT), imatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::INPUT), imatrix4x4_3x3.data() }, + { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::INPUT), imatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::INPUT), imatrix4x4_3x3.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::INPUT), imatrix2x2_3x3.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::INPUT), imatrix4x4_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::INPUT), imatrix4x4_5x5.data() }, + { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::INPUT), imatrix4x4_5x5.data() }, + { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::INPUT), imatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::INPUT), imatrix2x1_7x7.data() }, + { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::INPUT), imatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::INPUT), imatrix4x4_5x5.data() }, + { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() }, + { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() }, + { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() }, + { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() }, + { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() }, + { WinogradKey(std::pair(2, 2), std::pair(3, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(3, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() }, + { WinogradKey(std::pair(2, 1), std::pair(3, 1), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() }, + { WinogradKey(std::pair(4, 1), std::pair(3, 1), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() }, + { WinogradKey(std::pair(4, 4), std::pair(5, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() }, + { WinogradKey(std::pair(4, 1), std::pair(5, 1), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() }, + { WinogradKey(std::pair(2, 1), std::pair(7, 1), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 2), std::pair(1, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() }, + { WinogradKey(std::pair(2, 2), std::pair(7, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() }, + { WinogradKey(std::pair(1, 4), std::pair(1, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() }, }; // Find transformation matrix -- cgit v1.2.1