summaryrefslogtreecommitdiff
path: root/nn/runtime/test/fuzzing
diff options
context:
space:
mode:
authorXusong Wang <xusongw@google.com>2020-03-17 17:37:33 -0700
committerXusong Wang <xusongw@google.com>2020-03-18 15:25:22 -0700
commit28bc28712ef9ae5fc2be41ae53582560c88d3f70 (patch)
tree835a67d4e55fa864b1acb58620914908b57f012d /nn/runtime/test/fuzzing
parent397d2a01f7c3da5faeb2c9039bf4110050e28002 (diff)
downloadml-28bc28712ef9ae5fc2be41ae53582560c88d3f70.tar.gz
Add TRANSPOSE with omitted permutation to RGG.
Fixes: 132323720 Test: NNT_static_fuzzing Change-Id: I681fad8ec61bace438f4dec14972dc3600236468
Diffstat (limited to 'nn/runtime/test/fuzzing')
-rw-r--r--nn/runtime/test/fuzzing/operation_signatures/OperationSignatureUtils.h7
-rw-r--r--nn/runtime/test/fuzzing/operation_signatures/Reshape.cpp35
2 files changed, 32 insertions, 10 deletions
diff --git a/nn/runtime/test/fuzzing/operation_signatures/OperationSignatureUtils.h b/nn/runtime/test/fuzzing/operation_signatures/OperationSignatureUtils.h
index 7e7bd333b..ebb3b9f0d 100644
--- a/nn/runtime/test/fuzzing/operation_signatures/OperationSignatureUtils.h
+++ b/nn/runtime/test/fuzzing/operation_signatures/OperationSignatureUtils.h
@@ -415,6 +415,13 @@ inline void defaultScalarOperandConstructor(TestOperandType dataType, uint32_t,
.constructor = [](TestOperandType, uint32_t, RandomOperand* op) { op->dataType = opType; } \
}
+// A CONST omitted operand.
+#define PARAMETER_NO_VALUE(opType) \
+ { \
+ .type = RandomOperandType::NO_VALUE, \
+ .constructor = [](TestOperandType, uint32_t, RandomOperand* op) { op->dataType = opType; } \
+ }
+
// A CONST integer scalar with value set as a FREE RandomVariable within default range.
#define RANDOM_INT_FREE \
{ \
diff --git a/nn/runtime/test/fuzzing/operation_signatures/Reshape.cpp b/nn/runtime/test/fuzzing/operation_signatures/Reshape.cpp
index 419db3a9a..55d5ddba9 100644
--- a/nn/runtime/test/fuzzing/operation_signatures/Reshape.cpp
+++ b/nn/runtime/test/fuzzing/operation_signatures/Reshape.cpp
@@ -390,16 +390,31 @@ static void transposeConstructor(TestOperandType, uint32_t rank, RandomOperation
setSameQuantization(op->outputs[0], op->inputs[0]);
}
-// TODO: Test the case when the second input is omitted.
-#define DEFINE_TRANSPOSE_SIGNATURE(ver, ...) \
- DEFINE_OPERATION_SIGNATURE(TRANSPOSE_##ver){ \
- .opType = TestOperationType::TRANSPOSE, \
- .supportedDataTypes = {__VA_ARGS__}, \
- .supportedRanks = {1, 2, 3, 4}, \
- .version = TestHalVersion::ver, \
- .inputs = {INPUT_DEFAULT, PARAMETER_NONE(TestOperandType::TENSOR_INT32)}, \
- .outputs = {OUTPUT_DEFAULT}, \
- .constructor = transposeConstructor};
+static void transposeOmittedConstructor(TestOperandType, uint32_t rank, RandomOperation* op) {
+ NN_FUZZER_CHECK(rank == 2);
+ op->inputs[0]->dimensions = {RandomVariableType::FREE, RandomVariableType::FREE};
+ op->inputs[1]->dimensions = {2};
+ op->outputs[0]->dimensions = {op->inputs[0]->dimensions[1], op->inputs[0]->dimensions[0]};
+ setSameQuantization(op->outputs[0], op->inputs[0]);
+}
+
+#define DEFINE_TRANSPOSE_SIGNATURE(ver, ...) \
+ DEFINE_OPERATION_SIGNATURE(TRANSPOSE_##ver){ \
+ .opType = TestOperationType::TRANSPOSE, \
+ .supportedDataTypes = {__VA_ARGS__}, \
+ .supportedRanks = {1, 2, 3, 4}, \
+ .version = TestHalVersion::ver, \
+ .inputs = {INPUT_DEFAULT, PARAMETER_NONE(TestOperandType::TENSOR_INT32)}, \
+ .outputs = {OUTPUT_DEFAULT}, \
+ .constructor = transposeConstructor}; \
+ DEFINE_OPERATION_SIGNATURE(TRANSPOSE_omitted_##ver){ \
+ .opType = TestOperationType::TRANSPOSE, \
+ .supportedDataTypes = {__VA_ARGS__}, \
+ .supportedRanks = {2}, \
+ .version = TestHalVersion::ver, \
+ .inputs = {INPUT_DEFAULT, PARAMETER_NO_VALUE(TestOperandType::TENSOR_INT32)}, \
+ .outputs = {OUTPUT_DEFAULT}, \
+ .constructor = transposeOmittedConstructor};
DEFINE_TRANSPOSE_SIGNATURE(V1_1, TestOperandType::TENSOR_FLOAT32,
TestOperandType::TENSOR_QUANT8_ASYMM);