IVGCVSW-4370 Deprecate DataType::QuantizedSymm8PerAxis

!android-nn-driver:2622

Change-Id: If99d3eff71ff66ba28af1e5af248299fe04511b9
Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
diff --git a/src/backends/backendsCommon/LayerSupportRules.hpp b/src/backends/backendsCommon/LayerSupportRules.hpp
index d8b6af8..3a2ae06 100644
--- a/src/backends/backendsCommon/LayerSupportRules.hpp
+++ b/src/backends/backendsCommon/LayerSupportRules.hpp
@@ -106,6 +106,14 @@
     }
 };
 
+struct TypeNotPerAxisQuantized : public Rule
+{
+    TypeNotPerAxisQuantized(const TensorInfo& info)
+    {
+        m_Res = !info.IsQuantized() || !info.HasPerAxisQuantization();
+    }
+};
+
 struct BiasAndWeightsTypesMatch : public Rule
 {
     BiasAndWeightsTypesMatch(const TensorInfo& biases, const TensorInfo& weights)
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp
index d2ab41e..075884b 100644
--- a/src/backends/backendsCommon/WorkloadData.cpp
+++ b/src/backends/backendsCommon/WorkloadData.cpp
@@ -149,6 +149,19 @@
     }
 }
 
+void ValidPerAxisQuantizedDataType(const TensorInfo& tensor, const std::string& descName, const std::string& tensorName)
+{
+    ARMNN_NO_DEPRECATE_WARN_BEGIN
+    if (tensor.GetDataType() != DataType::QSymmS8 &&
+        tensor.GetDataType() != DataType::QuantizedSymm8PerAxis)
+    {
+        throw InvalidArgumentException(descName +
+            ": Expected data type which supports per-axis quantization scheme but got " +
+            GetDataTypeName(tensor.GetDataType()) + " for " + tensorName + " tensor.");
+    }
+    ARMNN_NO_DEPRECATE_WARN_END
+}
+
 //---------------------------------------------------------------
 void ValidateTensorQuantizationSpace(const TensorInfo& first,
                                      const TensorInfo& second,
@@ -344,11 +357,14 @@
     const DataType inputType = inputInfo.GetDataType();
     if (inputType == DataType::QAsymmU8)
     {
+        ARMNN_NO_DEPRECATE_WARN_BEGIN
         const std::vector<DataType> validTypes =
         {
             DataType::QAsymmU8,
-            DataType::QuantizedSymm8PerAxis
+            DataType::QSymmS8,
+            DataType::QuantizedSymm8PerAxis // deprecated
         };
+        ARMNN_NO_DEPRECATE_WARN_END
 
         ValidateDataTypes(weightInfo, validTypes, descName);
     }
@@ -412,7 +428,8 @@
                 "but data type does not support per-axis quantization.") % descName % "weight"));
         }
 
-        ValidateTensorDataType(weightInfo, DataType::QuantizedSymm8PerAxis, descName, "weight");
+
+        ValidPerAxisQuantizedDataType(weightInfo, descName, "weight");
         ValidatePerAxisQuantizationDimension(weightInfo, descName, "weight");
         ValidatePerAxisQuantizationOffset(weightInfo, descName, "weight");
 
diff --git a/src/backends/backendsCommon/WorkloadUtils.cpp b/src/backends/backendsCommon/WorkloadUtils.cpp
index cb1f7c1..69a6291 100644
--- a/src/backends/backendsCommon/WorkloadUtils.cpp
+++ b/src/backends/backendsCommon/WorkloadUtils.cpp
@@ -5,6 +5,8 @@
 
 #include <backendsCommon/WorkloadUtils.hpp>
 
+#include <armnn/Utils.hpp>
+
 namespace armnn
 {
 
@@ -167,9 +169,13 @@
             case DataType::QAsymmU8:
                 weightPermuted = ReorderWeightChannelsForAcl<uint8_t>(weightPermuted, dataLayout, permuteBuffer);
                 break;
+            ARMNN_NO_DEPRECATE_WARN_BEGIN
             case DataType::QuantizedSymm8PerAxis:
+                ARMNN_FALLTHROUGH;
+            case DataType::QSymmS8:
                 weightPermuted = ReorderWeightChannelsForAcl<int8_t>(weightPermuted, dataLayout, permuteBuffer);
                 break;
+            ARMNN_NO_DEPRECATE_WARN_END
             default:
                 break;
         }
diff --git a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
index 3c47eab..5c60e9e 100644
--- a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
+++ b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
@@ -616,7 +616,7 @@
     const TensorShape biasShape  { cOutput                            };
 
     constexpr DataType inputType  = DataType::QAsymmU8;
-    constexpr DataType weightType = DataType::QuantizedSymm8PerAxis;
+    constexpr DataType weightType = DataType::QSymmS8;
     constexpr DataType biasType   = DataType::Signed32;
 
     constexpr float perTensorScale = 1.5f;
diff --git a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp
index b0b2981..669398f 100644
--- a/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/Conv2dTestImpl.cpp
@@ -3049,7 +3049,7 @@
     using namespace armnn;
 
     const DataType inputType  = DataType::QAsymmU8;
-    const DataType kernelType = DataType::QuantizedSymm8PerAxis;
+    const DataType kernelType = DataType::QSymmS8;
     const DataType biasType   = DataType::Signed32;
 
     TensorInfo inputInfo ({ 1, 3, 1, 2 }, inputType, 0.5f, 128);
@@ -3273,7 +3273,7 @@
     using namespace armnn;
 
     const DataType inputType  = DataType::QAsymmU8;
-    const DataType kernelType = DataType::QuantizedSymm8PerAxis;
+    const DataType kernelType = DataType::QSymmS8;
     const DataType biasType   = DataType::Signed32;
 
     TensorInfo inputInfo ({ 1, 3, 3, 2 }, inputType, 0.5f, 128); // N H W C
diff --git a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp
index 1c88075..378ec46 100644
--- a/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp
+++ b/src/backends/backendsCommon/test/layerTests/TransposeConvolution2dTestImpl.cpp
@@ -566,7 +566,7 @@
    using namespace armnn;
 
     const DataType inputType  = DataType::QAsymmU8;
-    const DataType kernelType = DataType::QuantizedSymm8PerAxis;
+    const DataType kernelType = DataType::QSymmS8;
     const DataType biasType   = DataType::Signed32;
 
     TensorInfo inputInfo ({ 1, 1, 2, 2 }, inputType, 0.50f, 10);