IVGCVSW-7623: GpuFsa Op: Add Pool2d operator

* Add Pool2d EndToEnd tests to all backends
* Add utility functions for the attributes in a separate file
* Remove some unnecessary includes

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I0f82ebbf7b3301c6368462fb4fb4d4d02b246fc6
diff --git a/src/backends/backendsCommon/test/Pooling2dEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/Pooling2dEndToEndTestImpl.hpp
index 7a264e1..adff6e0 100644
--- a/src/backends/backendsCommon/test/Pooling2dEndToEndTestImpl.hpp
+++ b/src/backends/backendsCommon/test/Pooling2dEndToEndTestImpl.hpp
@@ -76,7 +76,8 @@
 }
 
 template<armnn::DataType ArmnnType>
-void MaxPool2dEndToEndFloat16(const std::vector<armnn::BackendId>& backends)
+void MaxPool2dEndToEndFloat16(const std::vector<armnn::BackendId>& backends,
+                              PaddingMethod padMethod = PaddingMethod::Exclude)
 {
     using namespace half_float::literal;
     using Half = half_float::half;
@@ -84,7 +85,7 @@
     const TensorShape& inputShape = { 1, 3, 3, 1 };
     const TensorShape& outputShape = { 1, 3, 3, 1 };
 
-    INetworkPtr network = CreatePooling2dNetwork<ArmnnType>(inputShape, outputShape);
+    INetworkPtr network = CreatePooling2dNetwork<ArmnnType>(inputShape, outputShape, padMethod);
     CHECK(network);
 
     std::vector<Half> inputData{ 1._h, 2._h, 3._h,
@@ -140,7 +141,7 @@
 
 template<armnn::DataType ArmnnType>
 void AvgPool2dEndToEndFloat16(const std::vector<armnn::BackendId>& backends,
-                              PaddingMethod padMethod = PaddingMethod::IgnoreValue)
+                              PaddingMethod padMethod = PaddingMethod::Exclude)
 {
     using namespace half_float::literal;
     using Half = half_float::half;
@@ -155,9 +156,19 @@
     std::vector<Half> inputData{ 1._h, 2._h, 3._h,
                                  4._h, 5._h, 6._h,
                                  7._h, 8._h, 9._h };
-    std::vector<Half> expectedOutput{ 1.33333_h, 2.33333_h, 1.77778_h,
-                                      3._h     , 5._h     , 3.66667_h,
-                                      2.66667_h, 4.33333_h, 3.11111_h };
+    std::vector<Half> expectedOutput;
+    if (padMethod == PaddingMethod::Exclude)
+    {
+        expectedOutput  = { 3._h , 3.5_h, 4._h ,
+                            4.5_h, 5._h , 5.5_h,
+                            6._h , 6.5_h, 7._h  };
+    }
+    else
+    {
+        expectedOutput  = { 1.33333_h, 2.33333_h, 1.77778_h,
+                            3._h     , 5._h     , 3.66667_h,
+                            2.66667_h, 4.33333_h, 3.11111_h };
+    }
 
     std::map<int, std::vector<Half>> inputTensorData = { { 0, inputData } };
     std::map<int, std::vector<Half>> expectedOutputData = { { 0, expectedOutput } };