xref: /aosp_15_r20/external/armnn/src/backends/tosaReference/test/TosaRefOptimizedNetworkTests.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <armnn/INetwork.hpp>
7 
8 #include <GraphUtils.hpp>
9 #include <TestUtils.hpp>
10 
11 #include <doctest/doctest.h>
12 
13 TEST_SUITE("TosaReferenceOptimizedNetwork")
14 {
15 
16 TEST_CASE("SimpleSupportedOptimizedNetwork")
17 {
18     armnn::IRuntime::CreationOptions options;
19     armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
20     armnn::INetworkPtr network(armnn::INetwork::Create());
21 
22     auto inputLayer1 = network->AddInputLayer(0, "input_1");
23     auto inputLayer2 = network->AddInputLayer(1, "input_2");
24     ARMNN_NO_DEPRECATE_WARN_BEGIN
25     auto addLayer = network->AddAdditionLayer("add");
26     ARMNN_NO_DEPRECATE_WARN_END
27     auto outputLayer = network->AddOutputLayer(2, "output");
28 
29     armnn::TensorInfo tensorInfo{{4}, armnn::DataType::Float32};
30 
31     inputLayer1->GetOutputSlot(0).Connect(addLayer->GetInputSlot(0));
32     inputLayer1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
33 
34     inputLayer2->GetOutputSlot(0).Connect(addLayer->GetInputSlot(1));
35     inputLayer2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
36 
37     addLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0));
38     addLayer->GetOutputSlot(0).SetTensorInfo(tensorInfo);
39 
40     std::vector<armnn::BackendId> backends = { "TosaRef" };
41 
42     armnn::OptimizerOptionsOpaque optimizedOptions;
43     armnn::IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optimizedOptions);
44     CHECK(optNet);
45 
46     armnn::Graph& graph = GetGraphForTesting(optNet.get());
47 
48     // Check graph layer sequence to ensure that the network has been replaced with a PreCompiledLayer
49     CHECK(CheckSequence(graph.cbegin(), graph.cend(),
50                         &IsLayerOfType<armnn::InputLayer>,
51                         &IsLayerOfType<armnn::InputLayer>,
52                         &IsLayerOfType<armnn::PreCompiledLayer>,
53                         &IsLayerOfType<armnn::OutputLayer>));
54 }
55 
56 }
57