Add TENSOR_QUANT16_ASYMM to operand types
Add new operand type TENSOR_QUANT16_ASYMM.
Add validation for the new type.
Modify test generator to support the new data type.
Bug: 113561892
Test: NeuralNetworksTest_static
Change-Id: Ib0af7d8ae7b67f1deb7e766d0433ecf776fc356c
Merged-In: Ib0af7d8ae7b67f1deb7e766d0433ecf776fc356c
(cherry picked from commit 4ed3fa5d279254a8d46a2112e8fdaf8441cdcd5a)
diff --git a/common/ValidateHal.cpp b/common/ValidateHal.cpp
index 30165de..be74050 100644
--- a/common/ValidateHal.cpp
+++ b/common/ValidateHal.cpp
@@ -88,6 +88,7 @@
case OperandType::TENSOR_FLOAT32:
case OperandType::TENSOR_INT32:
case OperandType::TENSOR_QUANT8_ASYMM:
+ case OperandType::TENSOR_QUANT16_ASYMM:
case OperandType::TENSOR_OEM_BYTE: {
if (operand.dimensions.size() == 0) {
LOG(ERROR) << "Operand " << index << ": Tensor has dimensions of rank 0";
@@ -135,6 +136,13 @@
return false;
}
break;
+ case OperandType::TENSOR_QUANT16_ASYMM:
+ if (operand.scale <= 0.f) {
+ LOG(ERROR) << "Operand " << index << ": Operand of type "
+ << getOperandTypeName(operand.type) << " with a non-positive scale";
+ return false;
+ }
+ break;
default:
// No validation for the OEM types.
// TODO We should have had a separate type for TENSOR_INT32 that a scale
@@ -165,6 +173,14 @@
return false;
}
break;
+ case OperandType::TENSOR_QUANT16_ASYMM:
+ if (operand.zeroPoint < -32768 || operand.zeroPoint > 32767) {
+ LOG(ERROR) << "Operand " << index << ": Operand of type "
+ << getOperandTypeName(operand.type) << " with an invalid zeroPoint "
+ << operand.zeroPoint << ", must be in range [-32768, 32767]";
+ return false;
+ }
+ break;
default:
// No validation for the OEM types.
break;
@@ -669,6 +685,7 @@
case V1_2::OperandType::TENSOR_FLOAT32:
case V1_2::OperandType::TENSOR_INT32:
case V1_2::OperandType::TENSOR_QUANT8_ASYMM:
+ case V1_2::OperandType::TENSOR_QUANT16_ASYMM:
case V1_2::OperandType::OEM:
case V1_2::OperandType::TENSOR_OEM_BYTE:
return true;