IVGCVSW-3225 Add QSymm16 support for Rsqrt workload
authornikraj01 <nikhil.raj@arm.com>
Fri, 14 Jun 2019 13:20:40 +0000 (14:20 +0100)
committernikraj01 <nikhil.raj@arm.com>
Fri, 14 Jun 2019 13:20:40 +0000 (14:20 +0100)
Change-Id: I83b8494af24ff271dc4cd609944a1c5c55c405e0
Signed-off-by: nikraj01 <nikhil.raj@arm.com>
src/backends/backendsCommon/WorkloadData.cpp
src/backends/reference/RefLayerSupport.cpp
src/backends/reference/test/RefCreateWorkloadTests.cpp
src/backends/reference/test/RefLayerTests.cpp

index 098e857..a1d00c6 100644 (file)
@@ -1489,7 +1489,8 @@ void RsqrtQueueDescriptor::Validate(const WorkloadInfo& workloadInfo) const
     {
             DataType::Float16,
             DataType::Float32,
-            DataType::QuantisedAsymm8
+            DataType::QuantisedAsymm8,
+            DataType::QuantisedSymm16
     };
 
     ValidateDataTypes(workloadInfo.m_InputTensorInfos[0],
index d8c942c..03c8633 100644 (file)
@@ -1136,10 +1136,11 @@ bool RefLayerSupport::IsRsqrtSupported(const TensorInfo& input,
                                        Optional<std::string&> reasonIfUnsupported) const
 {
     bool supported = true;
-    std::array<DataType,2> supportedTypes =
+    std::array<DataType,3> supportedTypes =
     {
             DataType::Float32,
-            DataType::QuantisedAsymm8
+            DataType::QuantisedAsymm8,
+            DataType::QuantisedSymm16
     };
 
     supported &= CheckSupportRule(TypeAnyOf(input, supportedTypes), reasonIfUnsupported,
index 8d15530..a0fc728 100644 (file)
@@ -682,6 +682,11 @@ BOOST_AUTO_TEST_CASE(CreateRsqrtUint8)
     RefCreateRsqrtTest<RefRsqrtWorkload, armnn::DataType::QuantisedAsymm8>();
 }
 
+BOOST_AUTO_TEST_CASE(CreateRsqrtQsymm16)
+{
+    RefCreateRsqrtTest<RefRsqrtWorkload, armnn::DataType::QuantisedSymm16>();
+}
+
 template <typename L2NormalizationWorkloadType, armnn::DataType DataType>
 static void RefCreateL2NormalizationTest(DataLayout dataLayout)
 {
index 5bab6bb..7ff6d1b 100644 (file)
@@ -574,6 +574,8 @@ ARMNN_AUTO_TEST_CASE(RsqrtZero, RsqrtZeroTest<armnn::DataType::Float32>)
 ARMNN_AUTO_TEST_CASE(RsqrtNegative, RsqrtNegativeTest<armnn::DataType::Float32>)
 ARMNN_AUTO_TEST_CASE(Rsqrt2dQuantisedAsymm8, Rsqrt2dTest<armnn::DataType::QuantisedAsymm8>)
 ARMNN_AUTO_TEST_CASE(Rsqrt3dQuantisedAsymm8, Rsqrt3dTest<armnn::DataType::QuantisedAsymm8>)
+ARMNN_AUTO_TEST_CASE(Rsqrt2dQuantisedSymm16, Rsqrt2dTest<armnn::DataType::QuantisedSymm16>)
+ARMNN_AUTO_TEST_CASE(Rsqrt3dQuantisedSymm16, Rsqrt3dTest<armnn::DataType::QuantisedSymm16>)
 
 // Permute
 ARMNN_AUTO_TEST_CASE(SimplePermuteFloat32, SimplePermuteFloat32Test)