nn: Implement presubmits to keep generated tests up to date
There are a set of generated tests that live in runtime/tests, and when
new ones are added, there is no check to see if they get added to our
test suite.
This CL introduces a script that sets up test files that ensure that all
the generated tests are loaded into our test suite. It also adds a
presubmit that checks this upon every upload to ensure this doesn't get
stale again.
Tests before: 14092 tests from 7 test suites ran.
Tests after: 34775 tests from 7 test suites ran.
Coverage before: http://shortn/_FMOCsOJ5El
Coverage after: http://shortn/_fDgFY557Oa
Coverage before: 58%, 45% (function, line)
Coverage after: 81%, 88% (function, line)
BUG=b:177409032
TEST=FEATURES=test emerge-betty aosp-frameworks-ml-nn
Change-Id: I0d4826316eb4fdb93f3698cc50387f0b7e447085
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/frameworks/ml/+/2627276
Tested-by: Jim Pollock <jmpollock@chromium.org>
Auto-Submit: Jim Pollock <jmpollock@chromium.org>
Commit-Queue: Michael Pishchagin <mblsha@google.com>
Reviewed-by: Michael Pishchagin <mblsha@google.com>
diff --git a/PRESUBMIT.cfg b/PRESUBMIT.cfg
index d5c46f8..6dfe7fc 100644
--- a/PRESUBMIT.cfg
+++ b/PRESUBMIT.cfg
@@ -1,7 +1,12 @@
# Per-project `repo upload` hook settings.
# https://chromium.googlesource.com/chromiumos/repohooks/
-# TODO(avg): reenable hook scripts from AOSP's PREUPLOAD.cfg
+[Options]
+ignore_merged_commits = true
+
+[Hook Scripts]
+generated_tests = nn/runtime/test/specs/generate_all_tests.sh --hook
+generated_tests_loader = python3 nn/chromeos/tools/generated_tests_loader.py --check_only
[Hook Overrides]
long_line_check: false
diff --git a/nn/chromeos/tests/runtime/generated_test_loader_V1_0.cc b/nn/chromeos/tests/runtime/generated_test_loader_V1_0.cc
index 17e0cc5..339ac78 100644
--- a/nn/chromeos/tests/runtime/generated_test_loader_V1_0.cc
+++ b/nn/chromeos/tests/runtime/generated_test_loader_V1_0.cc
@@ -1,24 +1,15 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "TestHarness.h"
-// This exists to ensure that all of the tests in the generated test
-// suite get loaded into the system. Unless the symbols are referenced,
-// the linker will drop them and they won't get loaded or run. You could
-// use --whole-archive to prevent this, but the syntax is cumbersome and
-// gn doesn't support it well.
+// This file has been generated with the generated_tests_loader.py script.
+// DO NOT EDIT!
-// This file was produced by parsing the results of 'nm -C <lib>' and
-// looking for the 'dummy_test_model' symbol and then some find / replace
-// magic.
-
-// V1_0
-namespace generated_tests::add_broadcast_quant8 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::add_broadcast_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::add { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::add_broadcast_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::add_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::avg_pool_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::avg_pool_float_2 { const test_helper::TestModel& get_test_model(); }
@@ -40,17 +31,17 @@
namespace generated_tests::conv_1_h3_w2_VALID { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_3_h3_w2_SAME { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_3_h3_w2_VALID { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::conv_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_channels { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_channels_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::conv_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_float_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::conv_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_channels { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_channels_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::conv_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv_quant8_overflow { const test_helper::TestModel& get_test_model(); }
@@ -61,40 +52,40 @@
namespace generated_tests::depth_to_space_float_3 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depth_to_space_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depth_to_space_quant8_2 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::depthwise_conv2d_float_2 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::depthwise_conv { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_float { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::depthwise_conv2d_float_2 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::depthwise_conv2d_float_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_float_large_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_float_large_2_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::depthwise_conv2d_float_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_float_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_float_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::depthwise_conv2d_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_quant8 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::depthwise_conv2d_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_quant8_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_quant8_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv2d_quant8_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::depthwise_conv { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::dequantize { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::embedding_lookup { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::floor { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::fully_connected_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_float_3 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::fully_connected_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_float_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_float_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_float_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::fully_connected_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_quant8 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::fully_connected_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_quant8_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_quant8_large_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_quant8_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::hashtable_lookup_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::hashtable_lookup_quant8 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::l2_normalization_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::l2_normalization { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::l2_normalization_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::l2_normalization_large { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::l2_pool_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::l2_pool_float { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::l2_pool_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::l2_pool_float_large { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::local_response_norm_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::local_response_norm_float_4 { const test_helper::TestModel& get_test_model(); }
@@ -102,19 +93,19 @@
namespace generated_tests::logistic_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::logistic_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::logistic_quant8_2 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::lsh_projection_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lsh_projection { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::lsh_projection_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lsh_projection_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::lstm { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm2 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::lstm2_state2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm2_state { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::lstm2_state2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm3 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::lstm3_state { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm3_state2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm3_state3 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::lstm3_state { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::lstm { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::lstm_state2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm_state { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::lstm_state2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_float_3 { const test_helper::TestModel& get_test_model(); }
@@ -123,10 +114,8 @@
namespace generated_tests::max_pool_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_quant8_3 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_quant8_4 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::mobilenet_224_gender_basic_fixed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::mobilenet_quantized { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::mul_broadcast_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::mul_broadcast_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul_relu { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu1_float_1 { const test_helper::TestModel& get_test_model(); }
@@ -145,8 +134,8 @@
namespace generated_tests::reshape_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reshape_quant8_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reshape_weights_as_inputs { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::resize_bilinear_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::resize_bilinear { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::resize_bilinear_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::rnn { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::rnn_state { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::softmax_float_1 { const test_helper::TestModel& get_test_model(); }
@@ -158,16 +147,15 @@
namespace generated_tests::space_to_depth_float_3 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_depth_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_depth_quant8_2 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::svdf { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf_bias_present { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::svdf { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf_state { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::tanh { const test_helper::TestModel& get_test_model(); }
-TEST(GeneratedTestsLoader, V1_0_Loader) {
- generated_tests::add_broadcast_quant8::get_test_model();
- generated_tests::add_broadcast_quant8::get_test_model();
+TEST(GeneratedTestsLoader, spec_V1_0) {
generated_tests::add::get_test_model();
+ generated_tests::add_broadcast_quant8::get_test_model();
generated_tests::add_quant8::get_test_model();
generated_tests::avg_pool_float_1::get_test_model();
generated_tests::avg_pool_float_2::get_test_model();
@@ -189,17 +177,17 @@
generated_tests::conv_1_h3_w2_VALID::get_test_model();
generated_tests::conv_3_h3_w2_SAME::get_test_model();
generated_tests::conv_3_h3_w2_VALID::get_test_model();
+ generated_tests::conv_float::get_test_model();
generated_tests::conv_float_2::get_test_model();
generated_tests::conv_float_channels::get_test_model();
generated_tests::conv_float_channels_weights_as_inputs::get_test_model();
- generated_tests::conv_float::get_test_model();
generated_tests::conv_float_large::get_test_model();
generated_tests::conv_float_large_weights_as_inputs::get_test_model();
generated_tests::conv_float_weights_as_inputs::get_test_model();
+ generated_tests::conv_quant8::get_test_model();
generated_tests::conv_quant8_2::get_test_model();
generated_tests::conv_quant8_channels::get_test_model();
generated_tests::conv_quant8_channels_weights_as_inputs::get_test_model();
- generated_tests::conv_quant8::get_test_model();
generated_tests::conv_quant8_large::get_test_model();
generated_tests::conv_quant8_large_weights_as_inputs::get_test_model();
generated_tests::conv_quant8_overflow::get_test_model();
@@ -210,40 +198,40 @@
generated_tests::depth_to_space_float_3::get_test_model();
generated_tests::depth_to_space_quant8_1::get_test_model();
generated_tests::depth_to_space_quant8_2::get_test_model();
- generated_tests::depthwise_conv2d_float_2::get_test_model();
+ generated_tests::depthwise_conv::get_test_model();
generated_tests::depthwise_conv2d_float::get_test_model();
+ generated_tests::depthwise_conv2d_float_2::get_test_model();
+ generated_tests::depthwise_conv2d_float_large::get_test_model();
generated_tests::depthwise_conv2d_float_large_2::get_test_model();
generated_tests::depthwise_conv2d_float_large_2_weights_as_inputs::get_test_model();
- generated_tests::depthwise_conv2d_float_large::get_test_model();
generated_tests::depthwise_conv2d_float_large_weights_as_inputs::get_test_model();
generated_tests::depthwise_conv2d_float_weights_as_inputs::get_test_model();
- generated_tests::depthwise_conv2d_quant8_2::get_test_model();
generated_tests::depthwise_conv2d_quant8::get_test_model();
+ generated_tests::depthwise_conv2d_quant8_2::get_test_model();
generated_tests::depthwise_conv2d_quant8_large::get_test_model();
generated_tests::depthwise_conv2d_quant8_large_weights_as_inputs::get_test_model();
generated_tests::depthwise_conv2d_quant8_weights_as_inputs::get_test_model();
- generated_tests::depthwise_conv::get_test_model();
generated_tests::dequantize::get_test_model();
generated_tests::embedding_lookup::get_test_model();
generated_tests::floor::get_test_model();
+ generated_tests::fully_connected_float::get_test_model();
generated_tests::fully_connected_float_2::get_test_model();
generated_tests::fully_connected_float_3::get_test_model();
- generated_tests::fully_connected_float::get_test_model();
generated_tests::fully_connected_float_large::get_test_model();
generated_tests::fully_connected_float_large_weights_as_inputs::get_test_model();
generated_tests::fully_connected_float_weights_as_inputs::get_test_model();
- generated_tests::fully_connected_quant8_2::get_test_model();
generated_tests::fully_connected_quant8::get_test_model();
+ generated_tests::fully_connected_quant8_2::get_test_model();
generated_tests::fully_connected_quant8_large::get_test_model();
generated_tests::fully_connected_quant8_large_weights_as_inputs::get_test_model();
generated_tests::fully_connected_quant8_weights_as_inputs::get_test_model();
generated_tests::hashtable_lookup_float::get_test_model();
generated_tests::hashtable_lookup_quant8::get_test_model();
- generated_tests::l2_normalization_2::get_test_model();
generated_tests::l2_normalization::get_test_model();
+ generated_tests::l2_normalization_2::get_test_model();
generated_tests::l2_normalization_large::get_test_model();
- generated_tests::l2_pool_float_2::get_test_model();
generated_tests::l2_pool_float::get_test_model();
+ generated_tests::l2_pool_float_2::get_test_model();
generated_tests::l2_pool_float_large::get_test_model();
generated_tests::local_response_norm_float_1::get_test_model();
generated_tests::local_response_norm_float_4::get_test_model();
@@ -251,19 +239,19 @@
generated_tests::logistic_float_2::get_test_model();
generated_tests::logistic_quant8_1::get_test_model();
generated_tests::logistic_quant8_2::get_test_model();
- generated_tests::lsh_projection_2::get_test_model();
generated_tests::lsh_projection::get_test_model();
+ generated_tests::lsh_projection_2::get_test_model();
generated_tests::lsh_projection_weights_as_inputs::get_test_model();
+ generated_tests::lstm::get_test_model();
generated_tests::lstm2::get_test_model();
- generated_tests::lstm2_state2::get_test_model();
generated_tests::lstm2_state::get_test_model();
+ generated_tests::lstm2_state2::get_test_model();
generated_tests::lstm3::get_test_model();
+ generated_tests::lstm3_state::get_test_model();
generated_tests::lstm3_state2::get_test_model();
generated_tests::lstm3_state3::get_test_model();
- generated_tests::lstm3_state::get_test_model();
- generated_tests::lstm::get_test_model();
- generated_tests::lstm_state2::get_test_model();
generated_tests::lstm_state::get_test_model();
+ generated_tests::lstm_state2::get_test_model();
generated_tests::max_pool_float_1::get_test_model();
generated_tests::max_pool_float_2::get_test_model();
generated_tests::max_pool_float_3::get_test_model();
@@ -272,11 +260,8 @@
generated_tests::max_pool_quant8_2::get_test_model();
generated_tests::max_pool_quant8_3::get_test_model();
generated_tests::max_pool_quant8_4::get_test_model();
- // TODO(b/157388904): Hardware buffers not implemented on ChromeOS.
- // generated_tests::mobilenet_224_gender_basic_fixed::get_test_model();
- // generated_tests::mobilenet_quantized::get_test_model();
- generated_tests::mul_broadcast_quant8::get_test_model();
generated_tests::mul::get_test_model();
+ generated_tests::mul_broadcast_quant8::get_test_model();
generated_tests::mul_quant8::get_test_model();
generated_tests::mul_relu::get_test_model();
generated_tests::relu1_float_1::get_test_model();
@@ -295,8 +280,8 @@
generated_tests::reshape_quant8::get_test_model();
generated_tests::reshape_quant8_weights_as_inputs::get_test_model();
generated_tests::reshape_weights_as_inputs::get_test_model();
- generated_tests::resize_bilinear_2::get_test_model();
generated_tests::resize_bilinear::get_test_model();
+ generated_tests::resize_bilinear_2::get_test_model();
generated_tests::rnn::get_test_model();
generated_tests::rnn_state::get_test_model();
generated_tests::softmax_float_1::get_test_model();
@@ -308,9 +293,9 @@
generated_tests::space_to_depth_float_3::get_test_model();
generated_tests::space_to_depth_quant8_1::get_test_model();
generated_tests::space_to_depth_quant8_2::get_test_model();
+ generated_tests::svdf::get_test_model();
generated_tests::svdf2::get_test_model();
generated_tests::svdf_bias_present::get_test_model();
- generated_tests::svdf::get_test_model();
generated_tests::svdf_state::get_test_model();
generated_tests::tanh::get_test_model();
diff --git a/nn/chromeos/tests/runtime/generated_test_loader_V1_1.cc b/nn/chromeos/tests/runtime/generated_test_loader_V1_1.cc
index c2fdaba..5a765e0 100644
--- a/nn/chromeos/tests/runtime/generated_test_loader_V1_1.cc
+++ b/nn/chromeos/tests/runtime/generated_test_loader_V1_1.cc
@@ -1,21 +1,13 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "TestHarness.h"
-// This exists to ensure that all of the tests in the generated test
-// suite get loaded into the system. Unless the symbols are referenced,
-// the linker will drop them and they won't get loaded or run. You could
-// use --whole-archive to prevent this, but the syntax is cumbersome and
-// gn doesn't support it well.
+// This file has been generated with the generated_tests_loader.py script.
+// DO NOT EDIT!
-// This file was produced by parsing the results of 'nm -C <lib>' and
-// looking for the 'dummy_test_model' symbol and then some find / replace
-// magic.
-
-// V1_1
namespace generated_tests::add_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::avg_pool_float_1_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::avg_pool_float_2_relaxed { const test_helper::TestModel& get_test_model(); }
@@ -53,9 +45,9 @@
namespace generated_tests::depthwise_conv2d_float_weights_as_inputs_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::depthwise_conv_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::dequantize_relaxed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::div { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::div_broadcast_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::div_broadcast_float_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::div { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::div_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::embedding_lookup_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::floor_relaxed { const test_helper::TestModel& get_test_model(); }
@@ -94,8 +86,8 @@
namespace generated_tests::max_pool_float_2_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_float_3_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_float_4_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::mean_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::mean_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean_float_1_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean_float_2 { const test_helper::TestModel& get_test_model(); }
@@ -103,7 +95,6 @@
namespace generated_tests::mean_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean_quant8_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mean_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::mobilenet_224_gender_basic_fixed_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul_relu_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::pad { const test_helper::TestModel& get_test_model(); }
@@ -139,20 +130,20 @@
namespace generated_tests::space_to_depth_float_1_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_depth_float_2_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_depth_float_3_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::squeeze_b155238914 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::squeeze_b155238914 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_float_1_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_omitted { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::strided_slice_b155662254 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::strided_slice_b155662254 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::strided_slice_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_10 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_10_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_11 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_11_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::strided_slice_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_1_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float_2_relaxed { const test_helper::TestModel& get_test_model(); }
@@ -182,9 +173,9 @@
namespace generated_tests::strided_slice_quant8_8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_quant8_9 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_relaxed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::sub { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::sub_broadcast_float { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::sub_broadcast_float_relaxed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::sub { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::sub_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf2_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf_bias_present_relaxed { const test_helper::TestModel& get_test_model(); }
@@ -197,7 +188,7 @@
namespace generated_tests::transpose_quant8_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::transpose_relaxed { const test_helper::TestModel& get_test_model(); }
-TEST(GeneratedTestsLoader, V1_1_Loader) {
+TEST(GeneratedTestsLoader, spec_V1_1) {
generated_tests::add_relaxed::get_test_model();
generated_tests::avg_pool_float_1_relaxed::get_test_model();
generated_tests::avg_pool_float_2_relaxed::get_test_model();
@@ -235,9 +226,9 @@
generated_tests::depthwise_conv2d_float_weights_as_inputs_relaxed::get_test_model();
generated_tests::depthwise_conv_relaxed::get_test_model();
generated_tests::dequantize_relaxed::get_test_model();
+ generated_tests::div::get_test_model();
generated_tests::div_broadcast_float::get_test_model();
generated_tests::div_broadcast_float_relaxed::get_test_model();
- generated_tests::div::get_test_model();
generated_tests::div_relaxed::get_test_model();
generated_tests::embedding_lookup_relaxed::get_test_model();
generated_tests::floor_relaxed::get_test_model();
@@ -276,8 +267,8 @@
generated_tests::max_pool_float_2_relaxed::get_test_model();
generated_tests::max_pool_float_3_relaxed::get_test_model();
generated_tests::max_pool_float_4_relaxed::get_test_model();
- generated_tests::mean_b155508675::get_test_model();
generated_tests::mean::get_test_model();
+ generated_tests::mean_b155508675::get_test_model();
generated_tests::mean_float_1::get_test_model();
generated_tests::mean_float_1_relaxed::get_test_model();
generated_tests::mean_float_2::get_test_model();
@@ -285,8 +276,6 @@
generated_tests::mean_quant8_1::get_test_model();
generated_tests::mean_quant8_2::get_test_model();
generated_tests::mean_relaxed::get_test_model();
- // TODO(b/157388904): Hardware buffers not implemented on ChromeOS.
- // generated_tests::mobilenet_224_gender_basic_fixed_relaxed::get_test_model();
generated_tests::mul_relaxed::get_test_model();
generated_tests::mul_relu_relaxed::get_test_model();
generated_tests::pad::get_test_model();
@@ -322,20 +311,20 @@
generated_tests::space_to_depth_float_1_relaxed::get_test_model();
generated_tests::space_to_depth_float_2_relaxed::get_test_model();
generated_tests::space_to_depth_float_3_relaxed::get_test_model();
- generated_tests::squeeze_b155238914::get_test_model();
generated_tests::squeeze::get_test_model();
+ generated_tests::squeeze_b155238914::get_test_model();
generated_tests::squeeze_float_1::get_test_model();
generated_tests::squeeze_float_1_relaxed::get_test_model();
generated_tests::squeeze_omitted::get_test_model();
generated_tests::squeeze_quant8_1::get_test_model();
generated_tests::squeeze_relaxed::get_test_model();
- generated_tests::strided_slice_b155662254::get_test_model();
generated_tests::strided_slice::get_test_model();
+ generated_tests::strided_slice_b155662254::get_test_model();
+ generated_tests::strided_slice_float_1::get_test_model();
generated_tests::strided_slice_float_10::get_test_model();
generated_tests::strided_slice_float_10_relaxed::get_test_model();
generated_tests::strided_slice_float_11::get_test_model();
generated_tests::strided_slice_float_11_relaxed::get_test_model();
- generated_tests::strided_slice_float_1::get_test_model();
generated_tests::strided_slice_float_1_relaxed::get_test_model();
generated_tests::strided_slice_float_2::get_test_model();
generated_tests::strided_slice_float_2_relaxed::get_test_model();
@@ -365,9 +354,9 @@
generated_tests::strided_slice_quant8_8::get_test_model();
generated_tests::strided_slice_quant8_9::get_test_model();
generated_tests::strided_slice_relaxed::get_test_model();
+ generated_tests::sub::get_test_model();
generated_tests::sub_broadcast_float::get_test_model();
generated_tests::sub_broadcast_float_relaxed::get_test_model();
- generated_tests::sub::get_test_model();
generated_tests::sub_relaxed::get_test_model();
generated_tests::svdf2_relaxed::get_test_model();
generated_tests::svdf_bias_present_relaxed::get_test_model();
diff --git a/nn/chromeos/tests/runtime/generated_test_loader_V1_2.cc b/nn/chromeos/tests/runtime/generated_test_loader_V1_2.cc
index a28ccb7..859f46a 100644
--- a/nn/chromeos/tests/runtime/generated_test_loader_V1_2.cc
+++ b/nn/chromeos/tests/runtime/generated_test_loader_V1_2.cc
@@ -1,21 +1,13 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "TestHarness.h"
-// This exists to ensure that all of the tests in the generated test
-// suite get loaded into the system. Unless the symbols are referenced,
-// the linker will drop them and they won't get loaded or run. You could
-// use --whole-archive to prevent this, but the syntax is cumbersome and
-// gn doesn't support it well.
+// This file has been generated with the generated_tests_loader.py script.
+// DO NOT EDIT!
-// This file was produced by parsing the results of 'nm -C <lib>' and
-// looking for the 'dummy_test_model' symbol and then some find / replace
-// magic.
-
-//V1_2
namespace generated_tests::abs { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::add_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::argmax_1 { const test_helper::TestModel& get_test_model(); }
@@ -26,28 +18,67 @@
namespace generated_tests::argmin_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::argmin_3 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::argmin_b155660285 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::avg_pool_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
namespace generated_tests::axis_aligned_bbox_transform { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::batch_to_space_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::bbox_graph { const test_helper::TestModel& get_test_model_zero_sized(); }
+namespace generated_tests::bidirectional_sequence_lstm { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_aux_input { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_cifg_peephole { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_float16_batch_major { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_float16_batch_major_aux_input { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_float16_batch_major_merge_outputs { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_merge_outputs { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_lstm_norm_fw_output { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_rnn { const test_helper::TestModel& get_test_model_blackbox(); }
namespace generated_tests::box_with_nms_limit_gaussian { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::box_with_nms_limit_hard { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::box_with_nms_limit_linear { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::cast { const test_helper::TestModel& get_test_model_float16_to_float16(); }
+namespace generated_tests::channel_shuffle { const test_helper::TestModel& get_test_model_dim4_axis0(); }
namespace generated_tests::concat_float16_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::concat_float16_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::concat_float16_3 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::concat_mixed_quant { const test_helper::TestModel& get_test_model_quant8(); }
namespace generated_tests::concat_zero_sized { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::conv2d_dilation { const test_helper::TestModel& get_test_model_nhwc(); }
namespace generated_tests::conv2d_per_channel { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::dequantize_v1_2 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::detection_postprocess { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::conv2d_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::depth_to_space_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::depthwise_conv2d_dilation { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::depthwise_conv2d_invalid_filter_dims { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::depthwise_conv2d_per_channel { const test_helper::TestModel& get_test_model_same(); }
+namespace generated_tests::depthwise_conv2d_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::dequantize_v1_2 { const test_helper::TestModel& get_test_model_1d_quant8_asymm(); }
+namespace generated_tests::detection_postprocess { const test_helper::TestModel& get_test_model_regular(); }
namespace generated_tests::div_v1_2 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::expand_dims { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::embedding_lookup_v1_2 { const test_helper::TestModel& get_test_model_quant8(); }
+namespace generated_tests::equal { const test_helper::TestModel& get_test_model_simple(); }
namespace generated_tests::exp { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::expand_dims { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::floor_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::fully_connected_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::gather { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::gather_higher_rank { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::generate_proposals { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::greater { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::greater_equal { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::grouped_conv2d { const test_helper::TestModel& get_test_model_nhwc_none(); }
+namespace generated_tests::heatmap_max_keypoint { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::instance_normalization { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::l2_normalization_axis { const test_helper::TestModel& get_test_model_dim4_axis0(); }
+namespace generated_tests::l2_normalization_v1_2 { const test_helper::TestModel& get_test_model_dim4_axis3(); }
+namespace generated_tests::l2_pool_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::layer_norm_lstm { const test_helper::TestModel& get_test_model_NoCifgPeepholeProjectionNoClippingLayerNormLstm(); }
+namespace generated_tests::less { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::less_equal { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::local_response_normalization_v1_2 { const test_helper::TestModel& get_test_model_axis_dim4_axis0(); }
namespace generated_tests::log { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::logical_not { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::logistic_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::log_softmax { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::logical_and { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::logical_not { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::logical_or { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::logistic_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lsh_projection_3_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lsh_projection_4_relaxed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lsh_projection_deprecated { const test_helper::TestModel& get_test_model(); }
@@ -62,9 +93,13 @@
namespace generated_tests::lstm_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm_state2_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::lstm_state_float16 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::max_pool_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::maximum { const test_helper::TestModel& get_test_model_simple(); }
namespace generated_tests::mean_float16 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::minimum { const test_helper::TestModel& get_test_model_simple(); }
namespace generated_tests::mul_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::neg { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::not_equal { const test_helper::TestModel& get_test_model_simple(); }
namespace generated_tests::pad_all_dims { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::pad_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::pad_low_rank { const test_helper::TestModel& get_test_model(); }
@@ -79,31 +114,39 @@
namespace generated_tests::pad_v2_low_rank_quant8 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::pow { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::prelu { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::quantize { const test_helper::TestModel& get_test_model_quant8(); }
namespace generated_tests::quantized_lstm { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::random_multinomial { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::random_multinomial_float16 { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_all_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_all { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_any_b155508675 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_all_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_any { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_max_b155508675 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_any_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_max { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_min_b155508675 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_max_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_min { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_prod_b155508675 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_min_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_prod { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::reduce_sum_b155508675 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_prod_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reduce_sum { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::reduce_sum_b155508675 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu1_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu6_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reshape_float16 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::resize_bilinear_v1_2 { const test_helper::TestModel& get_test_model_shape_nhwc(); }
+namespace generated_tests::resize_nearest_neighbor { const test_helper::TestModel& get_test_model_shape_nhwc(); }
namespace generated_tests::rnn_float16 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::roi_align { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::roi_pooling { const test_helper::TestModel& get_test_model_nhwc(); }
namespace generated_tests::rsqrt { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::select_v1_2 { const test_helper::TestModel& get_test_model_one_dim(); }
namespace generated_tests::sin { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::slice { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::softmax_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_batch_quant8_nonzero { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::space_to_batch_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
+namespace generated_tests::space_to_depth_v1_2 { const test_helper::TestModel& get_test_model_nhwc(); }
namespace generated_tests::split_float_1 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::split_float_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::split_float_3 { const test_helper::TestModel& get_test_model(); }
@@ -120,7 +163,10 @@
namespace generated_tests::sqrt { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::squeeze_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::strided_slice_float16 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::strided_slice_invalid { const test_helper::TestModel& get_test_model_output_dims(); }
namespace generated_tests::sub_quantized_different_scales { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::sub_v1_2 { const test_helper::TestModel& get_test_model_none(); }
+namespace generated_tests::sub_v1_2_broadcast { const test_helper::TestModel& get_test_model_none(); }
namespace generated_tests::svdf_bias_present_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::svdf_state_float16 { const test_helper::TestModel& get_test_model(); }
@@ -129,6 +175,8 @@
namespace generated_tests::tile_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::tile_3 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::topk_v2 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::transpose_conv2d { const test_helper::TestModel& get_test_model_nhwc_none(); }
+namespace generated_tests::transpose_conv2d_large { const test_helper::TestModel& get_test_model_quant8(); }
namespace generated_tests::transpose_float16 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::transpose_v1_2 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::unidirectional_sequence_lstm_1step { const test_helper::TestModel& get_test_model(); }
@@ -139,8 +187,9 @@
namespace generated_tests::unidirectional_sequence_lstm_f16_norm_peephole_projection { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::unidirectional_sequence_lstm_layer_norm_cifg_peephole { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::unidirectional_sequence_lstm_norm_peephole_projection { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::unidirectional_sequence_rnn { const test_helper::TestModel& get_test_model_blackbox(); }
-TEST(GeneratedTestsLoader, V1_2_Loader) {
+TEST(GeneratedTestsLoader, spec_V1_2) {
generated_tests::abs::get_test_model();
generated_tests::add_v1_2::get_test_model();
generated_tests::argmax_1::get_test_model();
@@ -151,28 +200,67 @@
generated_tests::argmin_2::get_test_model();
generated_tests::argmin_3::get_test_model();
generated_tests::argmin_b155660285::get_test_model();
+ generated_tests::avg_pool_v1_2::get_test_model_nhwc();
generated_tests::axis_aligned_bbox_transform::get_test_model();
+ generated_tests::batch_to_space_v1_2::get_test_model_nhwc();
+ generated_tests::bbox_graph::get_test_model_zero_sized();
+ generated_tests::bidirectional_sequence_lstm::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_aux_input::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_cifg_peephole::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_float16_batch_major::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_float16_batch_major_aux_input::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_float16_batch_major_merge_outputs::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_merge_outputs::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_lstm_norm_fw_output::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_rnn::get_test_model_blackbox();
generated_tests::box_with_nms_limit_gaussian::get_test_model();
generated_tests::box_with_nms_limit_hard::get_test_model();
generated_tests::box_with_nms_limit_linear::get_test_model();
+ generated_tests::cast::get_test_model_float16_to_float16();
+ generated_tests::channel_shuffle::get_test_model_dim4_axis0();
generated_tests::concat_float16_1::get_test_model();
generated_tests::concat_float16_2::get_test_model();
generated_tests::concat_float16_3::get_test_model();
+ generated_tests::concat_mixed_quant::get_test_model_quant8();
generated_tests::concat_zero_sized::get_test_model();
+ generated_tests::conv2d_dilation::get_test_model_nhwc();
generated_tests::conv2d_per_channel::get_test_model();
- generated_tests::dequantize_v1_2::get_test_model();
- generated_tests::detection_postprocess::get_test_model();
+ generated_tests::conv2d_v1_2::get_test_model_nhwc();
+ generated_tests::depth_to_space_v1_2::get_test_model_nhwc();
+ generated_tests::depthwise_conv2d_dilation::get_test_model_nhwc();
+ generated_tests::depthwise_conv2d_invalid_filter_dims::get_test_model_nhwc();
+ generated_tests::depthwise_conv2d_per_channel::get_test_model_same();
+ generated_tests::depthwise_conv2d_v1_2::get_test_model_nhwc();
+ generated_tests::dequantize_v1_2::get_test_model_1d_quant8_asymm();
+ generated_tests::detection_postprocess::get_test_model_regular();
generated_tests::div_v1_2::get_test_model();
- generated_tests::expand_dims::get_test_model();
+ generated_tests::embedding_lookup_v1_2::get_test_model_quant8();
+ generated_tests::equal::get_test_model_simple();
generated_tests::exp::get_test_model();
+ generated_tests::expand_dims::get_test_model();
generated_tests::floor_float16::get_test_model();
generated_tests::fully_connected_v1_2::get_test_model();
generated_tests::gather::get_test_model();
generated_tests::gather_higher_rank::get_test_model();
+ generated_tests::generate_proposals::get_test_model_nhwc();
+ generated_tests::greater::get_test_model_simple();
+ generated_tests::greater_equal::get_test_model_simple();
+ generated_tests::grouped_conv2d::get_test_model_nhwc_none();
+ generated_tests::heatmap_max_keypoint::get_test_model_nhwc();
+ generated_tests::instance_normalization::get_test_model_nhwc();
+ generated_tests::l2_normalization_axis::get_test_model_dim4_axis0();
+ generated_tests::l2_normalization_v1_2::get_test_model_dim4_axis3();
+ generated_tests::l2_pool_v1_2::get_test_model_nhwc();
+ generated_tests::layer_norm_lstm::get_test_model_NoCifgPeepholeProjectionNoClippingLayerNormLstm();
+ generated_tests::less::get_test_model_simple();
+ generated_tests::less_equal::get_test_model_simple();
+ generated_tests::local_response_normalization_v1_2::get_test_model_axis_dim4_axis0();
generated_tests::log::get_test_model();
- generated_tests::logical_not::get_test_model();
- generated_tests::logistic_v1_2::get_test_model();
generated_tests::log_softmax::get_test_model();
+ generated_tests::logical_and::get_test_model_simple();
+ generated_tests::logical_not::get_test_model();
+ generated_tests::logical_or::get_test_model_simple();
+ generated_tests::logistic_v1_2::get_test_model();
generated_tests::lsh_projection_3_relaxed::get_test_model();
generated_tests::lsh_projection_4_relaxed::get_test_model();
generated_tests::lsh_projection_deprecated::get_test_model();
@@ -187,9 +275,13 @@
generated_tests::lstm_float16::get_test_model();
generated_tests::lstm_state2_float16::get_test_model();
generated_tests::lstm_state_float16::get_test_model();
+ generated_tests::max_pool_v1_2::get_test_model_nhwc();
+ generated_tests::maximum::get_test_model_simple();
generated_tests::mean_float16::get_test_model();
+ generated_tests::minimum::get_test_model_simple();
generated_tests::mul_v1_2::get_test_model();
generated_tests::neg::get_test_model();
+ generated_tests::not_equal::get_test_model_simple();
generated_tests::pad_all_dims::get_test_model();
generated_tests::pad_float16::get_test_model();
generated_tests::pad_low_rank::get_test_model();
@@ -204,31 +296,39 @@
generated_tests::pad_v2_low_rank_quant8::get_test_model();
generated_tests::pow::get_test_model();
generated_tests::prelu::get_test_model();
+ generated_tests::quantize::get_test_model_quant8();
generated_tests::quantized_lstm::get_test_model();
generated_tests::random_multinomial::get_test_model();
generated_tests::random_multinomial_float16::get_test_model();
- generated_tests::reduce_all_b155508675::get_test_model();
generated_tests::reduce_all::get_test_model();
- generated_tests::reduce_any_b155508675::get_test_model();
+ generated_tests::reduce_all_b155508675::get_test_model();
generated_tests::reduce_any::get_test_model();
- generated_tests::reduce_max_b155508675::get_test_model();
+ generated_tests::reduce_any_b155508675::get_test_model();
generated_tests::reduce_max::get_test_model();
- generated_tests::reduce_min_b155508675::get_test_model();
+ generated_tests::reduce_max_b155508675::get_test_model();
generated_tests::reduce_min::get_test_model();
- generated_tests::reduce_prod_b155508675::get_test_model();
+ generated_tests::reduce_min_b155508675::get_test_model();
generated_tests::reduce_prod::get_test_model();
- generated_tests::reduce_sum_b155508675::get_test_model();
+ generated_tests::reduce_prod_b155508675::get_test_model();
generated_tests::reduce_sum::get_test_model();
+ generated_tests::reduce_sum_b155508675::get_test_model();
generated_tests::relu1_v1_2::get_test_model();
generated_tests::relu6_v1_2::get_test_model();
generated_tests::relu_v1_2::get_test_model();
generated_tests::reshape_float16::get_test_model();
+ generated_tests::resize_bilinear_v1_2::get_test_model_shape_nhwc();
+ generated_tests::resize_nearest_neighbor::get_test_model_shape_nhwc();
generated_tests::rnn_float16::get_test_model();
+ generated_tests::roi_align::get_test_model_nhwc();
+ generated_tests::roi_pooling::get_test_model_nhwc();
generated_tests::rsqrt::get_test_model();
+ generated_tests::select_v1_2::get_test_model_one_dim();
generated_tests::sin::get_test_model();
generated_tests::slice::get_test_model();
generated_tests::softmax_v1_2::get_test_model();
generated_tests::space_to_batch_quant8_nonzero::get_test_model();
+ generated_tests::space_to_batch_v1_2::get_test_model_nhwc();
+ generated_tests::space_to_depth_v1_2::get_test_model_nhwc();
generated_tests::split_float_1::get_test_model();
generated_tests::split_float_2::get_test_model();
generated_tests::split_float_3::get_test_model();
@@ -245,7 +345,10 @@
generated_tests::sqrt::get_test_model();
generated_tests::squeeze_float16::get_test_model();
generated_tests::strided_slice_float16::get_test_model();
+ generated_tests::strided_slice_invalid::get_test_model_output_dims();
generated_tests::sub_quantized_different_scales::get_test_model();
+ generated_tests::sub_v1_2::get_test_model_none();
+ generated_tests::sub_v1_2_broadcast::get_test_model_none();
generated_tests::svdf_bias_present_float16::get_test_model();
generated_tests::svdf_float16::get_test_model();
generated_tests::svdf_state_float16::get_test_model();
@@ -254,6 +357,8 @@
generated_tests::tile_2::get_test_model();
generated_tests::tile_3::get_test_model();
generated_tests::topk_v2::get_test_model();
+ generated_tests::transpose_conv2d::get_test_model_nhwc_none();
+ generated_tests::transpose_conv2d_large::get_test_model_quant8();
generated_tests::transpose_float16::get_test_model();
generated_tests::transpose_v1_2::get_test_model();
generated_tests::unidirectional_sequence_lstm_1step::get_test_model();
@@ -264,6 +369,7 @@
generated_tests::unidirectional_sequence_lstm_f16_norm_peephole_projection::get_test_model();
generated_tests::unidirectional_sequence_lstm_layer_norm_cifg_peephole::get_test_model();
generated_tests::unidirectional_sequence_lstm_norm_peephole_projection::get_test_model();
+ generated_tests::unidirectional_sequence_rnn::get_test_model_blackbox();
EXPECT_TRUE(true);
}
diff --git a/nn/chromeos/tests/runtime/generated_test_loader_V1_3.cc b/nn/chromeos/tests/runtime/generated_test_loader_V1_3.cc
index 7787c01..a554033 100644
--- a/nn/chromeos/tests/runtime/generated_test_loader_V1_3.cc
+++ b/nn/chromeos/tests/runtime/generated_test_loader_V1_3.cc
@@ -1,48 +1,83 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "TestHarness.h"
-// This exists to ensure that all of the tests in the generated test
-// suite get loaded into the system. Unless the symbols are referenced,
-// the linker will drop them and they won't get loaded or run. You could
-// use --whole-archive to prevent this, but the syntax is cumbersome and
-// gn doesn't support it well.
+// This file has been generated with the generated_tests_loader.py script.
+// DO NOT EDIT!
-// This file was produced by parsing the results of 'nm -C <lib>' and
-// looking for the 'dummy_test_model' symbol and then some find / replace
-// magic.
-
-// V1_3
namespace generated_tests::abs_int32 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::add_int32 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::add_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::argmax_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::argmin_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::avg_pool_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::axis_aligned_bbox_transform_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::batch_to_space_quant8_signed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::concat_quant8_signed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::conv2d_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::bbox_graph_quant8_signed { const test_helper::TestModel& get_test_model_zero_sized_quant8_signed(); }
+namespace generated_tests::bidirectional_sequence_lstm { const test_helper::TestModel& get_test_model_parallel_linking(); }
+namespace generated_tests::bidirectional_sequence_lstm_state_output { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::bidirectional_sequence_rnn_1_3 { const test_helper::TestModel& get_test_model_parallel_linking(); }
+namespace generated_tests::bidirectional_sequence_rnn_state_output { const test_helper::TestModel& get_test_model_blackbox(); }
+namespace generated_tests::box_with_nms_limit_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::cast_identity { const test_helper::TestModel& get_test_model_float16(); }
+namespace generated_tests::channel_shuffle_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed_dim4_axis0(); }
+namespace generated_tests::concat_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::conv2d_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
namespace generated_tests::depth_to_space_quant8_signed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::depthwise_conv2d_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::depthwise_conv2d_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
namespace generated_tests::dequantize_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::div_int32 { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::elu { const test_helper::TestModel& get_test_model_alpha_one(); }
+namespace generated_tests::embedding_lookup_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::embedding_lookup_v1_3 { const test_helper::TestModel& get_test_model_float16(); }
+namespace generated_tests::equal_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
+namespace generated_tests::expand_dims_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::fill { const test_helper::TestModel& get_test_model_1d(); }
namespace generated_tests::fully_connected_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::gather_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::generate_proposals_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
+namespace generated_tests::greater_equal_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
+namespace generated_tests::greater_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
+namespace generated_tests::grouped_conv2d_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_none_quant8_signed(); }
+namespace generated_tests::hard_swish { const test_helper::TestModel& get_test_model_simple(); }
+namespace generated_tests::heatmap_max_keypoint_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
namespace generated_tests::if_no_value { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::if_same_branch_model { const test_helper::TestModel& get_test_model_true(); }
+namespace generated_tests::if_simple { const test_helper::TestModel& get_test_model_true(); }
+namespace generated_tests::l2_normalization_quant8_signed { const test_helper::TestModel& get_test_model_dim4_axis0_quant8_signed(); }
namespace generated_tests::l2_normalization_zeros { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::less_equal_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
+namespace generated_tests::less_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
namespace generated_tests::logistic_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::max_pool_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::maximum_quant8_signed { const test_helper::TestModel& get_test_model_simple_quant8_signed(); }
namespace generated_tests::mean_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::minimum_quant8_signed { const test_helper::TestModel& get_test_model_simple_quant8_signed(); }
namespace generated_tests::mul_int32 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::mul_quant8_signed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::pad_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::not_equal_quant8_signed { const test_helper::TestModel& get_test_model_quantized_different_scale(); }
+namespace generated_tests::pad_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::pow_same_shape { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::prelu_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::qlstm_noprojection { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::qlstm_projection { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::quantize_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::rank { const test_helper::TestModel& get_test_model_1d(); }
+namespace generated_tests::reduce_max_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::reduce_min_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::relu1_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu6_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::relu_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::reshape_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::resize_bilinear_v1_3 { const test_helper::TestModel& get_test_model_half_pixel_centers_2x2x2x1_to_2x3x3x1(); }
+namespace generated_tests::resize_nearest_neighbor_v1_3 { const test_helper::TestModel& get_test_model_half_pixel_centers_5x2_to_2x2(); }
+namespace generated_tests::resize_quant8_signed { const test_helper::TestModel& get_test_model_shape_nhwc_quant8_signed(); }
+namespace generated_tests::roi_align_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
+namespace generated_tests::roi_pooling_quant8_signed { const test_helper::TestModel& get_test_model_nhwc_quant8_signed(); }
+namespace generated_tests::select_quant8_signed { const test_helper::TestModel& get_test_model_one_dim_quant8_signed(); }
namespace generated_tests::slice_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::softmax_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::space_to_batch_quant8_signed { const test_helper::TestModel& get_test_model(); }
@@ -53,39 +88,87 @@
namespace generated_tests::sub_int32 { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::sub_quant8_signed { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::tanh_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::tile_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::topk_v2_quant8_signed { const test_helper::TestModel& get_test_model(); }
-namespace generated_tests::transpose_quant8_signed { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::transpose_conv2d_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
+namespace generated_tests::transpose_quant8_signed { const test_helper::TestModel& get_test_model_quant8_signed(); }
namespace generated_tests::unidirectional_sequence_lstm_layer_norm_cifg_peephole_state_output { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::unidirectional_sequence_rnn { const test_helper::TestModel& get_test_model_blackbox_state_output(); }
namespace generated_tests::while_infinite_loop { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::while_sum_of_powers_quant8 { const test_helper::TestModel& get_test_model_n_0(); }
+namespace generated_tests::while_sum_of_powers_quant8_signed { const test_helper::TestModel& get_test_model_n_0(); }
-TEST(GeneratedTestsLoader, V1_3_Loader) {
+TEST(GeneratedTestsLoader, spec_V1_3) {
generated_tests::abs_int32::get_test_model();
generated_tests::add_int32::get_test_model();
generated_tests::add_quant8_signed::get_test_model();
+ generated_tests::argmax_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::argmin_quant8_signed::get_test_model_quant8_signed();
generated_tests::avg_pool_quant8_signed::get_test_model();
+ generated_tests::axis_aligned_bbox_transform_quant8_signed::get_test_model_quant8_signed();
generated_tests::batch_to_space_quant8_signed::get_test_model();
- generated_tests::concat_quant8_signed::get_test_model();
- generated_tests::conv2d_quant8_signed::get_test_model();
+ generated_tests::bbox_graph_quant8_signed::get_test_model_zero_sized_quant8_signed();
+ generated_tests::bidirectional_sequence_lstm::get_test_model_parallel_linking();
+ generated_tests::bidirectional_sequence_lstm_state_output::get_test_model_blackbox();
+ generated_tests::bidirectional_sequence_rnn_1_3::get_test_model_parallel_linking();
+ generated_tests::bidirectional_sequence_rnn_state_output::get_test_model_blackbox();
+ generated_tests::box_with_nms_limit_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::cast_identity::get_test_model_float16();
+ generated_tests::channel_shuffle_quant8_signed::get_test_model_quant8_signed_dim4_axis0();
+ generated_tests::concat_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::conv2d_quant8_signed::get_test_model_nhwc_quant8_signed();
generated_tests::depth_to_space_quant8_signed::get_test_model();
- generated_tests::depthwise_conv2d_quant8_signed::get_test_model();
+ generated_tests::depthwise_conv2d_quant8_signed::get_test_model_nhwc_quant8_signed();
generated_tests::dequantize_quant8_signed::get_test_model();
generated_tests::div_int32::get_test_model();
+ generated_tests::elu::get_test_model_alpha_one();
+ generated_tests::embedding_lookup_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::embedding_lookup_v1_3::get_test_model_float16();
+ generated_tests::equal_quant8_signed::get_test_model_quantized_different_scale();
+ generated_tests::expand_dims_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::fill::get_test_model_1d();
generated_tests::fully_connected_quant8_signed::get_test_model();
+ generated_tests::gather_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::generate_proposals_quant8_signed::get_test_model_nhwc_quant8_signed();
+ generated_tests::greater_equal_quant8_signed::get_test_model_quantized_different_scale();
+ generated_tests::greater_quant8_signed::get_test_model_quantized_different_scale();
+ generated_tests::grouped_conv2d_quant8_signed::get_test_model_nhwc_none_quant8_signed();
+ generated_tests::hard_swish::get_test_model_simple();
+ generated_tests::heatmap_max_keypoint_quant8_signed::get_test_model_nhwc_quant8_signed();
generated_tests::if_no_value::get_test_model();
+ generated_tests::if_same_branch_model::get_test_model_true();
+ generated_tests::if_simple::get_test_model_true();
+ generated_tests::l2_normalization_quant8_signed::get_test_model_dim4_axis0_quant8_signed();
generated_tests::l2_normalization_zeros::get_test_model();
+ generated_tests::less_equal_quant8_signed::get_test_model_quantized_different_scale();
+ generated_tests::less_quant8_signed::get_test_model_quantized_different_scale();
generated_tests::logistic_quant8_signed::get_test_model();
generated_tests::max_pool_quant8_signed::get_test_model();
+ generated_tests::maximum_quant8_signed::get_test_model_simple_quant8_signed();
generated_tests::mean_quant8_signed::get_test_model();
+ generated_tests::minimum_quant8_signed::get_test_model_simple_quant8_signed();
generated_tests::mul_int32::get_test_model();
generated_tests::mul_quant8_signed::get_test_model();
- generated_tests::pad_quant8_signed::get_test_model();
+ generated_tests::not_equal_quant8_signed::get_test_model_quantized_different_scale();
+ generated_tests::pad_quant8_signed::get_test_model_quant8_signed();
generated_tests::pow_same_shape::get_test_model();
+ generated_tests::prelu_quant8_signed::get_test_model_quant8_signed();
generated_tests::qlstm_noprojection::get_test_model();
generated_tests::qlstm_projection::get_test_model();
+ generated_tests::quantize_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::rank::get_test_model_1d();
+ generated_tests::reduce_max_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::reduce_min_quant8_signed::get_test_model_quant8_signed();
generated_tests::relu1_quant8_signed::get_test_model();
generated_tests::relu6_quant8_signed::get_test_model();
generated_tests::relu_quant8_signed::get_test_model();
generated_tests::reshape_quant8_signed::get_test_model();
+ generated_tests::resize_bilinear_v1_3::get_test_model_half_pixel_centers_2x2x2x1_to_2x3x3x1();
+ generated_tests::resize_nearest_neighbor_v1_3::get_test_model_half_pixel_centers_5x2_to_2x2();
+ generated_tests::resize_quant8_signed::get_test_model_shape_nhwc_quant8_signed();
+ generated_tests::roi_align_quant8_signed::get_test_model_nhwc_quant8_signed();
+ generated_tests::roi_pooling_quant8_signed::get_test_model_nhwc_quant8_signed();
+ generated_tests::select_quant8_signed::get_test_model_one_dim_quant8_signed();
generated_tests::slice_quant8_signed::get_test_model();
generated_tests::softmax_quant8_signed::get_test_model();
generated_tests::space_to_batch_quant8_signed::get_test_model();
@@ -96,10 +179,15 @@
generated_tests::sub_int32::get_test_model();
generated_tests::sub_quant8_signed::get_test_model();
generated_tests::tanh_quant8_signed::get_test_model();
+ generated_tests::tile_quant8_signed::get_test_model_quant8_signed();
generated_tests::topk_v2_quant8_signed::get_test_model();
- generated_tests::transpose_quant8_signed::get_test_model();
+ generated_tests::transpose_conv2d_quant8_signed::get_test_model_quant8_signed();
+ generated_tests::transpose_quant8_signed::get_test_model_quant8_signed();
generated_tests::unidirectional_sequence_lstm_layer_norm_cifg_peephole_state_output::get_test_model();
+ generated_tests::unidirectional_sequence_rnn::get_test_model_blackbox_state_output();
generated_tests::while_infinite_loop::get_test_model();
+ generated_tests::while_sum_of_powers_quant8::get_test_model_n_0();
+ generated_tests::while_sum_of_powers_quant8_signed::get_test_model_n_0();
EXPECT_TRUE(true);
}
diff --git a/nn/chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc b/nn/chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc
index 446ac8f..d6077e6 100644
--- a/nn/chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc
+++ b/nn/chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc
@@ -1,30 +1,29 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <gtest/gtest.h>
#include "TestHarness.h"
-// This exists to ensure that all of the tests in the generated test
-// suite get loaded into the system. Unless the symbols are referenced,
-// the linker will drop them and they won't get loaded or run. You could
-// use --whole-archive to prevent this, but the syntax is cumbersome and
-// gn doesn't support it well.
-
-// This file was produced by parsing the results of 'nm -C <lib>' and
-// looking for the 'dummy_test_model' symbol and then some find / replace
-// magic.
-
-// V1_3 for CTS
+// This file has been generated with the generated_tests_loader.py script.
+// DO NOT EDIT!
namespace generated_tests::cast_mismatching_shapes { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::concat_invalid_rank { const test_helper::TestModel& get_test_model(); }
namespace generated_tests::conv2d_v1_3_invalid_rank { const test_helper::TestModel& get_test_model(); }
+namespace generated_tests::if_simple_unknown_dimension { const test_helper::TestModel& get_test_model_true(); }
+namespace generated_tests::if_simple_unknown_rank { const test_helper::TestModel& get_test_model_true(); }
+namespace generated_tests::while_fib_unknown_dimension { const test_helper::TestModel& get_test_model_n_2_unused_output(); }
+namespace generated_tests::while_fib_unknown_rank { const test_helper::TestModel& get_test_model_n_2_unused_output(); }
-TEST(GeneratedTestsLoader, V1_3_CTS_Loader) {
+TEST(GeneratedTestsLoader, spec_V1_3_cts_only) {
generated_tests::cast_mismatching_shapes::get_test_model();
generated_tests::concat_invalid_rank::get_test_model();
generated_tests::conv2d_v1_3_invalid_rank::get_test_model();
+ generated_tests::if_simple_unknown_dimension::get_test_model_true();
+ generated_tests::if_simple_unknown_rank::get_test_model_true();
+ generated_tests::while_fib_unknown_dimension::get_test_model_n_2_unused_output();
+ generated_tests::while_fib_unknown_rank::get_test_model_n_2_unused_output();
EXPECT_TRUE(true);
}
diff --git a/nn/chromeos/tools/generated_tests_loader.py b/nn/chromeos/tools/generated_tests_loader.py
new file mode 100644
index 0000000..3493311
--- /dev/null
+++ b/nn/chromeos/tools/generated_tests_loader.py
@@ -0,0 +1,203 @@
+# -*- coding: utf-8 -*-
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Creates C++ files that ensure all the generated tests are loaded.
+
+All the generated test files in ml/nn/runtime/test/generated/... need
+to be added to a BUILD.gn file, since there is no way to glob a
+directory into a build target using gn.
+
+Further, even if they're built, a symbol in each file needs to be
+referenced from the test binary in order to ensure the object file is
+loaded. This script generates a set of files that can be added to the
+test target that performs this referencing and hence ensures the tests
+are loaded. Specifically, the following files are generated / checked:
+
+* ml/nn/chromeos/tests/runtime/generated_test_loader_V1_0.cc
+* ml/nn/chromeos/tests/runtime/generated_test_loader_V1_1.cc
+* ml/nn/chromeos/tests/runtime/generated_test_loader_V1_2.cc
+* ml/nn/chromeos/tests/runtime/generated_test_loader_V1_3.cc
+* ml/nn/chromeos/tests/runtime/generated_test_loader_V1_3_cts.cc
+
+"""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+import argparse
+import os
+import re
+import sys
+import textwrap
+
+# This is a regex to find a callable symbol in the test file(s).
+SYMBOL_PATTERN = re.compile("const TestModel\& (get_test_model[\w]*)\(")
+
+
+def generate_header():
+ return textwrap.dedent("""\
+ // Copyright 2021 The Chromium OS Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+ #include <gtest/gtest.h>
+ #include "TestHarness.h"
+
+ // This file has been generated with the generated_tests_loader.py script.
+ // DO NOT EDIT!\n
+ """)
+
+
+def generate_forward_declaration(namespace, symbol):
+ return (
+ "namespace generated_tests::{namespace} {{ const test_helper::TestModel&"
+ " {symbol}(); }}\n").format(
+ namespace=namespace, symbol=symbol)
+
+
+def generate_symbol_reference(namespace, symbol):
+ return ("generated_tests::{namespace}::{symbol}();\n").format(
+ namespace=namespace, symbol=symbol)
+
+
+def get_symbol(file_path):
+ """Scans the provided file to find a callable symbol.
+
+ Returns None otherwise.
+
+ Args:
+ file_path: The file to scan for a callable symbol
+
+ Returns:
+ The name of a symbol that can be called. None otherwise.
+ """
+ content = read_file(file_path)
+ match = SYMBOL_PATTERN.search(content)
+ if match:
+ return match.group(1)
+ else:
+ return None
+
+
+def generate_loader(dir_name, excluded_files):
+ """Generates the contents of the test loader C++ file.
+
+ Args:
+ dir_name: The spec_V* directory to process and include each of .cc files
+ into the test loader.
+ excluded_files: List of files to exclude from the loader.
+
+ Returns:
+ The expected contents of the C++ test loader file.
+ """
+ dir_suffix = dir_name.split("/")[-1]
+ content = generate_header()
+
+ namespace_to_symbol = {
+ file.name.split(".")[0]: get_symbol(file.path)
+ for file in os.scandir(dir_name)
+ }
+ sorted_keys = sorted(
+ [n for n in namespace_to_symbol.keys() if n not in excluded_files])
+
+ for namespace in sorted_keys:
+ content += generate_forward_declaration(namespace,
+ namespace_to_symbol[namespace])
+
+ content += "\nTEST(GeneratedTestsLoader, " + dir_suffix + ") {\n"
+ for namespace in sorted_keys:
+ content += " " + generate_symbol_reference(namespace,
+ namespace_to_symbol[namespace])
+ content += "\n EXPECT_TRUE(true);\n"
+ content += "}\n"
+
+ return content
+
+
+def read_file(filename):
+ with open(filename) as reader:
+ return reader.read()
+
+
+def write_file(filename, content):
+ with open(filename, "w") as writer:
+ writer.write(content)
+
+
+def process_dir(dir_name, output_filename, excluded_files, check_only=False):
+ """Processes a spec_V* directory to check or regenerate the loader file.
+
+ Args:
+ dir_name: The spec_V* directory to process and include each of .cc files
+ into the test loader.
+ output_filename: The C++ test loader file to check or regenerate.
+ excluded_files: List of files to exclude from the loader.
+ check_only: If true, compares the expected contents with the actual file
+ contents and prints an error and exit if there is a difference. If false,
+ it will regenerate the load file with the expected contents.
+ """
+ content = generate_loader(dir_name, excluded_files)
+ existing_content = read_file(output_filename)
+
+ if check_only:
+ if content != existing_content:
+ print(("\n{output_filename} is out of date. "
+ "Please run {this_script} before uploading.\n").format(
+ output_filename=output_filename, this_script=__file__))
+ sys.exit(1)
+ else:
+ write_file(output_filename, content)
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "--check_only", help="if false, re-write the files", action="store_true")
+ args = parser.parse_args()
+ check_only = args.check_only
+
+ root_dir = os.path.abspath(
+ os.path.join(os.path.dirname(__file__), "..", ".."))
+
+ to_process = {
+ "spec_V1_0": {
+ "output_file":
+ "generated_test_loader_V1_0.cc",
+ "excluded_files": [
+ # Uses hardware buffers which are unsupported (b/157388904)
+ "mobilenet_224_gender_basic_fixed",
+ "mobilenet_quantized"
+ ]
+ },
+ "spec_V1_1": {
+ "output_file": "generated_test_loader_V1_1.cc",
+ # Uses hardware buffers which are unsupported (b/157388904)
+ "excluded_files": ["mobilenet_224_gender_basic_fixed_relaxed"]
+ },
+ "spec_V1_2": {
+ "output_file": "generated_test_loader_V1_2.cc",
+ "excluded_files": []
+ },
+ "spec_V1_3": {
+ "output_file": "generated_test_loader_V1_3.cc",
+ # Uses hardware buffers which are unsupported (b/157388904)
+ "excluded_files": ["if_constant", "while_fib", "while_sum_of_powers"]
+ },
+ "spec_V1_3_cts_only": {
+ "output_file": "generated_test_loader_V1_3_cts.cc",
+ "excluded_files": []
+ },
+ }
+
+ for spec_dir, params in to_process.items():
+ process_dir(
+ dir_name=root_dir + "/runtime/test/generated/" + spec_dir,
+ output_filename=root_dir + "/chromeos/tests/runtime/" +
+ params["output_file"],
+ excluded_files=params["excluded_files"],
+ check_only=check_only)
+
+
+if __name__ == "__main__":
+ main()