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/framework/instruments/OpenCLMemoryUsage.cpp | 4 +- tests/framework/instruments/OpenCLTimer.cpp | 7 +- tests/framework/instruments/SchedulerTimer.cpp | 8 +- tests/framework/printers/JSONPrinter.cpp | 4 +- tests/framework/printers/PrettyPrinter.cpp | 4 +- tests/validation/CL/Convolution.cpp | 20 ++--- tests/validation/CL/DepthConcatenateLayer.cpp | 1 + tests/validation/CL/NonLinearFilter.cpp | 6 +- tests/validation/CL/Split.cpp | 4 +- tests/validation/CL/WidthConcatenateLayer.cpp | 1 + tests/validation/Helpers.cpp | 2 +- tests/validation/NEON/DepthConcatenateLayer.cpp | 1 + tests/validation/NEON/HeightConcatenateLayer.cpp | 1 + tests/validation/NEON/NonLinearFilter.cpp | 6 +- tests/validation/NEON/Split.cpp | 2 + tests/validation/NEON/WidthConcatenateLayer.cpp | 1 + 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 +++++++++++----------- 29 files changed, 144 insertions(+), 110 deletions(-) (limited to 'tests') diff --git a/tests/framework/instruments/OpenCLMemoryUsage.cpp b/tests/framework/instruments/OpenCLMemoryUsage.cpp index 119ad4cad2..7b08e2d85b 100644 --- a/tests/framework/instruments/OpenCLMemoryUsage.cpp +++ b/tests/framework/instruments/OpenCLMemoryUsage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -192,7 +192,7 @@ Instrument::MeasurementsMap OpenCLMemoryUsage::test_measurements() const size_t num_programs = CLKernelLibrary::get().get_built_programs().size(); size_t total_size = 0; - for(auto it : CLKernelLibrary::get().get_built_programs()) + for(auto const &it : CLKernelLibrary::get().get_built_programs()) { std::vector binary_sizes = it.second.getInfo(); total_size = std::accumulate(binary_sizes.begin(), binary_sizes.end(), total_size); diff --git a/tests/framework/instruments/OpenCLTimer.cpp b/tests/framework/instruments/OpenCLTimer.cpp index ca859b6fd9..ca4c13ce61 100644 --- a/tests/framework/instruments/OpenCLTimer.cpp +++ b/tests/framework/instruments/OpenCLTimer.cpp @@ -185,9 +185,12 @@ Instrument::MeasurementsMap OpenCLClock::measurements() const { MeasurementsMap measurements; unsigned int kernel_number = 0; - for(auto kernel : _kernels) + for(auto const &kernel : _kernels) { - cl_ulong queued, flushed, start, end; + cl_ulong queued; + cl_ulong flushed; + cl_ulong start; + cl_ulong end; kernel.event.getProfilingInfo(CL_PROFILING_COMMAND_QUEUED, &queued); kernel.event.getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, &flushed); kernel.event.getProfilingInfo(CL_PROFILING_COMMAND_START, &start); diff --git a/tests/framework/instruments/SchedulerTimer.cpp b/tests/framework/instruments/SchedulerTimer.cpp index f9d4dd5fce..c114dfbd9d 100644 --- a/tests/framework/instruments/SchedulerTimer.cpp +++ b/tests/framework/instruments/SchedulerTimer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -67,9 +67,9 @@ public: return _real_scheduler.num_threads(); } - void set_prefix(std::string prefix) + void set_prefix(const std::string &prefix) { - _prefix = std::move(prefix); + _prefix = prefix; } void schedule(ICPPKernel *kernel, const Hints &hints) override @@ -188,7 +188,7 @@ Instrument::MeasurementsMap SchedulerClock::measurements() co if(output_timestamps) { ARM_COMPUTE_ERROR_ON(kernel.measurements.size() != 2); - for(auto m : kernel.measurements) + for(auto const &m : kernel.measurements) { if(m.first.find("[start]") != std::string::npos) { diff --git a/tests/framework/printers/JSONPrinter.cpp b/tests/framework/printers/JSONPrinter.cpp index 6b982f5bb0..179cdf9601 100644 --- a/tests/framework/printers/JSONPrinter.cpp +++ b/tests/framework/printers/JSONPrinter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -117,7 +117,7 @@ void JSONPrinter::print_list_tests(const std::vector &infos) { *_stream << R"(, "list_tests" : {)"; bool first = true; - for(auto info : infos) + for(auto const &info : infos) { if(!first) { diff --git a/tests/framework/printers/PrettyPrinter.cpp b/tests/framework/printers/PrettyPrinter.cpp index 318195109c..fe0540a624 100644 --- a/tests/framework/printers/PrettyPrinter.cpp +++ b/tests/framework/printers/PrettyPrinter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -111,7 +111,7 @@ void PrettyPrinter::print_error(const std::exception &error, bool expected) void PrettyPrinter::print_list_tests(const std::vector &infos) { - for(auto info : infos) + for(auto const &info : infos) { *_stream << "[" << info.id << ", " << info.mode << ", " << info.status << "] " << info.name << "\n"; } diff --git a/tests/validation/CL/Convolution.cpp b/tests/validation/CL/Convolution.cpp index 0c00ee301b..9c33d45f97 100644 --- a/tests/validation/CL/Convolution.cpp +++ b/tests/validation/CL/Convolution.cpp @@ -54,14 +54,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(c CLTensor dst = create_tensor(shape, output_data_type); // Create conv matrix - int16_t conv[9]; + std::array conv = { 0 }; ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); // Create and configure function CLConvolution3x3 convolution; - convolution.configure(&src, &dst, conv, 0, border_mode); + convolution.configure(&src, &dst, conv.data(), 0, border_mode); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, (border_mode == BorderMode::UNDEFINED), BorderSize(filter_size / 2)); @@ -122,14 +122,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(c CLTensor dst = create_tensor(shape, output_data_type); // Create conv matrix - int16_t conv[25]; + std::array conv = { 0 }; ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); // Create and configure function CLConvolution5x5 convolution; - convolution.configure(&src, &dst, conv, 0, border_mode); + convolution.configure(&src, &dst, conv.data(), 0, border_mode); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, (border_mode == BorderMode::UNDEFINED), BorderSize(filter_size / 2)); @@ -190,14 +190,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(c CLTensor dst = create_tensor(shape, output_data_type); // Create conv matrix - int16_t conv[49]; + std::array conv = { 0 }; ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); // Create and configure function CLConvolution7x7 convolution; - convolution.configure(&src, &dst, conv, 0, border_mode); + convolution.configure(&src, &dst, conv.data(), 0, border_mode); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, (border_mode == BorderMode::UNDEFINED), BorderSize(filter_size / 2)); @@ -258,14 +258,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(c CLTensor dst = create_tensor(shape, output_data_type); // Create conv matrix - int16_t conv[81]; + std::array conv = { 0 }; ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); // Create and configure function CLConvolution9x9 convolution; - convolution.configure(&src, &dst, conv, 0, border_mode); + convolution.configure(&src, &dst, conv.data(), 0, border_mode); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, (border_mode == BorderMode::UNDEFINED), BorderSize(filter_size / 2)); @@ -328,14 +328,14 @@ shape, output_data_type, border_mode, filter_width, filter_height) CLTensor dst = create_tensor(shape, output_data_type); // Create conv matrix - int16_t conv[filter_width * filter_height]; + std::vector conv(filter_width * filter_height); ARM_COMPUTE_EXPECT(src.info()->is_resizable(), framework::LogLevel::ERRORS); ARM_COMPUTE_EXPECT(dst.info()->is_resizable(), framework::LogLevel::ERRORS); // Create and configure function CLConvolutionRectangle convolution; - convolution.configure(&src, &dst, conv, filter_width, filter_height, 1, border_mode); + convolution.configure(&src, &dst, conv.data(), filter_width, filter_height, 1, border_mode); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, (border_mode == BorderMode::UNDEFINED), BorderSize(filter_height / 2, filter_width / 2)); diff --git a/tests/validation/CL/DepthConcatenateLayer.cpp b/tests/validation/CL/DepthConcatenateLayer.cpp index beda637ef3..8cbfda382b 100644 --- a/tests/validation/CL/DepthConcatenateLayer.cpp +++ b/tests/validation/CL/DepthConcatenateLayer.cpp @@ -68,6 +68,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( inputs_vector_info.emplace_back(std::move(input_info2)); std::vector inputs_vector_info_raw; + inputs_vector_info_raw.reserve(inputs_vector_info.size()); for(auto &input : inputs_vector_info) { inputs_vector_info_raw.emplace_back(&input); diff --git a/tests/validation/CL/NonLinearFilter.cpp b/tests/validation/CL/NonLinearFilter.cpp index 286cc483b8..536b458975 100644 --- a/tests/validation/CL/NonLinearFilter.cpp +++ b/tests/validation/CL/NonLinearFilter.cpp @@ -52,8 +52,8 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combi const uint8_t constant_border_value = distribution_u8(generator); // Create the mask - uint8_t mask[mask_size * mask_size]; - fill_mask_from_pattern(mask, mask_size, mask_size, pattern); + std::vector mask(mask_size * mask_size); + fill_mask_from_pattern(mask.data(), mask_size, mask_size, pattern); const auto half_mask_size = static_cast(mask_size / 2); // Create tensors @@ -65,7 +65,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combi // Create and configure function CLNonLinearFilter filter; - filter.configure(&src, &dst, function, mask_size, pattern, mask, border_mode, constant_border_value); + filter.configure(&src, &dst, function, mask_size, pattern, mask.data(), border_mode, constant_border_value); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(half_mask_size)); diff --git a/tests/validation/CL/Split.cpp b/tests/validation/CL/Split.cpp index 77363189cf..e038b89856 100644 --- a/tests/validation/CL/Split.cpp +++ b/tests/validation/CL/Split.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -57,6 +57,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( { std::vector outputs_info(splits); std::vector outputs_info_ptr; + outputs_info_ptr.reserve(splits); for(auto &output_info : outputs_info) { outputs_info_ptr.emplace_back(&output_info); @@ -76,6 +77,7 @@ DATA_TEST_CASE(Configuration, CLTensor src = create_tensor(shape, data_type); std::vector dsts(splits); std::vector dsts_ptrs; + dsts_ptrs.reserve(splits); for(auto &dst : dsts) { dsts_ptrs.emplace_back(&dst); diff --git a/tests/validation/CL/WidthConcatenateLayer.cpp b/tests/validation/CL/WidthConcatenateLayer.cpp index 2c1eb7fada..52a4e4ccd6 100644 --- a/tests/validation/CL/WidthConcatenateLayer.cpp +++ b/tests/validation/CL/WidthConcatenateLayer.cpp @@ -72,6 +72,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( inputs_vector_info.emplace_back(std::move(input_info2)); std::vector inputs_vector_info_raw; + inputs_vector_info_raw.reserve(inputs_vector_info.size()); for(auto &input : inputs_vector_info) { inputs_vector_info_raw.emplace_back(&input); diff --git a/tests/validation/Helpers.cpp b/tests/validation/Helpers.cpp index 504dbfd3a4..71a674b515 100644 --- a/tests/validation/Helpers.cpp +++ b/tests/validation/Helpers.cpp @@ -269,7 +269,7 @@ std::pair get_quantized_bounds(const QuantizationInfo &quant_info, flo const int min_bound = quant_info.quantize(min, RoundingPolicy::TO_NEAREST_UP); const int max_bound = quant_info.quantize(max, RoundingPolicy::TO_NEAREST_UP); - return std::pair(min_bound, max_bound); + return std::pair { min_bound, max_bound }; } template void get_tile(const SimpleTensor &in, SimpleTensor &roi, const Coordinates &coord); diff --git a/tests/validation/NEON/DepthConcatenateLayer.cpp b/tests/validation/NEON/DepthConcatenateLayer.cpp index 0ddb220d34..844c3987db 100644 --- a/tests/validation/NEON/DepthConcatenateLayer.cpp +++ b/tests/validation/NEON/DepthConcatenateLayer.cpp @@ -68,6 +68,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( inputs_vector_info.emplace_back(std::move(input_info2)); std::vector inputs_vector_info_raw; + inputs_vector_info_raw.reserve(inputs_vector_info.size()); for(auto &input : inputs_vector_info) { inputs_vector_info_raw.emplace_back(&input); diff --git a/tests/validation/NEON/HeightConcatenateLayer.cpp b/tests/validation/NEON/HeightConcatenateLayer.cpp index 9c23fb9bd3..075dfa3b24 100644 --- a/tests/validation/NEON/HeightConcatenateLayer.cpp +++ b/tests/validation/NEON/HeightConcatenateLayer.cpp @@ -72,6 +72,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( inputs_vector_info.emplace_back(std::move(input_info2)); std::vector inputs_vector_info_raw; + inputs_vector_info_raw.reserve(inputs_vector_info.size()); for(auto &input : inputs_vector_info) { inputs_vector_info_raw.emplace_back(&input); diff --git a/tests/validation/NEON/NonLinearFilter.cpp b/tests/validation/NEON/NonLinearFilter.cpp index b3d4c93744..08ad1e2407 100644 --- a/tests/validation/NEON/NonLinearFilter.cpp +++ b/tests/validation/NEON/NonLinearFilter.cpp @@ -52,8 +52,8 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combi const uint8_t constant_border_value = distribution_u8(generator); // Create the mask - uint8_t mask[mask_size * mask_size]; - fill_mask_from_pattern(mask, mask_size, mask_size, pattern); + std::vector mask(mask_size * mask_size); + fill_mask_from_pattern(mask.data(), mask_size, mask_size, pattern); const auto half_mask_size = static_cast(mask_size / 2); // Create tensors @@ -65,7 +65,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combi // Create and configure function NENonLinearFilter filter; - filter.configure(&src, &dst, function, mask_size, pattern, mask, border_mode, constant_border_value); + filter.configure(&src, &dst, function, mask_size, pattern, mask.data(), border_mode, constant_border_value); // Validate valid region const ValidRegion dst_valid_region = shape_to_valid_region(shape, border_mode == BorderMode::UNDEFINED, BorderSize(half_mask_size)); diff --git a/tests/validation/NEON/Split.cpp b/tests/validation/NEON/Split.cpp index 17360960e0..91b3b9a047 100644 --- a/tests/validation/NEON/Split.cpp +++ b/tests/validation/NEON/Split.cpp @@ -57,6 +57,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( { std::vector outputs_info(splits); std::vector outputs_info_ptr; + outputs_info_ptr.reserve(splits); for(auto &output_info : outputs_info) { outputs_info_ptr.emplace_back(&output_info); @@ -76,6 +77,7 @@ DATA_TEST_CASE(Configuration, Tensor src = create_tensor(shape, data_type); std::vector dsts(splits); std::vector dsts_ptrs; + dsts_ptrs.reserve(splits); for(auto &dst : dsts) { dsts_ptrs.emplace_back(&dst); diff --git a/tests/validation/NEON/WidthConcatenateLayer.cpp b/tests/validation/NEON/WidthConcatenateLayer.cpp index ed840ef325..ba0ff1bd81 100644 --- a/tests/validation/NEON/WidthConcatenateLayer.cpp +++ b/tests/validation/NEON/WidthConcatenateLayer.cpp @@ -70,6 +70,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( inputs_vector_info.emplace_back(std::move(input_info2)); std::vector inputs_vector_info_raw; + inputs_vector_info_raw.reserve(inputs_vector_info.size()); for(auto &input : inputs_vector_info) { inputs_vector_info_raw.emplace_back(&input); 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