aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/framework/instruments/OpenCLMemoryUsage.cpp4
-rw-r--r--tests/framework/instruments/OpenCLTimer.cpp7
-rw-r--r--tests/framework/instruments/SchedulerTimer.cpp8
-rw-r--r--tests/framework/printers/JSONPrinter.cpp4
-rw-r--r--tests/framework/printers/PrettyPrinter.cpp4
-rw-r--r--tests/validation/CL/Convolution.cpp20
-rw-r--r--tests/validation/CL/DepthConcatenateLayer.cpp1
-rw-r--r--tests/validation/CL/NonLinearFilter.cpp6
-rw-r--r--tests/validation/CL/Split.cpp4
-rw-r--r--tests/validation/CL/WidthConcatenateLayer.cpp1
-rw-r--r--tests/validation/Helpers.cpp2
-rw-r--r--tests/validation/NEON/DepthConcatenateLayer.cpp1
-rw-r--r--tests/validation/NEON/HeightConcatenateLayer.cpp1
-rw-r--r--tests/validation/NEON/NonLinearFilter.cpp6
-rw-r--r--tests/validation/NEON/Split.cpp2
-rw-r--r--tests/validation/NEON/WidthConcatenateLayer.cpp1
-rw-r--r--tests/validation/reference/ArithmeticDivision.cpp6
-rw-r--r--tests/validation/reference/ArithmeticOperations.cpp14
-rw-r--r--tests/validation/reference/CannyEdgeDetector.cpp8
-rw-r--r--tests/validation/reference/Comparisons.cpp13
-rw-r--r--tests/validation/reference/ConcatenateLayer.cpp1
-rw-r--r--tests/validation/reference/DepthConcatenateLayer.cpp4
-rw-r--r--tests/validation/reference/ElementwiseOperations.cpp12
-rw-r--r--tests/validation/reference/HOGDetector.cpp6
-rw-r--r--tests/validation/reference/PixelWiseMultiplication.cpp8
-rw-r--r--tests/validation/reference/SliceOperations.cpp6
-rw-r--r--tests/validation/reference/Sobel.cpp2
-rw-r--r--tests/validation/reference/StackLayer.cpp6
-rw-r--r--tests/validation/reference/Winograd.cpp96
29 files changed, 144 insertions, 110 deletions
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<size_t> binary_sizes = it.second.getInfo<CL_PROGRAM_BINARY_SIZES>();
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<output_timestamps>::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<output_timestamps>::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<TestInfo> &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<TestInfo> &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<CLTensor>(shape, output_data_type);
// Create conv matrix
- int16_t conv[9];
+ std::array<int16_t, 9> 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<CLTensor>(shape, output_data_type);
// Create conv matrix
- int16_t conv[25];
+ std::array<int16_t, 25> 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<CLTensor>(shape, output_data_type);
// Create conv matrix
- int16_t conv[49];
+ std::array<int16_t, 49> 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<CLTensor>(shape, output_data_type);
// Create conv matrix
- int16_t conv[81];
+ std::array<int16_t, 81> 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<CLTensor>(shape, output_data_type);
// Create conv matrix
- int16_t conv[filter_width * filter_height];
+ std::vector<int16_t> 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<ITensorInfo *> 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<uint8_t> mask(mask_size * mask_size);
+ fill_mask_from_pattern(mask.data(), mask_size, mask_size, pattern);
const auto half_mask_size = static_cast<int>(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<TensorInfo> outputs_info(splits);
std::vector<ITensorInfo*> 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<CLTensor>(shape, data_type);
std::vector<CLTensor> dsts(splits);
std::vector<ICLTensor *> 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<ITensorInfo *> 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<int, int> 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<int, int>(min_bound, max_bound);
+ return std::pair<int, int> { min_bound, max_bound };
}
template void get_tile(const SimpleTensor<float> &in, SimpleTensor<float> &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<ITensorInfo *> 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<ITensorInfo *> 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<uint8_t> mask(mask_size * mask_size);
+ fill_mask_from_pattern(mask.data(), mask_size, mask_size, pattern);
const auto half_mask_size = static_cast<int>(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<TensorInfo> outputs_info(splits);
std::vector<ITensorInfo*> 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<Tensor>(shape, data_type);
std::vector<Tensor> dsts(splits);
std::vector<ITensor *> 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<ITensorInfo *> 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<T> arithmetic_division(const SimpleTensor<T> &src1, const SimpleTen
{
SimpleTensor<T> 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<Coordinates::num_max_dimensions>::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 <typename T>
SimpleTensor<T> arithmetic_operation(ArithmeticOperation op, const SimpleTensor<T> &src1, const SimpleTensor<T> &src2, SimpleTensor<T> &dst, ConvertPolicy convert_policy)
{
- Coordinates id_src1, id_src2, id_dst;
+ Coordinates id_src1{};
+ Coordinates id_src2{};
+ Coordinates id_dst{};
BroadcastUnroll<Coordinates::num_max_dimensions>::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst);
@@ -98,14 +100,16 @@ SimpleTensor<T> arithmetic_operation(ArithmeticOperation op, const SimpleTensor<
template <>
SimpleTensor<uint8_t> arithmetic_operation(ArithmeticOperation op, const SimpleTensor<uint8_t> &src1, const SimpleTensor<uint8_t> &src2, SimpleTensor<uint8_t> &dst, ConvertPolicy convert_policy)
{
+ Coordinates id_src1{};
+ Coordinates id_src2{};
+ Coordinates id_dst{};
+
if(dst.data_type() == DataType::QASYMM8)
{
SimpleTensor<float> src1_tmp = convert_from_asymmetric(src1);
SimpleTensor<float> src2_tmp = convert_from_asymmetric(src2);
SimpleTensor<float> dst_tmp(TensorShape::broadcast_shape(src1.shape(), src2.shape()), dst.data_type());
- Coordinates id_src1, id_src2, id_dst;
-
BroadcastUnroll<Coordinates::num_max_dimensions>::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<uint8_t> arithmetic_operation(ArithmeticOperation op, const SimpleT
else
{
// DataType::U8
- Coordinates id_src1, id_src2, id_dst;
-
BroadcastUnroll<Coordinates::num_max_dimensions>::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<T> canny_edge_detector_impl(const SimpleTensor<T> &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<U> gx, gy;
+ SimpleTensor<U> gx{};
+ SimpleTensor<U> gy{};
std::tie(gx, gy) = sobel<U>(src, gradient_size, border_mode, constant_border_value, GradientDimension::GRAD_XY);
using unsigned_U = typename traits::make_unsigned_conditional_t<U>::type;
@@ -178,7 +179,8 @@ SimpleTensor<T> canny_edge_detector_impl(const SimpleTensor<T> &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<uint8_t> compare(ComparisonOperation op, const SimpleTensor<T> &src
{
SimpleTensor<uint8_t> 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<Coordinates::num_max_dimensions>::unroll(op, src1, src2, dst, id_src1, id_src2, id_dst);
return dst;
}
@@ -119,18 +121,19 @@ SimpleTensor<uint8_t> compare(ComparisonOperation op, const SimpleTensor<uint8_t
{
SimpleTensor<uint8_t> 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<float> src1_tmp = convert_from_asymmetric(src1);
SimpleTensor<float> src2_tmp = convert_from_asymmetric(src2);
-
- Coordinates id_src1, id_src2, id_dst;
BroadcastUnroll<Coordinates::num_max_dimensions>::unroll(op, src1_tmp, src2_tmp, dst, id_src1, id_src2, id_dst);
}
else
{
// DataType::U8
- Coordinates id_src1, id_src2, id_dst;
BroadcastUnroll<Coordinates::num_max_dimensions>::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<T> widthconcatenate_layer(const std::vector<SimpleTensor<T>> &srcs,
{
// Create reference
std::vector<TensorShape> 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<T> depthconcatenate_layer(const std::vector<SimpleTensor<T>> &srcs,
{
// Create reference
std::vector<TensorShape> shapes;
-
+ shapes.reserve(srcs.size());
for(const auto &src : srcs)
{
shapes.emplace_back(src.shape());
@@ -66,7 +66,7 @@ SimpleTensor<T> depthconcatenate_layer(const std::vector<SimpleTensor<T>> &srcs,
{
auto ptr_slice = static_cast<T *>(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 <typename T>
SimpleTensor<T> arithmetic_operation(ArithmeticOperation op, const SimpleTensor<T> &src1, const SimpleTensor<T> &src2, SimpleTensor<T> &dst, ConvertPolicy convert_policy)
{
- Coordinates id_src1, id_src2, id_dst;
+ Coordinates id_src1{};
+ Coordinates id_src2{};
+ Coordinates id_dst{};
BroadcastUnroll<Coordinates::num_max_dimensions>::unroll(op, src1, src2, dst, convert_policy, id_src1, id_src2, id_dst);
@@ -140,7 +142,9 @@ SimpleTensor<uint8_t> arithmetic_operation(ArithmeticOperation op, const SimpleT
SimpleTensor<float> src2_tmp = convert_from_asymmetric(src2);
SimpleTensor<float> 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<Coordinates::num_max_dimensions>::unroll(op, src1_tmp, src2_tmp, dst_tmp, convert_policy, id_src1, id_src2, id_dst);
@@ -150,7 +154,9 @@ SimpleTensor<uint8_t> 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<Coordinates::num_max_dimensions>::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<T2> pixel_wise_multiplication(const SimpleTensor<T1> &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<Coordinates::num_max_dimensions>::unroll(src1, src2, dst, scale, convert_policy, rounding_policy, id_src1, id_src2, id_dst);
@@ -166,7 +168,9 @@ SimpleTensor<uint8_t> pixel_wise_multiplication(const SimpleTensor<uint8_t> &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<Coordinates::num_max_dimensions>::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<T> strided_slice(const SimpleTensor<T> &src,
SimpleTensor<T> 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<T> stack_layer(const std::vector<SimpleTensor<T>> &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<int, 6> 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<int *, 5> 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 <typename T>
void initialize_matrix_transform(SimpleTensor<T> &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<float, 16> 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<T> &src, const Size2D &output_tile
0.0f, 1.0f, 0.0f, -1.0f
};
- static const float imatrix4x4_3x3[] =
+ static const std::array<float, 36> 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<T> &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<float, 64> 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<T> &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<float, 64> 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<T> &src, const Size2D &output_tile
// ------------------------------------------
// Winograd filter transform matrices
- static const float fmatrix2x2_3x3[] =
+ static const std::array<float, 12> fmatrix2x2_3x3 =
{
1.0f, 0.0f, 0.0f,
0.5f, 0.5f, 0.5f,
@@ -98,7 +98,7 @@ void initialize_matrix_transform(SimpleTensor<T> &src, const Size2D &output_tile
0.0f, 0.0f, 1.0f
};
- static const float fmatrix4x4_3x3[] =
+ static const std::array<float, 18> 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<T> &src, const Size2D &output_tile
0.0f, 0.0f, 1.0f
};
- static const float fmatrix4x4_5x5[] =
+ static const std::array<float, 40> 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<T> &src, const Size2D &output_tile
};
- static const float fmatrix2x1_7x7[] =
+ static const std::array<float, 56> 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<T> &src, const Size2D &output_tile
// ------------------------------------------
// Winograd output transform matrices
- static const float omatrix2x2_3x3[] =
+ static const std::array<float, 8> 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<float, 24> 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<T> &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<float, 36> 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<T> &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<float, 16> 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<T> &src, const Size2D &output_tile
// Key = (Output tile size, Kernel size, Winograd transform type)
static std::map<WinogradKey, const float *> matrix_map =
{
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::INPUT), imatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::INPUT), imatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::INPUT), imatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::INPUT), imatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::INPUT), imatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::INPUT), imatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::INPUT), imatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::INPUT), imatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::INPUT), imatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::INPUT), imatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::INPUT), imatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::INPUT), imatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::FILTER), fmatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::FILTER), fmatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::FILTER), fmatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::FILTER), fmatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::OUTPUT), omatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::OUTPUT), omatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3 },
- { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::OUTPUT), omatrix4x4_5x5 },
- { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::OUTPUT), omatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7 },
- { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5 },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::INPUT), imatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::INPUT), imatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::INPUT), imatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::INPUT), imatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::INPUT), imatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::INPUT), imatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::INPUT), imatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::INPUT), imatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::INPUT), imatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::INPUT), imatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::INPUT), imatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::INPUT), imatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::FILTER), fmatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::FILTER), fmatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::FILTER), fmatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::FILTER), fmatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(3, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(3, 1), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(3, 1), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 3), WinogradTransformType::OUTPUT), omatrix2x2_3x3.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 3), WinogradTransformType::OUTPUT), omatrix4x4_3x3.data() },
+ { WinogradKey(std::pair<int, int>(4, 4), std::pair<int, int>(5, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(4, 1), std::pair<int, int>(5, 1), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() },
+ { WinogradKey(std::pair<int, int>(2, 1), std::pair<int, int>(7, 1), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 2), std::pair<int, int>(1, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(2, 2), std::pair<int, int>(7, 7), WinogradTransformType::OUTPUT), omatrix2x1_7x7.data() },
+ { WinogradKey(std::pair<int, int>(1, 4), std::pair<int, int>(1, 5), WinogradTransformType::OUTPUT), omatrix4x4_5x5.data() },
};
// Find transformation matrix