diff options
author | Slava Shklyaev <slavash@google.com> | 2020-03-10 17:51:48 +0000 |
---|---|---|
committer | Slava Shklyaev <slavash@google.com> | 2020-03-18 10:29:58 +0000 |
commit | fa37af3890fcf25c56fc0ff58f85b2ca3a9328b0 (patch) | |
tree | b8e90b9518e436317037c841ddd9de56926ecf0e /nn | |
parent | a52c7f4aadc88ed25547f8869dcde4e934e0d5eb (diff) | |
download | ml-fa37af3890fcf25c56fc0ff58f85b2ca3a9328b0.tar.gz |
Add AllOutputsAsInternalCoverter
The variation is used in control flow tests.
Bug: 149199424
Test: generate_all_tests.sh
Test: NNT_static
Change-Id: I542f7be5338d878a822f9ae69edea23e387fdf08
Merged-In: I542f7be5338d878a822f9ae69edea23e387fdf08
(cherry picked from commit 6883f803060f6dd81c90359ff6512845ad8b40ea)
Diffstat (limited to 'nn')
-rw-r--r-- | nn/runtime/test/generated/spec_V1_3/if_same_branch_model.example.cpp | 898 | ||||
-rw-r--r-- | nn/runtime/test/generated/spec_V1_3/if_simple.example.cpp | 374 | ||||
-rw-r--r-- | nn/runtime/test/generated/spec_V1_3/while_fib.example.cpp | 1415 | ||||
-rw-r--r-- | nn/runtime/test/generated/spec_V1_3/while_sum_of_powers.example.cpp | 4457 | ||||
-rw-r--r-- | nn/runtime/test/specs/V1_3/if_same_branch_model.mod.py | 43 | ||||
-rw-r--r-- | nn/runtime/test/specs/V1_3/if_simple.mod.py | 29 | ||||
-rw-r--r-- | nn/runtime/test/specs/V1_3/while_fib.mod.py | 27 | ||||
-rw-r--r-- | nn/runtime/test/specs/V1_3/while_sum_of_powers.mod.py | 29 | ||||
-rw-r--r-- | nn/tools/test_generator/README.md | 7 | ||||
-rwxr-xr-x | nn/tools/test_generator/test_generator.py | 56 |
10 files changed, 7020 insertions, 315 deletions
diff --git a/nn/runtime/test/generated/spec_V1_3/if_same_branch_model.example.cpp b/nn/runtime/test/generated/spec_V1_3/if_same_branch_model.example.cpp new file mode 100644 index 000000000..97acdd230 --- /dev/null +++ b/nn/runtime/test/generated/spec_V1_3/if_same_branch_model.example.cpp @@ -0,0 +1,898 @@ +// Generated from if_same_branch_model.mod.py +// DO NOT EDIT +// clang-format off +#include "TestHarness.h" +using namespace test_helper; + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_true() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({true}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }}, + .outputIndexes = {4} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_true = TestModelManager::get().add("if_same_branch_model_true", get_test_model_true()); + +} // namespace generated_tests::if_same_branch_model + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_true_all_inputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({true}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {5, 6, 7}, + .outputs = {3}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }}, + .outputIndexes = {4} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_true_all_inputs_as_internal = TestModelManager::get().add("if_same_branch_model_true_all_inputs_as_internal", get_test_model_true_all_inputs_as_internal()); + +} // namespace generated_tests::if_same_branch_model + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_true_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({true}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }, { + .inputs = {4, 5, 6}, + .outputs = {7}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {7} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_true_all_outputs_as_internal = TestModelManager::get().add("if_same_branch_model_true_all_outputs_as_internal", get_test_model_true_all_outputs_as_internal()); + +} // namespace generated_tests::if_same_branch_model + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_false() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({false}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }}, + .outputIndexes = {4} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_false = TestModelManager::get().add("if_same_branch_model_false", get_test_model_false()); + +} // namespace generated_tests::if_same_branch_model + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_false_all_inputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({false}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {5, 6, 7}, + .outputs = {3}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }}, + .outputIndexes = {4} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_false_all_inputs_as_internal = TestModelManager::get().add("if_same_branch_model_false_all_inputs_as_internal", get_test_model_false_all_inputs_as_internal()); + +} // namespace generated_tests::if_same_branch_model + +namespace generated_tests::if_same_branch_model { + +const TestModel& get_test_model_false_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {0, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({false}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }, { + .inputs = {4, 5, 6}, + .outputs = {7}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {7} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2}, + .outputs = {3}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {3} + }} + }; + return model; +} + +const auto dummy_test_model_false_all_outputs_as_internal = TestModelManager::get().add("if_same_branch_model_false_all_outputs_as_internal", get_test_model_false_all_outputs_as_internal()); + +} // namespace generated_tests::if_same_branch_model + diff --git a/nn/runtime/test/generated/spec_V1_3/if_simple.example.cpp b/nn/runtime/test/generated/spec_V1_3/if_simple.example.cpp index 270ec9cda..3841d5e47 100644 --- a/nn/runtime/test/generated/spec_V1_3/if_simple.example.cpp +++ b/nn/runtime/test/generated/spec_V1_3/if_simple.example.cpp @@ -390,7 +390,7 @@ const auto dummy_test_model_true_all_inputs_as_internal = TestModelManager::get( namespace generated_tests::if_simple { -const TestModel& get_test_model_false() { +const TestModel& get_test_model_true_all_outputs_as_internal() { static TestModel model = { .expectFailure = false, .expectedMultinomialDistributionTolerance = 0, @@ -399,7 +399,7 @@ const TestModel& get_test_model_false() { .inputIndexes = {0, 3}, .operands = {{ .channelQuant = {}, - .data = TestBuffer::createFromVector<bool8>({false}), + .data = TestBuffer::createFromVector<bool8>({true}), .dimensions = {1}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, @@ -439,7 +439,37 @@ const TestModel& get_test_model_false() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({-99.0f, -98.0f, -97.0f, -96.0f, -95.0f, -94.0f, -93.0f, -92.0f, -91.0f, -90.0f, -89.0f, -88.0f}), + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, @@ -452,8 +482,12 @@ const TestModel& get_test_model_false() { .inputs = {0, 1, 2, 3}, .outputs = {4}, .type = TestOperationType::IF + }, { + .inputs = {4, 5, 6}, + .outputs = {7}, + .type = TestOperationType::ADD }}, - .outputIndexes = {4} + .outputIndexes = {7} }, .minSupportedVersion = TestHalVersion::V1_3, .referenced = {{ @@ -559,19 +593,19 @@ const TestModel& get_test_model_false() { return model; } -const auto dummy_test_model_false = TestModelManager::get().add("if_simple_false", get_test_model_false()); +const auto dummy_test_model_true_all_outputs_as_internal = TestModelManager::get().add("if_simple_true_all_outputs_as_internal", get_test_model_true_all_outputs_as_internal()); } // namespace generated_tests::if_simple namespace generated_tests::if_simple { -const TestModel& get_test_model_false_all_inputs_as_internal() { +const TestModel& get_test_model_false() { static TestModel model = { .expectFailure = false, .expectedMultinomialDistributionTolerance = 0, .isRelaxed = false, .main = { - .inputIndexes = {0, 5}, + .inputIndexes = {0, 3}, .operands = {{ .channelQuant = {}, .data = TestBuffer::createFromVector<bool8>({false}), @@ -604,10 +638,10 @@ const TestModel& get_test_model_false_all_inputs_as_internal() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({}), + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), .dimensions = {3, 4}, .isIgnored = false, - .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, .numberOfConsumers = 1, .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, @@ -622,42 +656,8 @@ const TestModel& get_test_model_false_all_inputs_as_internal() { .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), - .dimensions = {3, 4}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({0.0f}), - .dimensions = {1}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<int32_t>({0}), - .dimensions = {}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::INT32, - .zeroPoint = 0 }}, .operations = {{ - .inputs = {5, 6, 7}, - .outputs = {3}, - .type = TestOperationType::ADD - }, { .inputs = {0, 1, 2, 3}, .outputs = {4}, .type = TestOperationType::IF @@ -768,22 +768,22 @@ const TestModel& get_test_model_false_all_inputs_as_internal() { return model; } -const auto dummy_test_model_false_all_inputs_as_internal = TestModelManager::get().add("if_simple_false_all_inputs_as_internal", get_test_model_false_all_inputs_as_internal()); +const auto dummy_test_model_false = TestModelManager::get().add("if_simple_false", get_test_model_false()); } // namespace generated_tests::if_simple namespace generated_tests::if_simple { -const TestModel& get_test_model_same_branch_model_true() { +const TestModel& get_test_model_false_all_inputs_as_internal() { static TestModel model = { .expectFailure = false, .expectedMultinomialDistributionTolerance = 0, .isRelaxed = false, .main = { - .inputIndexes = {0, 3}, + .inputIndexes = {0, 5}, .operands = {{ .channelQuant = {}, - .data = TestBuffer::createFromVector<bool8>({true}), + .data = TestBuffer::createFromVector<bool8>({false}), .dimensions = {1}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, @@ -803,7 +803,7 @@ const TestModel& get_test_model_same_branch_model_true() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), + .data = TestBuffer::createFromVector<uint32_t>({1}), .dimensions = {}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH, @@ -813,17 +813,17 @@ const TestModel& get_test_model_same_branch_model_true() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), + .data = TestBuffer::createFromVector<float>({}), .dimensions = {3, 4}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, .numberOfConsumers = 1, .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), + .data = TestBuffer::createFromVector<float>({-99.0f, -98.0f, -97.0f, -96.0f, -95.0f, -94.0f, -93.0f, -92.0f, -91.0f, -90.0f, -89.0f, -88.0f}), .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, @@ -831,20 +831,9 @@ const TestModel& get_test_model_same_branch_model_true() { .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 - }}, - .operations = {{ - .inputs = {0, 1, 2, 3}, - .outputs = {4}, - .type = TestOperationType::IF - }}, - .outputIndexes = {4} - }, - .minSupportedVersion = TestHalVersion::V1_3, - .referenced = {{ - .inputIndexes = {0}, - .operands = {{ + }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({}), + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, @@ -854,7 +843,7 @@ const TestModel& get_test_model_same_branch_model_true() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({100.0f}), + .data = TestBuffer::createFromVector<float>({0.0f}), .dimensions = {1}, .isIgnored = false, .lifetime = TestOperandLifeTime::CONSTANT_COPY, @@ -872,135 +861,69 @@ const TestModel& get_test_model_same_branch_model_true() { .scale = 0.0f, .type = TestOperandType::INT32, .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({}), - .dimensions = {3, 4}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, - .numberOfConsumers = 0, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 }}, .operations = {{ - .inputs = {0, 1, 2}, + .inputs = {5, 6, 7}, .outputs = {3}, .type = TestOperationType::ADD + }, { + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF }}, - .outputIndexes = {3} - }} - }; - return model; -} - -const auto dummy_test_model_same_branch_model_true = TestModelManager::get().add("if_simple_same_branch_model_true", get_test_model_same_branch_model_true()); - -} // namespace generated_tests::if_simple - -namespace generated_tests::if_simple { - -const TestModel& get_test_model_same_branch_model_true_all_inputs_as_internal() { - static TestModel model = { - .expectFailure = false, - .expectedMultinomialDistributionTolerance = 0, - .isRelaxed = false, - .main = { - .inputIndexes = {0, 5}, + .outputIndexes = {4} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, .operands = {{ .channelQuant = {}, - .data = TestBuffer::createFromVector<bool8>({true}), - .dimensions = {1}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::TENSOR_BOOL8, + .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), - .dimensions = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::SUBGRAPH, + .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), + .data = TestBuffer::createFromVector<int32_t>({0}), .dimensions = {}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::SUBGRAPH, + .type = TestOperandType::INT32, .zeroPoint = 0 }, { .channelQuant = {}, .data = TestBuffer::createFromVector<float>({}), .dimensions = {3, 4}, .isIgnored = false, - .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), - .dimensions = {3, 4}, - .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, .numberOfConsumers = 0, .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), - .dimensions = {3, 4}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({0.0f}), - .dimensions = {1}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<int32_t>({0}), - .dimensions = {}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::INT32, - .zeroPoint = 0 }}, .operations = {{ - .inputs = {5, 6, 7}, + .inputs = {0, 1, 2}, .outputs = {3}, .type = TestOperationType::ADD - }, { - .inputs = {0, 1, 2, 3}, - .outputs = {4}, - .type = TestOperationType::IF }}, - .outputIndexes = {4} - }, - .minSupportedVersion = TestHalVersion::V1_3, - .referenced = {{ + .outputIndexes = {3} + }, { .inputIndexes = {0}, .operands = {{ .channelQuant = {}, @@ -1046,7 +969,7 @@ const TestModel& get_test_model_same_branch_model_true_all_inputs_as_internal() .operations = {{ .inputs = {0, 1, 2}, .outputs = {3}, - .type = TestOperationType::ADD + .type = TestOperationType::SUB }}, .outputIndexes = {3} }} @@ -1054,13 +977,13 @@ const TestModel& get_test_model_same_branch_model_true_all_inputs_as_internal() return model; } -const auto dummy_test_model_same_branch_model_true_all_inputs_as_internal = TestModelManager::get().add("if_simple_same_branch_model_true_all_inputs_as_internal", get_test_model_same_branch_model_true_all_inputs_as_internal()); +const auto dummy_test_model_false_all_inputs_as_internal = TestModelManager::get().add("if_simple_false_all_inputs_as_internal", get_test_model_false_all_inputs_as_internal()); } // namespace generated_tests::if_simple namespace generated_tests::if_simple { -const TestModel& get_test_model_same_branch_model_false() { +const TestModel& get_test_model_false_all_outputs_as_internal() { static TestModel model = { .expectFailure = false, .expectedMultinomialDistributionTolerance = 0, @@ -1089,7 +1012,7 @@ const TestModel& get_test_model_same_branch_model_false() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), + .data = TestBuffer::createFromVector<uint32_t>({1}), .dimensions = {}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH, @@ -1109,38 +1032,17 @@ const TestModel& get_test_model_same_branch_model_false() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), - .dimensions = {3, 4}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, - .numberOfConsumers = 0, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }}, - .operations = {{ - .inputs = {0, 1, 2, 3}, - .outputs = {4}, - .type = TestOperationType::IF - }}, - .outputIndexes = {4} - }, - .minSupportedVersion = TestHalVersion::V1_3, - .referenced = {{ - .inputIndexes = {0}, - .operands = {{ - .channelQuant = {}, .data = TestBuffer::createFromVector<float>({}), .dimensions = {3, 4}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, .numberOfConsumers = 1, .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({100.0f}), + .data = TestBuffer::createFromVector<float>({0.0f}), .dimensions = {1}, .isIgnored = false, .lifetime = TestOperandLifeTime::CONSTANT_COPY, @@ -1160,7 +1062,7 @@ const TestModel& get_test_model_same_branch_model_false() { .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({}), + .data = TestBuffer::createFromVector<float>({-99.0f, -98.0f, -97.0f, -96.0f, -95.0f, -94.0f, -93.0f, -92.0f, -91.0f, -90.0f, -89.0f, -88.0f}), .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, @@ -1170,123 +1072,67 @@ const TestModel& get_test_model_same_branch_model_false() { .zeroPoint = 0 }}, .operations = {{ - .inputs = {0, 1, 2}, - .outputs = {3}, + .inputs = {0, 1, 2, 3}, + .outputs = {4}, + .type = TestOperationType::IF + }, { + .inputs = {4, 5, 6}, + .outputs = {7}, .type = TestOperationType::ADD }}, - .outputIndexes = {3} - }} - }; - return model; -} - -const auto dummy_test_model_same_branch_model_false = TestModelManager::get().add("if_simple_same_branch_model_false", get_test_model_same_branch_model_false()); - -} // namespace generated_tests::if_simple - -namespace generated_tests::if_simple { - -const TestModel& get_test_model_same_branch_model_false_all_inputs_as_internal() { - static TestModel model = { - .expectFailure = false, - .expectedMultinomialDistributionTolerance = 0, - .isRelaxed = false, - .main = { - .inputIndexes = {0, 5}, + .outputIndexes = {7} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0}, .operands = {{ .channelQuant = {}, - .data = TestBuffer::createFromVector<bool8>({false}), - .dimensions = {1}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {3, 4}, .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::TENSOR_BOOL8, + .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), - .dimensions = {}, + .data = TestBuffer::createFromVector<float>({100.0f}), + .dimensions = {1}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::SUBGRAPH, + .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 }, { .channelQuant = {}, - .data = TestBuffer::createFromVector<uint32_t>({0}), + .data = TestBuffer::createFromVector<int32_t>({0}), .dimensions = {}, .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, .numberOfConsumers = 1, .scale = 0.0f, - .type = TestOperandType::SUBGRAPH, + .type = TestOperandType::INT32, .zeroPoint = 0 }, { .channelQuant = {}, .data = TestBuffer::createFromVector<float>({}), .dimensions = {3, 4}, .isIgnored = false, - .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({101.0f, 102.0f, 103.0f, 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f, 112.0f}), - .dimensions = {3, 4}, - .isIgnored = false, .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, .numberOfConsumers = 0, .scale = 0.0f, .type = TestOperandType::TENSOR_FLOAT32, .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}), - .dimensions = {3, 4}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<float>({0.0f}), - .dimensions = {1}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::TENSOR_FLOAT32, - .zeroPoint = 0 - }, { - .channelQuant = {}, - .data = TestBuffer::createFromVector<int32_t>({0}), - .dimensions = {}, - .isIgnored = false, - .lifetime = TestOperandLifeTime::CONSTANT_COPY, - .numberOfConsumers = 1, - .scale = 0.0f, - .type = TestOperandType::INT32, - .zeroPoint = 0 }}, .operations = {{ - .inputs = {5, 6, 7}, + .inputs = {0, 1, 2}, .outputs = {3}, .type = TestOperationType::ADD - }, { - .inputs = {0, 1, 2, 3}, - .outputs = {4}, - .type = TestOperationType::IF }}, - .outputIndexes = {4} - }, - .minSupportedVersion = TestHalVersion::V1_3, - .referenced = {{ + .outputIndexes = {3} + }, { .inputIndexes = {0}, .operands = {{ .channelQuant = {}, @@ -1332,7 +1178,7 @@ const TestModel& get_test_model_same_branch_model_false_all_inputs_as_internal() .operations = {{ .inputs = {0, 1, 2}, .outputs = {3}, - .type = TestOperationType::ADD + .type = TestOperationType::SUB }}, .outputIndexes = {3} }} @@ -1340,7 +1186,7 @@ const TestModel& get_test_model_same_branch_model_false_all_inputs_as_internal() return model; } -const auto dummy_test_model_same_branch_model_false_all_inputs_as_internal = TestModelManager::get().add("if_simple_same_branch_model_false_all_inputs_as_internal", get_test_model_same_branch_model_false_all_inputs_as_internal()); +const auto dummy_test_model_false_all_outputs_as_internal = TestModelManager::get().add("if_simple_false_all_outputs_as_internal", get_test_model_false_all_outputs_as_internal()); } // namespace generated_tests::if_simple diff --git a/nn/runtime/test/generated/spec_V1_3/while_fib.example.cpp b/nn/runtime/test/generated/spec_V1_3/while_fib.example.cpp index 98b6515d9..3d4164b8a 100644 --- a/nn/runtime/test/generated/spec_V1_3/while_fib.example.cpp +++ b/nn/runtime/test/generated/spec_V1_3/while_fib.example.cpp @@ -787,6 +787,289 @@ const auto dummy_test_model_1_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_fib { +const TestModel& get_test_model_1_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4}, + .outputs = {5}, + .type = TestOperationType::WHILE + }, { + .inputs = {5, 6, 7}, + .outputs = {8}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {8} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {3}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {3} + }, { + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 1.0f, 1.0f, 1.0f}), + .dimensions = {2, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 0.0f}), + .dimensions = {2, 1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 5, 6}, + .outputs = {4}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 7, 8, 9}, + .outputs = {3}, + .type = TestOperationType::FULLY_CONNECTED + }}, + .outputIndexes = {3, 4} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_outputs_as_internal = TestModelManager::get().add("while_fib_1_all_outputs_as_internal", get_test_model_1_all_outputs_as_internal()); + +} // namespace generated_tests::while_fib + +namespace generated_tests::while_fib { + const TestModel& get_test_model_2() { static TestModel model = { .expectFailure = false, @@ -1568,6 +1851,289 @@ const auto dummy_test_model_2_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_fib { +const TestModel& get_test_model_2_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({2}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 2.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4}, + .outputs = {5}, + .type = TestOperationType::WHILE + }, { + .inputs = {5, 6, 7}, + .outputs = {8}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {8} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {3}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {3} + }, { + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 1.0f, 1.0f, 1.0f}), + .dimensions = {2, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 0.0f}), + .dimensions = {2, 1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 5, 6}, + .outputs = {4}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 7, 8, 9}, + .outputs = {3}, + .type = TestOperationType::FULLY_CONNECTED + }}, + .outputIndexes = {3, 4} + }} + }; + return model; +} + +const auto dummy_test_model_2_all_outputs_as_internal = TestModelManager::get().add("while_fib_2_all_outputs_as_internal", get_test_model_2_all_outputs_as_internal()); + +} // namespace generated_tests::while_fib + +namespace generated_tests::while_fib { + const TestModel& get_test_model_3() { static TestModel model = { .expectFailure = false, @@ -2349,6 +2915,289 @@ const auto dummy_test_model_3_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_fib { +const TestModel& get_test_model_3_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({3}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4}, + .outputs = {5}, + .type = TestOperationType::WHILE + }, { + .inputs = {5, 6, 7}, + .outputs = {8}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {8} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {3}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {3} + }, { + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 1.0f, 1.0f, 1.0f}), + .dimensions = {2, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 0.0f}), + .dimensions = {2, 1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 5, 6}, + .outputs = {4}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 7, 8, 9}, + .outputs = {3}, + .type = TestOperationType::FULLY_CONNECTED + }}, + .outputIndexes = {3, 4} + }} + }; + return model; +} + +const auto dummy_test_model_3_all_outputs_as_internal = TestModelManager::get().add("while_fib_3_all_outputs_as_internal", get_test_model_3_all_outputs_as_internal()); + +} // namespace generated_tests::while_fib + +namespace generated_tests::while_fib { + const TestModel& get_test_model_4() { static TestModel model = { .expectFailure = false, @@ -3130,6 +3979,289 @@ const auto dummy_test_model_4_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_fib { +const TestModel& get_test_model_4_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({4}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 5.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4}, + .outputs = {5}, + .type = TestOperationType::WHILE + }, { + .inputs = {5, 6, 7}, + .outputs = {8}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {8} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {3}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {3} + }, { + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 1.0f, 1.0f, 1.0f}), + .dimensions = {2, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 0.0f}), + .dimensions = {2, 1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 5, 6}, + .outputs = {4}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 7, 8, 9}, + .outputs = {3}, + .type = TestOperationType::FULLY_CONNECTED + }}, + .outputIndexes = {3, 4} + }} + }; + return model; +} + +const auto dummy_test_model_4_all_outputs_as_internal = TestModelManager::get().add("while_fib_4_all_outputs_as_internal", get_test_model_4_all_outputs_as_internal()); + +} // namespace generated_tests::while_fib + +namespace generated_tests::while_fib { + const TestModel& get_test_model_5() { static TestModel model = { .expectFailure = false, @@ -3909,3 +5041,286 @@ const auto dummy_test_model_5_all_tensors_as_inputs_all_inputs_as_internal = Tes } // namespace generated_tests::while_fib +namespace generated_tests::while_fib { + +const TestModel& get_test_model_5_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({5}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({5.0f, 8.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4}, + .outputs = {5}, + .type = TestOperationType::WHILE + }, { + .inputs = {5, 6, 7}, + .outputs = {8}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {8} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {3}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {3} + }, { + .inputIndexes = {0, 1, 2}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 1.0f, 1.0f, 1.0f}), + .dimensions = {2, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f, 0.0f}), + .dimensions = {2, 1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 5, 6}, + .outputs = {4}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 7, 8, 9}, + .outputs = {3}, + .type = TestOperationType::FULLY_CONNECTED + }}, + .outputIndexes = {3, 4} + }} + }; + return model; +} + +const auto dummy_test_model_5_all_outputs_as_internal = TestModelManager::get().add("while_fib_5_all_outputs_as_internal", get_test_model_5_all_outputs_as_internal()); + +} // namespace generated_tests::while_fib + diff --git a/nn/runtime/test/generated/spec_V1_3/while_sum_of_powers.example.cpp b/nn/runtime/test/generated/spec_V1_3/while_sum_of_powers.example.cpp index f0c323770..3e0a72ad6 100644 --- a/nn/runtime/test/generated/spec_V1_3/while_sum_of_powers.example.cpp +++ b/nn/runtime/test/generated/spec_V1_3/while_sum_of_powers.example.cpp @@ -1968,6 +1968,2966 @@ const auto dummy_test_model_1_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_sum_of_powers { +const TestModel& get_test_model_1_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }, { + .inputs = {6, 7, 8}, + .outputs = {9}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {9} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_outputs_as_internal = TestModelManager::get().add("while_sum_of_powers_1_all_outputs_as_internal", get_test_model_1_all_outputs_as_internal()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_1_2() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }}, + .outputIndexes = {6} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_2 = TestModelManager::get().add("while_sum_of_powers_1_2", get_test_model_1_2()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_1_all_inputs_as_internal_2() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 7}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {7, 8, 9}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }}, + .outputIndexes = {6} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_inputs_as_internal_2 = TestModelManager::get().add("while_sum_of_powers_1_all_inputs_as_internal_2", get_test_model_1_all_inputs_as_internal_2()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_1_all_tensors_as_inputs_2() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {2, 4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }}, + .outputIndexes = {6} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_tensors_as_inputs_2 = TestModelManager::get().add("while_sum_of_powers_1_all_tensors_as_inputs_2", get_test_model_1_all_tensors_as_inputs_2()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_1_all_tensors_as_inputs_all_inputs_as_internal_2() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 7, 10}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {7, 8, 9}, + .outputs = {2}, + .type = TestOperationType::ADD + }, { + .inputs = {10, 11, 12}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }}, + .outputIndexes = {6} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_tensors_as_inputs_all_inputs_as_internal_2 = TestModelManager::get().add("while_sum_of_powers_1_all_tensors_as_inputs_all_inputs_as_internal_2", get_test_model_1_all_tensors_as_inputs_all_inputs_as_internal_2()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_1_all_outputs_as_internal_2() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({3.0f, 4.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }, { + .inputs = {6, 7, 8}, + .outputs = {9}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {9} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_1_all_outputs_as_internal_2 = TestModelManager::get().add("while_sum_of_powers_1_all_outputs_as_internal_2", get_test_model_1_all_outputs_as_internal_2()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + const TestModel& get_test_model_2() { static TestModel model = { .expectFailure = false, @@ -3930,6 +6890,505 @@ const auto dummy_test_model_2_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_sum_of_powers { +const TestModel& get_test_model_2_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({2}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({7.0f, 13.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }, { + .inputs = {6, 7, 8}, + .outputs = {9}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {9} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_2_all_outputs_as_internal = TestModelManager::get().add("while_sum_of_powers_2_all_outputs_as_internal", get_test_model_2_all_outputs_as_internal()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + const TestModel& get_test_model_3() { static TestModel model = { .expectFailure = false, @@ -5892,6 +9351,505 @@ const auto dummy_test_model_3_all_tensors_as_inputs_all_inputs_as_internal = Tes namespace generated_tests::while_sum_of_powers { +const TestModel& get_test_model_3_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({3}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({15.0f, 40.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }, { + .inputs = {6, 7, 8}, + .outputs = {9}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {9} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_3_all_outputs_as_internal = TestModelManager::get().add("while_sum_of_powers_3_all_outputs_as_internal", get_test_model_3_all_outputs_as_internal()); + +} // namespace generated_tests::while_sum_of_powers + +namespace generated_tests::while_sum_of_powers { + const TestModel& get_test_model_4() { static TestModel model = { .expectFailure = false, @@ -7852,3 +11810,502 @@ const auto dummy_test_model_4_all_tensors_as_inputs_all_inputs_as_internal = Tes } // namespace generated_tests::while_sum_of_powers +namespace generated_tests::while_sum_of_powers { + +const TestModel& get_test_model_4_all_outputs_as_internal() { + static TestModel model = { + .expectFailure = false, + .expectedMultinomialDistributionTolerance = 0, + .isRelaxed = false, + .main = { + .inputIndexes = {4, 5}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({1}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({1.0f, 1.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({4}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({2.0f, 3.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({0.0f}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({31.0f, 121.0f}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 1, 2, 3, 4, 5}, + .outputs = {6}, + .type = TestOperationType::WHILE + }, { + .inputs = {6, 7, 8}, + .outputs = {9}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {9} + }, + .minSupportedVersion = TestHalVersion::V1_3, + .referenced = {{ + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS_EQUAL + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 2, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({2}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<uint32_t>({3}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::SUBGRAPH, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::TEMPORARY_VARIABLE, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {6, 7, 3, 8, 1, 3}, + .outputs = {9}, + .type = TestOperationType::WHILE + }, { + .inputs = {1, 10, 11}, + .outputs = {5}, + .type = TestOperationType::ADD + }, { + .inputs = {0, 9, 12}, + .outputs = {4}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<bool8>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_BOOL8, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {1, 2}, + .outputs = {4}, + .type = TestOperationType::LESS + }}, + .outputIndexes = {4} + }, { + .inputIndexes = {0, 1, 2, 3}, + .operands = {{ + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_INPUT, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<float>({}), + .dimensions = {1, 2}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_FLOAT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::SUBGRAPH_OUTPUT, + .numberOfConsumers = 0, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({1}), + .dimensions = {1}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::TENSOR_INT32, + .zeroPoint = 0 + }, { + .channelQuant = {}, + .data = TestBuffer::createFromVector<int32_t>({0}), + .dimensions = {}, + .isIgnored = false, + .lifetime = TestOperandLifeTime::CONSTANT_COPY, + .numberOfConsumers = 1, + .scale = 0.0f, + .type = TestOperandType::INT32, + .zeroPoint = 0 + }}, + .operations = {{ + .inputs = {0, 3, 6}, + .outputs = {4}, + .type = TestOperationType::MUL + }, { + .inputs = {1, 7, 8}, + .outputs = {5}, + .type = TestOperationType::ADD + }}, + .outputIndexes = {4, 5} + }} + }; + return model; +} + +const auto dummy_test_model_4_all_outputs_as_internal = TestModelManager::get().add("while_sum_of_powers_4_all_outputs_as_internal", get_test_model_4_all_outputs_as_internal()); + +} // namespace generated_tests::while_sum_of_powers + diff --git a/nn/runtime/test/specs/V1_3/if_same_branch_model.mod.py b/nn/runtime/test/specs/V1_3/if_same_branch_model.mod.py new file mode 100644 index 000000000..189b67c6f --- /dev/null +++ b/nn/runtime/test/specs/V1_3/if_same_branch_model.mod.py @@ -0,0 +1,43 @@ +# +# Copyright (C) 2020 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Test with multiple references to the same referenced model. +# Model: z = if (x) then (y + 100) else (y + 100) + +input_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +output_add = [y + 100 for y in input_data] + +ValueType = ["TENSOR_FLOAT32", [3, 4]] +BoolType = ["TENSOR_BOOL8", [1]] + +def MakeBranchModel(operation_name): + y = Input("y", ValueType) + z = Output("z", ValueType) + return Model().Operation(operation_name, y, [100.0], 0).To(z) + +def Test(x, y, z, name): + x_data, y_data, z_data = x, y, z + x = Input("x", BoolType) + y = Input("y", ValueType) + z = Output("z", ValueType) + then_model = MakeBranchModel("ADD") + else_model = then_model + model = Model().Operation("IF", x, then_model, else_model, y).To(z) + example = Example({x: [x_data], y: y_data, z: z_data}, name=name) + example.AddVariations(AllOutputsAsInternalCoverter()) + +Test(x=True, y=input_data, z=output_add, name="true") +Test(x=False, y=input_data, z=output_add, name="false") diff --git a/nn/runtime/test/specs/V1_3/if_simple.mod.py b/nn/runtime/test/specs/V1_3/if_simple.mod.py index c13446588..1cc717374 100644 --- a/nn/runtime/test/specs/V1_3/if_simple.mod.py +++ b/nn/runtime/test/specs/V1_3/if_simple.mod.py @@ -28,19 +28,16 @@ def MakeBranchModel(operation_name): z = Output("z", ValueType) return Model().Operation(operation_name, y, [100.0], 0).To(z) -x = Input("x", BoolType) -y = Input("y", ValueType) -z = Output("z", ValueType) -then_model = MakeBranchModel("ADD") -else_model = MakeBranchModel("SUB") -model = Model().Operation("IF", x, then_model, else_model, y).To(z) - -Example({x: [True], y: input_data, z: output_add}, name="true", model=model) -Example({x: [False], y: input_data, z: output_sub}, name="false", model=model) - -# Test with multiple references to the same referenced model. -model = Model(name="same_branch_model") -model.Operation("IF", x, then_model, then_model, y).To(z) - -Example({x: [True], y: input_data, z: output_add}, name="true", model=model) -Example({x: [False], y: input_data, z: output_add}, name="false", model=model) +def Test(x, y, z, name): + x_data, y_data, z_data = x, y, z + x = Input("x", BoolType) + y = Input("y", ValueType) + z = Output("z", ValueType) + then_model = MakeBranchModel("ADD") + else_model = MakeBranchModel("SUB") + model = Model().Operation("IF", x, then_model, else_model, y).To(z) + example = Example({x: [x_data], y: y_data, z: z_data}, name=name) + example.AddVariations(AllOutputsAsInternalCoverter()) + +Test(x=True, y=input_data, z=output_add, name="true") +Test(x=False, y=input_data, z=output_sub, name="false") diff --git a/nn/runtime/test/specs/V1_3/while_fib.mod.py b/nn/runtime/test/specs/V1_3/while_fib.mod.py index 9f36b06b2..f8f058133 100644 --- a/nn/runtime/test/specs/V1_3/while_fib.mod.py +++ b/nn/runtime/test/specs/V1_3/while_fib.mod.py @@ -53,17 +53,20 @@ def MakeBodyModel(): model.Operation("FULLY_CONNECTED", fib, matrix, zero_bias, 0).To(fib_out) return model -n = Input("n", CounterType) -fib_out = Output("fib_out", FibType) -cond = MakeConditionModel() -body = MakeBodyModel() -fib_init = Parameter("fib_init", FibType, [1, 1]) -i_init = [1] -model = Model().Operation("WHILE", cond, body, fib_init, i_init, n).To(fib_out) +def Test(n, fib): + n_ = Input("n", CounterType) + fib_out = Output("fib_out", FibType) + cond = MakeConditionModel() + body = MakeBodyModel() + fib_init = Parameter("fib_init", FibType, [1, 1]) + i_init = [1] + model = Model().Operation("WHILE", cond, body, fib_init, i_init, n_).To(fib_out) + example = Example({n_: [n], fib_out: fib}, name=str(n), model=model) + example.AddVariations(AllOutputsAsInternalCoverter()) # Fibonacci numbers: 1 1 2 3 5 8 -Example({n: [1], fib_out: [1, 1]}, name="1", model=model) -Example({n: [2], fib_out: [1, 2]}, name="2", model=model) -Example({n: [3], fib_out: [2, 3]}, name="3", model=model) -Example({n: [4], fib_out: [3, 5]}, name="4", model=model) -Example({n: [5], fib_out: [5, 8]}, name="5", model=model) +Test(n=1, fib=[1, 1]) +Test(n=2, fib=[1, 2]) +Test(n=3, fib=[2, 3]) +Test(n=4, fib=[3, 5]) +Test(n=5, fib=[5, 8]) diff --git a/nn/runtime/test/specs/V1_3/while_sum_of_powers.mod.py b/nn/runtime/test/specs/V1_3/while_sum_of_powers.mod.py index 3f8a6344f..0adaec476 100644 --- a/nn/runtime/test/specs/V1_3/while_sum_of_powers.mod.py +++ b/nn/runtime/test/specs/V1_3/while_sum_of_powers.mod.py @@ -89,16 +89,21 @@ def MakeOuterBodyModel(): model.Operation("ADD", sum, xi, 0).To(sum_out) return model -x = Input("x", DataType) -n = Input("n", CounterType) -sum = Output("sum", DataType) -cond = MakeOuterConditionModel() -body = MakeOuterBodyModel() -sum_init = Parameter("sum_init", DataType, [1, 1]) -i_init = [1] -model = Model().Operation("WHILE", cond, body, sum_init, i_init, n, x).To(sum) +def Test(x, n, sum): + x_data, n_data, sum_data = x, n, sum + x = Input("x", DataType) + n = Input("n", CounterType) + sum = Output("sum", DataType) + cond = MakeOuterConditionModel() + body = MakeOuterBodyModel() + sum_init = Parameter("sum_init", DataType, [1, 1]) + i_init = [1] + model = Model().Operation("WHILE", cond, body, sum_init, i_init, n, x).To(sum) + example = Example({x: x_data, n: [n_data], sum: sum_data}, name=str(n_data)) + example.AddVariations(AllOutputsAsInternalCoverter()) -Example({x: [2, 3], n: [1], sum: [1 + 2, 1 + 3]}, name="1", model=model) -Example({x: [2, 3], n: [2], sum: [1 + 2 + 4, 1 + 3 + 9]}, name="2", model=model) -Example({x: [2, 3], n: [3], sum: [1 + 2 + 4 + 8, 1 + 3 + 9 + 27]}, name="3", model=model) -Example({x: [2, 3], n: [4], sum: [1 + 2 + 4 + 8 + 16, 1 + 3 + 9 + 27 + 81]}, name="4", model=model) +Test(x=[2, 3], n=1, sum=[1 + 2, 1 + 3]) +Test(x=[2, 3], n=1, sum=[1 + 2, 1 + 3]) +Test(x=[2, 3], n=2, sum=[1 + 2 + 4, 1 + 3 + 9]) +Test(x=[2, 3], n=3, sum=[1 + 2 + 4 + 8, 1 + 3 + 9 + 27]) +Test(x=[2, 3], n=4, sum=[1 + 2 + 4 + 8 + 16, 1 + 3 + 9 + 27 + 81]) diff --git a/nn/tools/test_generator/README.md b/nn/tools/test_generator/README.md index 273f0e50c..fb0476882 100644 --- a/nn/tools/test_generator/README.md +++ b/nn/tools/test_generator/README.md @@ -110,7 +110,7 @@ Example((input1, output1), example2_values, model=model, name="example_name") ### Specifying Variations -You can add variations to the example so that the test generator can automatically create multiple tests. Currently, 6 types of variation are supported: +You can add variations to the example so that the test generator can automatically create multiple tests. The following variations are supported: - DefaultVariation, i.e. no variation - DataTypeConverter @@ -118,6 +118,7 @@ You can add variations to the example so that the test generator can automatical - AxisConverter - RelaxedModeConverter - ActivationConverter +- AllOutputsAsInternalCoverter #### DataTypeConverter @@ -193,6 +194,10 @@ converter = ActivationConverter(name="variation_name").Identify( ) ``` +#### AllOutputsAsInternalCoverter + +Add a dummy ADD operation after each model output to make it as an internal operand. Will skip if the model does not have any output tensor that is compatible with the ADD operation or if the model has more than one operation. + #### Add variation to example Each example can have multiple groups of variations, and if so, will take the cartesian product of the groups. For example, suppose we declare a model with two groups, and each group has two variations: `[[default, nchw], [default, relaxed, quant8]]`. This will result in 6 examples: `[default, default], [default, relaxed], [default, quant8], [nchw, default], [nchw, relaxed], [nchw, quant8]`. diff --git a/nn/tools/test_generator/test_generator.py b/nn/tools/test_generator/test_generator.py index 688ce984c..ec8693d3f 100755 --- a/nn/tools/test_generator/test_generator.py +++ b/nn/tools/test_generator/test_generator.py @@ -352,14 +352,14 @@ class Input(InOut): # A user-declared output operand class Output(InOut): - def __init__(self, name, opType, backward=None, skipRenaming=False): - InOut.__init__(self, name, opType, backward, skipRenaming=skipRenaming) + def __init__(self, name, opType, backward=None, skipRenaming=False, extraParams=None): + InOut.__init__(self, name, opType, backward, skipRenaming=skipRenaming, extraParams=extraParams) self.lifetime = "SUBGRAPH_OUTPUT" # An output that we don't want to compare the results class IgnoredOutput(Output): - def __init__(self, name, opType, backward=None, skipRenaming=False): - Output.__init__(self, name, opType, backward, skipRenaming=skipRenaming) + def __init__(self, name, opType, backward=None, skipRenaming=False, extraParams=None): + Output.__init__(self, name, opType, backward, skipRenaming=skipRenaming, extraParams=extraParams) self.lifetime = "SUBGRAPH_OUTPUT" def Feed(self, value): numElements = reduce(lambda x,y: x*y, self.type.dimensions, 1) @@ -978,6 +978,12 @@ class AllTensorsAsInputsConverter(ModelVariation): model.UpdateEquivalentOperands([op.ConvertTo(Input) for op in tensorParams]) return model +def CompatibleWithADD(op): + return (len(op.type.dimensions) <= 4 and + len(op.value) > 0 and + op.type.type in ["TENSOR_FLOAT32", "TENSOR_QUANT8_ASYMM", + "TENSOR_FLOAT16", "TENSOR_QUANT8_ASYMM_SIGNED"]) + # Add a dummy ADD operation before each model input to make it as an internal operand. class AllInputsAsInternalCoverter(ModelVariation): supportsSubgraphs = True @@ -994,17 +1000,13 @@ class AllInputsAsInternalCoverter(ModelVariation): raise SkipVariation # Find all input tensors that can be an output of the ADD operation. - # Currently ADD only support FLOAT32/16 and QUANT8_ASYMM tensors with rank <= 4. - CompatibleWithADD = lambda op: len(op.type.dimensions) <= 4 and len(op.value) > 0 and \ - op.type.type in ["TENSOR_FLOAT32", "TENSOR_QUANT8_ASYMM", - "TENSOR_FLOAT16", "TENSOR_QUANT8_ASYMM_SIGNED"] modelInputs = [i for i in model.GetInputs() if CompatibleWithADD(i)] if not modelInputs: raise SkipVariation - # Make every input a sink of a dummy operation: input_tmp ADD dummy = input. + # Make every input an output of a dummy operation: input_new ADD dummy = input. for op in modelInputs: - newInput = op.ConvertTo(Input, name=op.name + "_tmp") + newInput = op.ConvertTo(Input, name=op.name + "_new") dummyParam = Parameter("dummy", (op.type.type, [1], op.type.scale, op.type.zeroPoint), [op.type.zeroPoint]) model.Operation("ADD", newInput, dummyParam, 0).To(op) @@ -1013,6 +1015,37 @@ class AllInputsAsInternalCoverter(ModelVariation): model.UpdateEquivalentOperands([op.ConvertTo(Internal) for op in modelInputs]) return model +# Add a dummy ADD operation after each model output to make it as an internal operand. +class AllOutputsAsInternalCoverter(ModelVariation): + supportsSubgraphs = True + + def __init__(self, name=None): + ModelVariation.__init__(self, name=name) + + def SetToDefaultName(self): + self.name = "all_outputs_as_internal" + return self + + def TransformModel(self, model): + if len(model.operations) != 1: + raise SkipVariation + + # Find all output tensors that can be an input to an ADD operation. + modelOutputs = [o for o in model.GetOutputs() if CompatibleWithADD(o)] + if not modelOutputs: + raise SkipVariation + + # Make every output an input of a dummy operation: output ADD dummy = output_new. + for op in modelOutputs: + newOutput = op.ConvertTo(Output, name=op.name + "_new") + dummyParam = Parameter("dummy", (op.type.type, [1], op.type.scale, op.type.zeroPoint), + [op.type.zeroPoint]) + model.Operation("ADD", op, dummyParam, 0).To(newOutput) + + # Convert to internal operands. + model.UpdateEquivalentOperands([op.ConvertTo(Internal) for op in modelOutputs]) + return model + # An example is always attached to a model, and could have multiple variations class Example: examples = [] @@ -1331,6 +1364,9 @@ def AtomicWrite(filename, data): def GetExecScope(): return dict( ActivationConverter=ActivationConverter, + AllInputsAsInternalCoverter=AllInputsAsInternalCoverter, + AllOutputsAsInternalCoverter=AllOutputsAsInternalCoverter, + AllTensorsAsInputsConverter=AllTensorsAsInputsConverter, BoolScalar=BoolScalar, Configuration=Configuration, DataLayoutConverter=DataLayoutConverter, |