COMPMID-359: Implement NEON ROIPoolingLayer

Change-Id: Ibffa738d4016d7221968bd43a4e6e1dab85baee8
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/78623
Reviewed-by: Moritz Pflanzer <moritz.pflanzer@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
diff --git a/tests/validation/TensorVisitors.h b/tests/validation/TensorVisitors.h
index a274140..1b58a16 100644
--- a/tests/validation/TensorVisitors.h
+++ b/tests/validation/TensorVisitors.h
@@ -316,6 +316,29 @@
     PoolingLayerInfo     _pool_info;
     int                  _fixed_point_position;
 };
+
+// ROI Pooling layer
+struct roi_pooling_layer_visitor : public boost::static_visitor<>
+{
+public:
+    explicit roi_pooling_layer_visitor(const TensorVariant &in, const std::vector<ROI> &rois, ROIPoolingLayerInfo pool_info)
+        : _in(in), _rois(rois), _pool_info(pool_info)
+    {
+    }
+
+    template <typename T>
+    void operator()(Tensor<T> &out) const
+    {
+        const Tensor<T> &in = boost::get<Tensor<T>>(_in);
+        tensor_operations::roi_pooling_layer(in, out, _rois, _pool_info);
+    }
+
+private:
+    const TensorVariant    &_in;
+    const std::vector<ROI> &_rois;
+    ROIPoolingLayerInfo     _pool_info;
+};
+
 // Softmax Layer visitor
 struct softmax_layer_visitor : public boost::static_visitor<>
 {