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>
diff --git a/tests/validation/ReferenceCPP.cpp b/tests/validation/ReferenceCPP.cpp
index 15e6bac..06606c7 100644
--- a/tests/validation/ReferenceCPP.cpp
+++ b/tests/validation/ReferenceCPP.cpp
@@ -195,6 +195,15 @@
     boost::apply_visitor(tensor_visitors::depth_convert_visitor(policy, shift), s, d);
 }
 
+// Gaussian3x3 filter
+void ReferenceCPP::gaussian3x3(const RawTensor &src, RawTensor &dst, BorderMode border_mode, uint8_t constant_border_value)
+{
+    ARM_COMPUTE_ERROR_ON(src.data_type() != DataType::U8 || dst.data_type() != DataType::U8);
+    const Tensor<uint8_t> s(src.shape(), src.data_type(), src.fixed_point_position(), reinterpret_cast<const uint8_t *>(src.data()));
+    Tensor<uint8_t>       d(dst.shape(), dst.data_type(), dst.fixed_point_position(), reinterpret_cast<uint8_t *>(dst.data()));
+    tensor_operations::gaussian3x3(s, d, border_mode, constant_border_value);
+}
+
 // GEMM
 void ReferenceCPP::gemm(const RawTensor &src1, const RawTensor &src2, const RawTensor &src3,
                         RawTensor &dst, float alpha, float beta)