diff options
author | SiCong Li <sicong.li@arm.com> | 2017-06-19 14:47:05 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-09-17 14:14:20 +0100 |
commit | 5a536641d9cb7c95b4422983b0f76627cabf6bda (patch) | |
tree | 5074e114c7f95bd25aff4480e65946e0c36a31ed /tests/validation/TensorOperations.h | |
parent | d9afd9c2ec2fe28420e4c49e55ecf615c7735a44 (diff) | |
download | ComputeLibrary-5a536641d9cb7c95b4422983b0f76627cabf6bda.tar.gz |
COMPMID-424 Add tests for Gaussian3x3
* Add reference implementation and NEON CL validation tests for gaussian3x3
* Add tests for different border modes
* Incoporate PaddingCalculator
Change-Id: Ia3cd5cb2cd0b4d870a217e6aedecc01369dc2541
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/78125
Reviewed-by: Moritz Pflanzer <moritz.pflanzer@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Diffstat (limited to 'tests/validation/TensorOperations.h')
-rw-r--r-- | tests/validation/TensorOperations.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/validation/TensorOperations.h b/tests/validation/TensorOperations.h index 569559352a..4905e05732 100644 --- a/tests/validation/TensorOperations.h +++ b/tests/validation/TensorOperations.h @@ -606,6 +606,19 @@ void depth_convert<int16_t, int32_t>(const Tensor<int16_t> &in, Tensor<int32_t> } } +// Gaussian3x3 filter +template <typename T, typename = typename std::enable_if<std::is_integral<T>::value>::type> +void gaussian3x3(const Tensor<T> &in, Tensor<T> &out, BorderMode border_mode, T constant_border_value) +{ + const std::array<T, 9> filter{ { 1, 2, 1, 2, 4, 2, 1, 2, 1 } }; + const float scale = 1.f / 16.f; + for(int element_idx = 0; element_idx < in.num_elements(); ++element_idx) + { + const Coordinates id = index2coord(in.shape(), element_idx); + apply_2d_spatial_filter(id, in, out, TensorShape(3U, 3U), filter.data(), scale, border_mode, constant_border_value); + } +} + // Matrix multiplication for floating point type template <typename T, typename std::enable_if<is_floating_point<T>::value, int>::type * = nullptr> void gemm(const Tensor<T> &in1, const Tensor<T> &in2, const Tensor<T> &in3, Tensor<T> &out, float alpha, float beta) |