COMPMID-378 - Implemented reference implementation and tests (NEON and CL) for Non Linear Filter

Change-Id: I1b81e030a27cf01d098247a87d047099616e2a39
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/78531
Reviewed-by: Moritz Pflanzer <moritz.pflanzer@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
diff --git a/tests/validation/ReferenceCPP.h b/tests/validation/ReferenceCPP.h
index e1b71c5..8ee8f31 100644
--- a/tests/validation/ReferenceCPP.h
+++ b/tests/validation/ReferenceCPP.h
@@ -188,6 +188,19 @@
      */
     static void gemm(const RawTensor &src1, const RawTensor &src2, const RawTensor &src3,
                      RawTensor &dst, float alpha, float beta);
+    /** Compute non linear filter function.
+     *
+     * @param[in]  src                   First input tensor
+     * @param[out] dst                   Output tensor
+     * @param[in]  function              Non linear function to perform
+     * @param[in]  mask_size             Mask size. Supported sizes: 3, 5
+     * @param[in]  pattern               Matrix pattern
+     * @param[in]  mask                  The given mask.
+     * @param[in]  border_mode           Strategy to use for borders.
+     * @param[in]  constant_border_value (Optional) Constant value to use for borders if border_mode is set to CONSTANT.
+    */
+    static void non_linear_filter(const RawTensor &src, RawTensor &dst, NonLinearFilterFunction function, unsigned int mask_size,
+                                  MatrixPattern pattern, const uint8_t *mask, BorderMode border_mode, uint8_t constant_border_value = 0);
     /** Element-wise multiplication of @p src1, @p src2 and @p scale
      *
      * @param[in]  src1            First tensor.