diff options
author | Giorgio Arena <giorgio.arena@arm.com> | 2017-06-13 15:49:37 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-09-17 14:16:42 +0100 |
commit | 2ca209eaf3e1dee31bc2287be1f4e501697456db (patch) | |
tree | 907e59dff71eb6b082632f6940b985fb5df9b11b /tests/validation/TensorOperations.h | |
parent | d03b00acd71847fa2db1c5308c87d3b57c781bf9 (diff) | |
download | ComputeLibrary-2ca209eaf3e1dee31bc2287be1f4e501697456db.tar.gz |
COMPMID-424 NEON MinMaxLocation test.
Change-Id: I3dda0961061b52c680b5af0443ad93a00425dd4c
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/77433
Reviewed-by: Michele DiGiorgio <michele.digiorgio@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Reviewed-by: Steven Niu <steven.niu@arm.com>
Diffstat (limited to 'tests/validation/TensorOperations.h')
-rw-r--r-- | tests/validation/TensorOperations.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/validation/TensorOperations.h b/tests/validation/TensorOperations.h index 882c9e07e1..9e201e2f04 100644 --- a/tests/validation/TensorOperations.h +++ b/tests/validation/TensorOperations.h @@ -311,6 +311,56 @@ void sobel_5x5(Tensor<T1> &in, Tensor<T2> &out_x, Tensor<T2> &out_y, BorderMode } } +// Min max location +template <typename T1> +void min_max_location(const Tensor<T1> &in, int32_t &min, int32_t &max, Coordinates2DArray &min_loc, Coordinates2DArray &max_loc, uint32_t &min_count, uint32_t &max_count) +{ + // Set min and max to first pixel + min = in[0]; + max = in[0]; + min_count = 0; + max_count = 0; + + const size_t width = in.shape().x(); + + // Look for min and max values + for(int i = 1; i < in.num_elements(); ++i) + { + if(static_cast<int32_t>(in[i]) < min) + { + min = in[i]; + } + if(static_cast<int32_t>(in[i]) > max) + { + max = in[i]; + } + } + + for(int i = 0; i < in.num_elements(); ++i) + { + if(static_cast<int32_t>(in[i]) == min) + { + Coordinates2D min_coord; + min_coord.x = static_cast<int32_t>(i % width); + min_coord.y = static_cast<int32_t>(i / width); + + min_loc.push_back(min_coord); + + min_count++; + } + if(static_cast<int32_t>(in[i]) == max) + { + Coordinates2D max_coord; + max_coord.x = static_cast<int32_t>(i % width); + max_coord.y = static_cast<int32_t>(i / width); + + max_loc.push_back(max_coord); + + max_count++; + } + } +} + // Mean Standard Deviation template <typename T1> void mean_and_standard_deviation(const Tensor<T1> &in, float &mean, float &std_dev) |