IVGCVSW-3582 Fix Skipped Pooling Hal 1.2 Tests


Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I9f9d11b19de591ec8936822ca229b4090ed318fe
diff --git a/1.2/HalPolicy.cpp b/1.2/HalPolicy.cpp
index 7515eb3..9cad29f 100644
--- a/1.2/HalPolicy.cpp
+++ b/1.2/HalPolicy.cpp
@@ -25,7 +25,6 @@
     switch (static_cast<V1_0::OperationType>(operationType))
     {
         case V1_0::OperationType::ADD:
-        case V1_0::OperationType::AVERAGE_POOL_2D:
         case V1_0::OperationType::CONCATENATION:
         case V1_0::OperationType::DEPTH_TO_SPACE:
         case V1_0::OperationType::DEQUANTIZE:
@@ -34,12 +33,10 @@
         case V1_0::OperationType::FULLY_CONNECTED:
         case V1_0::OperationType::HASHTABLE_LOOKUP:
         case V1_0::OperationType::L2_NORMALIZATION:
-        case V1_0::OperationType::L2_POOL_2D:
         case V1_0::OperationType::LOCAL_RESPONSE_NORMALIZATION:
         case V1_0::OperationType::LOGISTIC:
         case V1_0::OperationType::LSH_PROJECTION:
         case V1_0::OperationType::LSTM:
-        case V1_0::OperationType::MAX_POOL_2D:
         case V1_0::OperationType::MUL:
         case V1_0::OperationType::RESHAPE:
         case V1_0::OperationType::RNN:
@@ -131,10 +128,16 @@
 
     switch (operation.type)
     {
+        case V1_2::OperationType::AVERAGE_POOL_2D:
+            return ConvertAveragePool2d(operation, model, data);
         case V1_2::OperationType::CONV_2D:
             return ConvertConv2d(operation, model, data);
         case V1_2::OperationType::DEPTHWISE_CONV_2D:
             return ConvertDepthwiseConv2d(operation, model, data);
+        case V1_2::OperationType::L2_POOL_2D:
+            return ConvertL2Pool2d(operation, model, data);
+        case V1_2::OperationType::MAX_POOL_2D:
+            return ConvertMaxPool2d(operation, model, data);
         case V1_2::OperationType::MAXIMUM:
             return ConvertMaximum(operation, model, data);
         case V1_2::OperationType::MINIMUM:
@@ -167,6 +170,12 @@
     }
 }
 
+bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
+{
+    ALOGV("hal_1_2::HalPolicy::ConvertAveragePool2d()");
+    return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, armnn::PoolingAlgorithm::Average, model, data);
+}
+
 bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
 {
     ALOGV("hal_1_2::HalPolicy::ConvertConv2d()");
@@ -485,6 +494,18 @@
     return SetupAndTrackLayerOutputSlot<hal_1_2::HalPolicy>(operation, 0, *endLayer, model, data);
 }
 
+bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
+{
+    ALOGV("hal_1_2::HalPolicy::ConvertL2Pool2d()");
+    return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, armnn::PoolingAlgorithm::L2, model, data);
+}
+
+bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
+{
+    ALOGV("hal_1_2::HalPolicy::ConvertMaxPool2d()");
+    return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, armnn::PoolingAlgorithm::Max, model, data);
+}
+
 bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
 {
     ALOGV("hal_1_2::HalPolicy::ConvertMaximum()");
diff --git a/1.2/HalPolicy.hpp b/1.2/HalPolicy.hpp
index d11ae3c..f689613 100644
--- a/1.2/HalPolicy.hpp
+++ b/1.2/HalPolicy.hpp
@@ -31,10 +31,16 @@
     static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
 
 private:
+    static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
+
     static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
 
     static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
 
+    static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
+
+    static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
+
     static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
 
     static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);