From c785d46eb6e9596f71cbf5d253e333c88f5bca7d Mon Sep 17 00:00:00 2001 From: "Michael K. Sanders" Date: Tue, 30 Oct 2018 15:16:54 +0000 Subject: [PATCH] Adds symbolic min/max values for type enums. This abstracts the boundary values for OperandType and OperationType to avoid the need to update them in the model validation functions. Test: VtsHalNeuralnetworksV1_2TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all Test: VtsHalNeuralnetworksV1_2CompatV1_1TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all Test: VtsHalNeuralnetworksV1_2CompatV1_0TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all Change-Id: I39155148d67215e32b4eb1991b885f65d5eeaca8 --- neuralnetworks/1.2/types.hal | 24 +++++++++++++++++++ .../1.2/vts/functional/ValidateModel.cpp | 24 +++++++++---------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/neuralnetworks/1.2/types.hal b/neuralnetworks/1.2/types.hal index 4a1e7a8a40..22d0002a07 100644 --- a/neuralnetworks/1.2/types.hal +++ b/neuralnetworks/1.2/types.hal @@ -46,6 +46,18 @@ enum OperandType : @1.0::OperandType { TENSOR_FLOAT16 = 8, }; +/** + * The range of values in the OperandType enum. + * + * THE MAX VALUES MUST BE UPDATED WHEN ADDING NEW TYPES to the OperandType enum. + */ +enum OperandTypeRange : uint32_t { + OPERAND_FUNDAMENTAL_MIN = 0, + OPERAND_FUNDAMENTAL_MAX = 8, + OPERAND_OEM_MIN = 10000, + OPERAND_OEM_MAX = 10001, +}; + /** * Operation types. * @@ -105,6 +117,18 @@ enum OperationType : @1.1::OperationType { ROTATED_BBOX_TRANSFORM = 87, }; +/** + * The range of values in the OperationType enum. + * + * THE MAX VALUES MUST BE UPDATED WHEN ADDING NEW TYPES to the OperationType enum. + */ +enum OperationTypeRange : uint32_t { + OPERATION_FUNDAMENTAL_MIN = 0, + OPERATION_FUNDAMENTAL_MAX = 87, + OPERATION_OEM_MIN = 10000, + OPERATION_OEM_MAX = 10000, +}; + /** * Describes one operation of the model's graph. */ diff --git a/neuralnetworks/1.2/vts/functional/ValidateModel.cpp b/neuralnetworks/1.2/vts/functional/ValidateModel.cpp index c1c6e55e60..b4921e3305 100644 --- a/neuralnetworks/1.2/vts/functional/ValidateModel.cpp +++ b/neuralnetworks/1.2/vts/functional/ValidateModel.cpp @@ -128,16 +128,16 @@ static uint32_t addOperand(Model* model, OperandLifeTime lifetime) { ///////////////////////// VALIDATE MODEL OPERAND TYPE ///////////////////////// -static const int32_t invalidOperandTypes[] = { - static_cast(OperandType::FLOAT32) - 1, // lower bound fundamental - static_cast(OperandType::TENSOR_QUANT16_ASYMM) + 1, // upper bound fundamental - static_cast(OperandType::OEM) - 1, // lower bound OEM - static_cast(OperandType::TENSOR_OEM_BYTE) + 1, // upper bound OEM +static const uint32_t invalidOperandTypes[] = { + static_cast(OperandTypeRange::OPERAND_FUNDAMENTAL_MIN) - 1, + static_cast(OperandTypeRange::OPERAND_FUNDAMENTAL_MAX) + 1, + static_cast(OperandTypeRange::OPERAND_OEM_MIN) - 1, + static_cast(OperandTypeRange::OPERAND_OEM_MAX) + 1, }; static void mutateOperandTypeTest(const sp& device, const Model& model) { for (size_t operand = 0; operand < model.operands.size(); ++operand) { - for (int32_t invalidOperandType : invalidOperandTypes) { + for (uint32_t invalidOperandType : invalidOperandTypes) { const std::string message = "mutateOperandTypeTest: operand " + std::to_string(operand) + " set to value " + std::to_string(invalidOperandType); @@ -329,16 +329,16 @@ static void mutateOperationOperandTypeTest(const sp& device, const Mode ///////////////////////// VALIDATE MODEL OPERATION TYPE ///////////////////////// -static const int32_t invalidOperationTypes[] = { - static_cast(OperationType::ADD) - 1, // lower bound fundamental - static_cast(OperationType::TRANSPOSE) + 1, // upper bound fundamental - static_cast(OperationType::OEM_OPERATION) - 1, // lower bound OEM - static_cast(OperationType::OEM_OPERATION) + 1, // upper bound OEM +static const uint32_t invalidOperationTypes[] = { + static_cast(OperationTypeRange::OPERATION_FUNDAMENTAL_MIN) - 1, + static_cast(OperationTypeRange::OPERATION_FUNDAMENTAL_MAX) + 1, + static_cast(OperationTypeRange::OPERATION_OEM_MIN) - 1, + static_cast(OperationTypeRange::OPERATION_OEM_MAX) + 1, }; static void mutateOperationTypeTest(const sp& device, const Model& model) { for (size_t operation = 0; operation < model.operations.size(); ++operation) { - for (int32_t invalidOperationType : invalidOperationTypes) { + for (uint32_t invalidOperationType : invalidOperationTypes) { const std::string message = "mutateOperationTypeTest: operation " + std::to_string(operation) + " set to value " + std::to_string(invalidOperationType);