blob: 64b6805d2c72cf76bd541ef116f004056e50fe8f [file] [log] [blame]
Matthew Sloyan164bf4f2022-10-28 18:02:17 +01001//
2// Copyright © 2022 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
13TEST_SUITE("TosaReferenceOptimizedNetwork")
14{
15
16TEST_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 auto addLayer = network->AddAdditionLayer("add");
25 auto outputLayer = network->AddOutputLayer(2, "output");
26
27 armnn::TensorInfo tensorInfo{{4}, armnn::DataType::Float32};
28
29 inputLayer1->GetOutputSlot(0).Connect(addLayer->GetInputSlot(0));
30 inputLayer1->GetOutputSlot(0).SetTensorInfo(tensorInfo);
31
32 inputLayer2->GetOutputSlot(0).Connect(addLayer->GetInputSlot(1));
33 inputLayer2->GetOutputSlot(0).SetTensorInfo(tensorInfo);
34
35 addLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0));
36 addLayer->GetOutputSlot(0).SetTensorInfo(tensorInfo);
37
38 std::vector<armnn::BackendId> backends = { "TosaRef" };
39
40 armnn::OptimizerOptions optimizedOptions;
41 armnn::IOptimizedNetworkPtr optNet = Optimize(*network, backends, runtime->GetDeviceSpec(), optimizedOptions);
42 CHECK(optNet);
43
44 armnn::Graph& graph = GetGraphForTesting(optNet.get());
45
46 // Check graph layer sequence to ensure that the network has been replaced with a PreCompiledLayer
47 CHECK(CheckSequence(graph.cbegin(), graph.cend(),
48 &IsLayerOfType<armnn::InputLayer>,
49 &IsLayerOfType<armnn::InputLayer>,
50 &IsLayerOfType<armnn::PreCompiledLayer>,
51 &IsLayerOfType<armnn::OutputLayer>));
52}
53
54}