IVGCVSW-4407 HAL 1.3 Operators Support

* IVGCVSW-4441 Add Support for ANEURALNETWORKS_ELU
* IVGCVSW-4443 Add Support for ANEURALNETWORKS_HARD_SWISH
* IVGCVSW-4448 Add TENSOR_QUANT8_ASYMM_SIGNED data type support

Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: Idb9bb3f463b956221711423c15b6557eeb1af7db
diff --git a/1.3/HalPolicy.cpp b/1.3/HalPolicy.cpp
index 0de7573..28d7319 100644
--- a/1.3/HalPolicy.cpp
+++ b/1.3/HalPolicy.cpp
@@ -45,6 +45,8 @@
             return ConvertDequantize(operation, model, data);
         case V1_3::OperationType::DIV:
             return ConvertDiv(operation, model, data);
+        case V1_3::OperationType::ELU:
+            return ConvertElu(operation, model, data);
         case V1_3::OperationType::EQUAL:
             return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
         case V1_3::OperationType::EXPAND_DIMS:
@@ -59,6 +61,8 @@
             return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
         case V1_3::OperationType::GROUPED_CONV_2D:
             return ConvertGroupedConv2d(operation, model, data);
+        case V1_3::OperationType::HARD_SWISH:
+            return ConvertHardSwish(operation, model, data);
         case V1_3::OperationType::INSTANCE_NORMALIZATION:
             return ConvertInstanceNormalization(operation, model, data);
         case V1_3::OperationType::L2_NORMALIZATION:
@@ -223,6 +227,15 @@
     return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
 }
 
+bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
+{
+    ALOGV("hal_1_3::HalPolicy::ConvertElu()");
+    ActivationDescriptor desc;
+    desc.m_Function = ActivationFunction::Elu;
+
+    return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
+}
+
 bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
 {
     ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
@@ -247,6 +260,15 @@
     return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
 }
 
+bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
+{
+    ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
+    ActivationDescriptor desc;
+    desc.m_Function = ActivationFunction::HardSwish;
+
+    return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
+}
+
 bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
 {
     ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");