aboutsummaryrefslogtreecommitdiff
path: root/21.02/_graph_tests_8cpp_source.xhtml
blob: ff2814c10da5562e277fd33c5fe02a2364e85d18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/armnn/test/GraphTests.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">21.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_graph_tests_8cpp_source.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">GraphTests.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_graph_tests_8cpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2017 Arm Ltd. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_graph_utils_8hpp.xhtml">GraphUtils.hpp</a>&quot;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_graph_8hpp.xhtml">Graph.hpp</a>&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_layer_8hpp.xhtml">Layer.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_types_utils_8hpp.xhtml">armnn/TypesUtils.hpp</a>&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_exceptions_8hpp.xhtml">armnn/Exceptions.hpp</a>&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_numeric_cast_8hpp.xhtml">armnn/utility/NumericCast.hpp</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_polymorphic_downcast_8hpp.xhtml">armnn/utility/PolymorphicDowncast.hpp</a>&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="include_2armnn_2backends_2_i_backend_internal_8hpp.xhtml">armnn/backends/IBackendInternal.hpp</a>&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_cpu_tensor_handle_8hpp.xhtml">backendsCommon/CpuTensorHandle.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_tensor_handle_factory_registry_8hpp.xhtml">backendsCommon/TensorHandleFactoryRegistry.hpp</a>&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;boost/test/unit_test.hpp&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<a class="code" href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE</a>(Graph)</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">   24</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a>(ClassGraph)</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;layerA&quot;</span>));</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#ac73a43305233b7e5f70debdb2d14a8d3">GraphHasNamedLayer</a>(graph, <span class="stringliteral">&quot;layerA&quot;</span>));</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;}</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#a7b9fa8832bbe7e6944b72cbd2238024c">   31</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a>(TopologicalSort)</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a> activationDefaults;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;layerA&quot;</span>));</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerB&quot;</span>));</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a>&gt;(<span class="stringliteral">&quot;layerC&quot;</span>));</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>&gt;(0, <span class="stringliteral">&quot;output&quot;</span>));</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerD&quot;</span>));</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerE&quot;</span>));</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerA = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerA&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerB = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerB&quot;</span>);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerC = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerC&quot;</span>);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerO = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerE = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerE&quot;</span>);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerD = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerD&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="comment">// Simple graph which branches and rejoins.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="comment">//  D   E</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="comment">//   \  |</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="comment">//    \ B</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="comment">//     \|</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="comment">//      C</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerE-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    layerE-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1));</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerO-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="comment">// check order is valid</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerD));</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerE));</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerD, layerC));</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerE, layerB));</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerC));</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;}</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#aeebdd31cc193c238d242902dec3d7a54">   74</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a>(InsertNewLayerBefore)</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> tensorInfo({ 1, 1, 1, 1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    std::vector&lt;armnn::Layer*&gt; order;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a> activationDefaults;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;layerA&quot;</span>));</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerB&quot;</span>));</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerC&quot;</span>));</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a>&gt;(<span class="stringliteral">&quot;layerD&quot;</span>));</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>&gt;(0, <span class="stringliteral">&quot;output&quot;</span>));</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerA = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerA&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerB = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerB&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerC = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerC&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerD = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerD&quot;</span>);</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerO = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="comment">//   \ /</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="comment">//    D</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1));</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerO-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerB));</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerC));</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerD));</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="comment">//   \  |</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">//    \ E</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="comment">//     \|</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="comment">//      D</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a3ff30c6669fdc69de1f5be1f89bacc3f">InsertNewLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1),</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;                                                                      activationDefaults,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                                                                      <span class="stringliteral">&quot;layerE&quot;</span>));</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerE = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerE&quot;</span>);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerB));</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerC));</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerE));</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerE, layerD));</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="comment">//      A</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    <span class="comment">//     /|</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="comment">//    / F</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">//   /  |</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="comment">//   \  |</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="comment">//    \ E</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">//     \|</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="comment">//      D</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a3ff30c6669fdc69de1f5be1f89bacc3f">InsertNewLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0),</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;                                                                      activationDefaults,</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                                                                      <span class="stringliteral">&quot;layerF&quot;</span>));</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerF = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerF&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerB));</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerF));</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerF, layerC));</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerE));</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerE, layerD));</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;}</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#a4a830cab0262759deb4fe11ee3c20c0f">  160</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a>(InsertNewLayerAfter)</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> tensorInfo({ 1, 1, 1, 1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    std::vector&lt;armnn::Layer*&gt; order;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a> activationDefaults;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;layerA&quot;</span>));</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerB&quot;</span>));</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(activationDefaults, <span class="stringliteral">&quot;layerC&quot;</span>));</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a>&gt;(<span class="stringliteral">&quot;layerD&quot;</span>));</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>&gt;(0, <span class="stringliteral">&quot;output&quot;</span>));</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerA = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerA&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerB = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerB&quot;</span>);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerC = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerC&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerD = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerD&quot;</span>);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerO = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">//   \ /</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">//    D</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">SetTensorInfo</a>(tensorInfo);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    layerB-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1));</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    layerD-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(layerO-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerB));</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerC));</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerD));</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="comment">//   \  |</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="comment">//    \ E</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="comment">//     \|</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">//      D</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a3ff30c6669fdc69de1f5be1f89bacc3f">InsertNewLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(layerC-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(),</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                                                                      activationDefaults,</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                                                                      <span class="stringliteral">&quot;layerE&quot;</span>));</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerE = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerE&quot;</span>);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerB));</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerC));</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerE));</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerE, layerD));</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="comment">//    A</span></div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="comment">//    |</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="comment">//    F</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="comment">//   / \&#39;</span></div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">//  B   C</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="comment">//  \   |</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="comment">//   \  E</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="comment">//    \ /</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="comment">//     D</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    BOOST_CHECK_NO_THROW(graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a3ff30c6669fdc69de1f5be1f89bacc3f">InsertNewLayer</a>&lt;<a class="code" href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a>&gt;(layerA-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(),</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;                                                                      activationDefaults,</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                                                                      <span class="stringliteral">&quot;layerF&quot;</span>));</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* <span class="keyword">const</span> layerF = <a class="code" href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a>(graph, <span class="stringliteral">&quot;layerF&quot;</span>);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    <span class="comment">// Checks order is valid.</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerA, layerF));</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerF, layerB));</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerF, layerC));</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerB, layerD));</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerC, layerE));</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    BOOST_TEST(<a class="code" href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a>(graph, layerE, layerD));</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;}</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="keyword">namespace</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;{</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keyword">using</span> Edge = std::pair&lt;const armnn::Layer*, const armnn::Layer*&gt;;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">static</span> std::vector&lt;Edge&gt; GetEdgeList(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a>&amp; graph)</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    std::vector&lt;Edge&gt; edges;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; srcLayer: graph)</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputSlots = srcLayer-&gt;GetNumOutputSlots();</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s = 0; s &lt; numOutputSlots; ++s)</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_output_slot.xhtml">armnn::IOutputSlot</a>&amp; outputSlot = srcLayer-&gt;GetOutputSlot(s);</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numConnections = outputSlot.<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#aab97b09d9ee85a105883949abcae52f3">GetNumConnections</a>();</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; numConnections; ++c)</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;            {</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                <span class="keyword">auto</span> inputSlot = armnn::PolymorphicDowncast&lt;const armnn::InputSlot*&gt;(outputSlot.<a class="code" href="classarmnn_1_1_i_output_slot.xhtml#a9fffb92dc6d2edd5258d574a5862fc83">GetConnection</a>(c));</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                edges.emplace_back(srcLayer, &amp;inputSlot-&gt;GetOwningLayer());</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;            }</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        }</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    }</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <span class="keywordflow">return</span> edges;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;}</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> TestGraphAfterAddingCopyLayers(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a>&amp; graph, <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a>&amp; origGraph)</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;{</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    std::vector&lt;Edge&gt; origEdges = GetEdgeList(origGraph);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    std::vector&lt;Edge&gt; newEdges = GetEdgeList(graph);</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="comment">// Adding copy layers should not produce any duplicate edges.</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    {</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        std::vector&lt;Edge&gt; sortedNewEdges = newEdges;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        std::sort(sortedNewEdges.begin(), sortedNewEdges.end());</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keyword">auto</span> last = std::unique(sortedNewEdges.begin(), sortedNewEdges.end());</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        BOOST_CHECK_MESSAGE(last == sortedNewEdges.end(), <span class="stringliteral">&quot;New graph contains duplicate edges!&quot;</span>);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="comment">// Each new edge must be tested.</span></div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keywordflow">while</span> (!newEdges.empty())</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="keyword">const</span> Edge edge = std::move(newEdges.back());</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        newEdges.pop_back();</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        <span class="comment">// Edge present in the original graph?</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordtype">int</span> originalEdge = -1;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; origEdges.size(); i++)</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        {</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;            <span class="keyword">const</span> Edge&amp; origEdge = origEdges[i];</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;            <span class="keywordflow">if</span> (origEdge.first-&gt;GetNameStr() == edge.first-&gt;GetNameStr() &amp;&amp;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;                origEdge.second-&gt;GetNameStr() == edge.second-&gt;GetNameStr())</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;            {</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                originalEdge = <a class="code" href="namespacearmnn.xhtml#a375ca3cff9f1b005d1412dc5f3cf5b6e">armnn::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(i);</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;            }</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        }</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keywordflow">if</span> (originalEdge != -1)</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            <span class="comment">// Each vertex should correspond to a layer.</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* srcLayer = edge.first;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* dstLayer = edge.second;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;            BOOST_TEST(srcLayer);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;            BOOST_TEST(dstLayer);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;            <span class="comment">// Both layers must have the same compute device.</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;            <span class="keywordflow">if</span> (srcLayer &amp;&amp; dstLayer)</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;            {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                BOOST_TEST((srcLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>() == dstLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>()));</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;            }</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;            <span class="comment">// Marks edge in original graph as observed (by deleting it).</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;            origEdges.erase(origEdges.begin() + originalEdge);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        }</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        {</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;            <span class="comment">// Edge did not exist in the original graph.</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;            <span class="comment">// It must then be an edge connecting a layer and a copy layer.</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* srcLayer = edge.first;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* dstLayer = edge.second;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;            <span class="keywordflow">if</span> (srcLayer == <span class="keyword">nullptr</span> || dstLayer == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;            {</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                BOOST_ERROR(<span class="stringliteral">&quot;At least one of the two ends of a new edge (&quot;</span> &lt;&lt; edge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; edge.second &lt;&lt; <span class="stringliteral">&quot;) &quot;</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                            <span class="stringliteral">&quot;introduced after adding copy layers to a graph &quot;</span></div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                            <span class="stringliteral">&quot;correspond to a layer not known to the graph&quot;</span>);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;            }</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;            <span class="comment">// One and only one of the two layers referenced by the edge should be present in the original graph.</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> srcLayerInOrigGraph = <a class="code" href="_graph_utils_8cpp.xhtml#ac73a43305233b7e5f70debdb2d14a8d3">GraphHasNamedLayer</a>(origGraph, srcLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">GetNameStr</a>());</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">bool</span> dstLayerInOrigGraph = <a class="code" href="_graph_utils_8cpp.xhtml#ac73a43305233b7e5f70debdb2d14a8d3">GraphHasNamedLayer</a>(origGraph, dstLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">GetNameStr</a>());</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;            <span class="keywordflow">if</span> (srcLayerInOrigGraph == dstLayerInOrigGraph)</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            {</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                BOOST_ERROR(<span class="stringliteral">&quot;A new edge (&quot;</span></div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                            &lt;&lt; edge.first-&gt;GetName()</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                            &lt;&lt; edge.second-&gt;GetName()</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;) introduced after adding copy &quot;</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                               <span class="stringliteral">&quot;layers to a graph is invalid. One of the ends should be present in the original &quot;</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                               <span class="stringliteral">&quot;graph and the other should not, but &quot;</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                            &lt;&lt; (srcLayerInOrigGraph ? <span class="stringliteral">&quot;both are&quot;</span> : <span class="stringliteral">&quot;none are&quot;</span>));</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;            }</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* copyLayer = srcLayerInOrigGraph ? dstLayer : srcLayer;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* nonCopyLayer = srcLayerInOrigGraph ? srcLayer : dstLayer;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;            <span class="comment">// Finds all edges connecting the copy layer to other layers.</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;            std::vector&lt;Edge&gt; adjEdges;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;            <span class="keyword">auto</span> it = newEdges.begin();</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;            <span class="keywordflow">while</span> (it != newEdges.end())</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            {</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                Edge&amp; newEdge = *it;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                <span class="keywordflow">if</span> (copyLayer == (srcLayerInOrigGraph ? newEdge.first : newEdge.second))</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                    adjEdges.push_back(newEdge);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                    <span class="comment">// Since the adjacent edge is immediately tested below, there is no need to consider it afterwards.</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;                    it = newEdges.erase(it);</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                }</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;                {</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;                    it++;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                }</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;            }</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;            <span class="keywordflow">if</span> (adjEdges.empty())</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;            {</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                BOOST_ERROR(<span class="stringliteral">&quot;An edge connecting a layer and a copy layer exists, (&quot;</span> &lt;&lt; edge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                            edge.second &lt;&lt; <span class="stringliteral">&quot;),  but no other edges connecting the copy layer &#39;&quot;</span> &lt;&lt; copyLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a7ddf0cf6f620d59c10e63495ace795d0">GetName</a>()</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                            &lt;&lt; <span class="stringliteral">&quot;&#39; to other layers could be found&quot;</span>);</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;            }</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            <span class="comment">// Tests adjacent edges now.</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;            <span class="keywordflow">for</span> (<span class="keyword">const</span> Edge&amp; adjEdge : adjEdges)</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;            {</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                <span class="comment">// The adjacent edge must connect the copy layer to another layer.</span></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* adjLayer = srcLayerInOrigGraph ? adjEdge.second : adjEdge.first;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                <span class="keywordflow">if</span> (!adjLayer)</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                {</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                    BOOST_ERROR(<span class="stringliteral">&quot;An edge (&quot;</span> &lt;&lt; adjEdge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; adjEdge.second &lt;&lt;<span class="stringliteral">&quot;) is adjacent to an edge &quot;</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                                <span class="stringliteral">&quot;connecting a layer and a copy layer, (&quot;</span> &lt;&lt; edge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; edge.second &lt;&lt; <span class="stringliteral">&quot;), &quot;</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                                <span class="stringliteral">&quot;but the non-copy layer in the former does not correspond to a layer&quot;</span>);</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                    <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                }</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                <span class="comment">// Both layers must have different compute devices.</span></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                BOOST_TEST((nonCopyLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>() != adjLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">GetBackendId</a>()));</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                <span class="comment">// There must exist an edge connecting both layers directly in the original graph.</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                {</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* origEdgeSrc = srcLayerInOrigGraph ? nonCopyLayer : adjLayer;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_layer.xhtml">armnn::Layer</a>* origEdgeDst = srcLayerInOrigGraph ? adjLayer : nonCopyLayer;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                    <span class="keyword">auto</span> origEdgeIter = origEdges.begin();</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                    <span class="keywordflow">for</span> (; origEdgeIter != origEdges.end(); origEdgeIter++)</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                    {</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                        <span class="keywordflow">if</span> (origEdgeIter-&gt;first-&gt;GetNameStr() == origEdgeSrc-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">GetNameStr</a>() &amp;&amp;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                            origEdgeIter-&gt;second-&gt;GetNameStr() == origEdgeDst-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">GetNameStr</a>())</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                        {</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                        }</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                    }</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                    <span class="keywordflow">if</span> (origEdgeIter != origEdges.end())</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;                    {</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                        origEdges.erase(origEdgeIter);</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                    }</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                    <span class="keywordflow">else</span></div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                    {</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                        BOOST_ERROR(<span class="stringliteral">&quot;An edge (&quot;</span> &lt;&lt; adjEdge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; adjEdge.second &lt;&lt; <span class="stringliteral">&quot;) is adjacent to an &quot;</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                            <span class="stringliteral">&quot;edge connecting a layer and a copy layer, (&quot;</span> &lt;&lt; edge.first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; edge.second &lt;&lt;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                            <span class="stringliteral">&quot;), but there is no edge connecting the layers in the original graph&quot;</span>);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                    }</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                }</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            }</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        }</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    }</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    BOOST_TEST(origEdges.empty(), <span class="stringliteral">&quot;Not all of the edges in the original graph correspond to paths in the new graph&quot;</span>);</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;}</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;<span class="keyword">struct </span>CopyLayersFixture</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;{</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    CopyLayersFixture()</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    {</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    }</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    <span class="keywordtype">void</span> InitialiseTestGraph()</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    {</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        <span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        <span class="keyword">using namespace </span><a class="code" href="namespacestd.xhtml">std</a>;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> inputLayer = AddLayer&lt;InputLayer&gt;(0, <span class="stringliteral">&quot;input&quot;</span>);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(Compute::CpuRef);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        <a class="code" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> convolutionDefaults;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> convLayer1 = AddLayer&lt;Convolution2dLayer&gt;(convolutionDefaults, <span class="stringliteral">&quot;conv1&quot;</span>);</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(Compute::CpuRef);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> convLayer2 = AddLayer&lt;Convolution2dLayer&gt;(convolutionDefaults, <span class="stringliteral">&quot;conv2&quot;</span>);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        convLayer2-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(Compute::CpuAcc);</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(convLayer2-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">armnn::OriginsDescriptor</a> concatDefaults(2);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> concatLayer = AddLayer&lt;ConcatLayer&gt;(concatDefaults, <span class="stringliteral">&quot;concat&quot;</span>);</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;        concatLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(concatLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        convLayer2-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(concatLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1));</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a> activationDefaults;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> actLayer = AddLayer&lt;ActivationLayer&gt;(activationDefaults, <span class="stringliteral">&quot;act&quot;</span>);</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        actLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;        concatLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(actLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml">armnn::SoftmaxDescriptor</a> softmaxDefaults;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> softmaxLayer = AddLayer&lt;SoftmaxLayer&gt;(softmaxDefaults, <span class="stringliteral">&quot;softmax&quot;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        softmaxLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        actLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(softmaxLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <a class="code" href="classarmnn_1_1_layer.xhtml">Layer</a>* <span class="keyword">const</span> outputLayer = AddLayer&lt;OutputLayer&gt;(0, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>);</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        softmaxLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        <span class="comment">// Set the memory strategies - for this test should be DirectCompatibility for same backends,</span></div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        <span class="comment">// and CopyToTarget for different backends</span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::DirectCompatibility);</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::CopyToTarget);</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        convLayer1-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(1, EdgeStrategy::DirectCompatibility);</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;        convLayer2-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::CopyToTarget);</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        concatLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::DirectCompatibility);</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        actLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::DirectCompatibility);</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        softmaxLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, EdgeStrategy::CopyToTarget);</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    }</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> m_TensorDesc;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> m_Graph;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    std::map&lt;armnn::BackendId, std::unique_ptr&lt;armnn::IBackendInternal&gt;&gt; m_Backends;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">armnn::TensorHandleFactoryRegistry</a> m_FactoryRegistry;</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>, <span class="keyword">typename</span>... Args&gt;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>* AddLayer(Args&amp;&amp;... args)</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    {</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>* <span class="keyword">const</span> layer = m_Graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&gt;(std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        <span class="keywordflow">for</span> (<span class="keyword">auto</span> slot = layer-&gt;BeginOutputSlots(); slot != layer-&gt;EndOutputSlots(); ++slot)</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        {</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;            slot-&gt;SetTensorInfo(m_TensorDesc);</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        }</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        <span class="keywordflow">return</span> layer;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;    };</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;};</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#a69272002a351060024897bfd47881ddb">  516</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#a69272002a351060024897bfd47881ddb">BOOST_FIXTURE_TEST_CASE</a>(AddCopyLayers, CopyLayersFixture)</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    InitialiseTestGraph();</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> origGraph(m_Graph);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    m_Graph.AddCompatibilityLayers(m_Backends, m_FactoryRegistry);</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    TestGraphAfterAddingCopyLayers(m_Graph, origGraph);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;}</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#a074f526aedd5b59097c97795fe6f65d4">  525</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#a69272002a351060024897bfd47881ddb">BOOST_FIXTURE_TEST_CASE</a>(AddCopyLayersSeveralTimes, CopyLayersFixture)</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;{</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    InitialiseTestGraph();</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    m_Graph.AddCompatibilityLayers(m_Backends, m_FactoryRegistry);</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <span class="comment">// Calling AddCompatibilityLayers() several times should not change the connections.</span></div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    <span class="keyword">const</span> std::vector&lt;Edge&gt; edges = GetEdgeList(m_Graph);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; ++i)</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;    {</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        m_Graph.AddCompatibilityLayers(m_Backends, m_FactoryRegistry);</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        <span class="keyword">const</span> std::vector&lt;Edge&gt; otherEdges = GetEdgeList(m_Graph);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        BOOST_TEST((edges == otherEdges));</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    }</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;}</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#af7f66d3840e35bb644d9e2e330cc808f">  540</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#a69272002a351060024897bfd47881ddb">BOOST_FIXTURE_TEST_CASE</a>(CopyLayersAddedBetweenSameLayersHaveDifferentNames, CopyLayersFixture)</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;{</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    <a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>* <span class="keyword">const</span> inputLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;input&quot;</span>);</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;    <a class="code" href="structarmnn_1_1_views_descriptor.xhtml">armnn::ViewsDescriptor</a> splitterDesc(2);</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    <a class="code" href="classarmnn_1_1_splitter_layer.xhtml">armnn::SplitterLayer</a>* <span class="keyword">const</span> splitterLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_splitter_layer.xhtml">armnn::SplitterLayer</a>&gt;(splitterDesc, <span class="stringliteral">&quot;splitter&quot;</span>);</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;    splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>);</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    <a class="code" href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a>* <span class="keyword">const</span> additionLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a>&gt;(<span class="stringliteral">&quot;addition&quot;</span>);</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    additionLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    <a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>* <span class="keyword">const</span> outputLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>&gt;(0, <span class="stringliteral">&quot;output&quot;</span>);</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(additionLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(1).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(additionLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(1));</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    additionLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a>);</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a>);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    splitterLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(1).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a>);</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    additionLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">SetEdgeStrategy</a>(0, <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a>);</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    graph.<a class="code" href="classarmnn_1_1_graph.xhtml#ad1bbee7bf5f93b792675886f57d3ebe0">AddCompatibilityLayers</a>(m_Backends, m_FactoryRegistry);</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    std::vector&lt;Edge&gt; edges = GetEdgeList(graph);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    BOOST_CHECK(edges.size() == 6u);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;    std::sort(edges.begin(), edges.end());</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <span class="keyword">auto</span> last = std::unique(edges.begin(), edges.end());</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    BOOST_CHECK_MESSAGE(last == edges.end(), <span class="stringliteral">&quot;Found duplicated edges after AddCompatibilityLayers()&quot;</span>);</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;}</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="_graph_tests_8cpp.xhtml#ae5e602c29a9168dcfa096deda40403a3">  576</a></span>&#160;<a class="code" href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a>(DuplicateLayerNames)</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;{</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    <a class="code" href="classarmnn_1_1_graph.xhtml">armnn::Graph</a> graph;</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    <a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>* <span class="keyword">const</span> inputLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a>&gt;(0, <span class="stringliteral">&quot;layer&quot;</span>);</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>* <span class="keyword">const</span> outputLayer = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">AddLayer</a>&lt;<a class="code" href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a>&gt;(0, <span class="stringliteral">&quot;layer&quot;</span>);</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">SetBackendId</a>(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    inputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">GetOutputSlot</a>(0).<a class="code" href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">Connect</a>(outputLayer-&gt;<a class="code" href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">GetInputSlot</a>(0));</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="keyword">auto</span> it = graph.<a class="code" href="classarmnn_1_1_graph.xhtml#a9a7209345edfdb2b066b0ceb66414d7c">TopologicalSort</a>().<a class="code" href="classarmnn_1_1_graph.xhtml#a2387033802383edbdc95f9bbb12a707e">begin</a>();</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    BOOST_TEST(((*it)-&gt;GetType() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a>));</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    BOOST_TEST(((*std::next(it))-&gt;GetType() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a>));</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;}</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;<a class="code" href="_profiler_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END</a>()</div><div class="ttc" id="_output_shape_of_squeeze_8cpp_xhtml_ae3a6cb217a792718f2bd0e8f45e3ca9e"><div class="ttname"><a href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE</a></div><div class="ttdeci">BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)</div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a2387033802383edbdc95f9bbb12a707e"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a2387033802383edbdc95f9bbb12a707e">armnn::Graph::begin</a></div><div class="ttdeci">Iterator begin()</div><div class="ttdoc">Returns iterator pointing to the beginning of the list. Lowercase for range-based for loops...</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00162">Graph.hpp:162</a></div></div>
<div class="ttc" id="classarmnn_1_1_splitter_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_splitter_layer.xhtml">armnn::SplitterLayer</a></div><div class="ttdoc">This layer represents a split operation. </div><div class="ttdef"><b>Definition:</b> <a href="_splitter_layer_8hpp_source.xhtml#l00013">SplitterLayer.hpp:13</a></div></div>
<div class="ttc" id="structarmnn_1_1_views_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.xhtml">armnn::ViewsDescriptor</a></div><div class="ttdoc">A ViewsDescriptor for the SplitterLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00206">Descriptors.hpp:206</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a3f80ddd1f76ed4ad599e0d1a00659ee5"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a3f80ddd1f76ed4ad599e0d1a00659ee5">armnn::OutputSlot::SetEdgeStrategy</a></div><div class="ttdeci">void SetEdgeStrategy(unsigned int connectionIndex, EdgeStrategy strategy)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00181">Layer.cpp:181</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations. </div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
<div class="ttc" id="_graph_utils_8cpp_xhtml_a5f17e02e0054dac0a691685a0464ed36"><div class="ttname"><a href="_graph_utils_8cpp.xhtml#a5f17e02e0054dac0a691685a0464ed36">GetFirstLayerWithName</a></div><div class="ttdeci">armnn::Layer * GetFirstLayerWithName(armnn::Graph &amp;graph, const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="_graph_utils_8cpp_source.xhtml#l00022">GraphUtils.cpp:22</a></div></div>
<div class="ttc" id="_graph_utils_8cpp_xhtml_a21d963c71be62057ed99b5007e7bbbfd"><div class="ttname"><a href="_graph_utils_8cpp.xhtml#a21d963c71be62057ed99b5007e7bbbfd">CheckOrder</a></div><div class="ttdeci">bool CheckOrder(const armnn::Graph &amp;graph, const armnn::Layer *first, const armnn::Layer *second)</div><div class="ttdoc">Checks that first comes before second in the order. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_utils_8cpp_source.xhtml#l00068">GraphUtils.cpp:68</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00152">Tensor.hpp:152</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a7563c5b899e7d0ada08fd0fdb202f205"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a7563c5b899e7d0ada08fd0fdb202f205">armnn::Graph::AddLayer</a></div><div class="ttdeci">LayerT * AddLayer(Args &amp;&amp;... args)</div><div class="ttdoc">Adds a new layer, of type LayerType, to the graph constructed with the arguments passed. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00402">Graph.hpp:402</a></div></div>
<div class="ttc" id="structarmnn_1_1_convolution2d_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_convolution2d_descriptor.xhtml">armnn::Convolution2dDescriptor</a></div><div class="ttdoc">A Convolution2dDescriptor for the Convolution2dLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00408">Descriptors.hpp:408</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_adcfb97035799ea4c043f9ef370714815"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#adcfb97035799ea4c043f9ef370714815">armnn::OutputSlot::Connect</a></div><div class="ttdeci">int Connect(InputSlot &amp;destination)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00083">Layer.cpp:83</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
<div class="ttc" id="_graph_utils_8cpp_xhtml_ac73a43305233b7e5f70debdb2d14a8d3"><div class="ttname"><a href="_graph_utils_8cpp.xhtml#ac73a43305233b7e5f70debdb2d14a8d3">GraphHasNamedLayer</a></div><div class="ttdeci">bool GraphHasNamedLayer(const armnn::Graph &amp;graph, const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="_graph_utils_8cpp_source.xhtml#l00010">GraphUtils.cpp:10</a></div></div>
<div class="ttc" id="classarmnn_1_1_activation_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_activation_layer.xhtml">armnn::ActivationLayer</a></div><div class="ttdoc">This layer represents an activation operation with the specified activation function. </div><div class="ttdef"><b>Definition:</b> <a href="_activation_layer_8hpp_source.xhtml#l00012">ActivationLayer.hpp:12</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2021 ARM Limited and Contributors. </div><div class="ttdef"><b>Definition:</b> <a href="01__00__software__tools_8dox_source.xhtml#l00006">01_00_software_tools.dox:6</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a3f6ad59212fa8a47c9265162fff8a274"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a3f6ad59212fa8a47c9265162fff8a274">armnn::Layer::SetBackendId</a></div><div class="ttdeci">void SetBackendId(const BackendId &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00270">Layer.hpp:270</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_output_slot_xhtml_a9fffb92dc6d2edd5258d574a5862fc83"><div class="ttname"><a href="classarmnn_1_1_i_output_slot.xhtml#a9fffb92dc6d2edd5258d574a5862fc83">armnn::IOutputSlot::GetConnection</a></div><div class="ttdeci">virtual const IInputSlot * GetConnection(unsigned int index) const =0</div></div>
<div class="ttc" id="_numeric_cast_8hpp_xhtml"><div class="ttname"><a href="_numeric_cast_8hpp.xhtml">NumericCast.hpp</a></div></div>
<div class="ttc" id="_polymorphic_downcast_8hpp_xhtml"><div class="ttname"><a href="_polymorphic_downcast_8hpp.xhtml">PolymorphicDowncast.hpp</a></div></div>
<div class="ttc" id="namespacestd_xhtml"><div class="ttname"><a href="namespacestd.xhtml">std</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00147">BackendId.hpp:147</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_acf8b8e23bf647836592982f97088d375"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#acf8b8e23bf647836592982f97088d375">armnn::Layer::GetInputSlot</a></div><div class="ttdeci">const InputSlot &amp; GetInputSlot(unsigned int index) const override</div><div class="ttdoc">Get a const input slot handle by slot index. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00316">Layer.hpp:316</a></div></div>
<div class="ttc" id="_types_utils_8hpp_xhtml"><div class="ttname"><a href="_types_utils_8hpp.xhtml">TypesUtils.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_output_layer.xhtml">armnn::OutputLayer</a></div><div class="ttdoc">A layer user-provided data can be bound to (e.g. inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_output_layer_8hpp_source.xhtml#l00013">OutputLayer.hpp:13</a></div></div>
<div class="ttc" id="include_2armnn_2backends_2_i_backend_internal_8hpp_xhtml"><div class="ttname"><a href="include_2armnn_2backends_2_i_backend_internal_8hpp.xhtml">IBackendInternal.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_output_slot_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_output_slot.xhtml">armnn::IOutputSlot</a></div><div class="ttdoc">An output connection slot for a layer. </div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00038">INetwork.hpp:38</a></div></div>
<div class="ttc" id="_graph_8hpp_xhtml"><div class="ttname"><a href="_graph_8hpp.xhtml">Graph.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_origins_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.xhtml">armnn::OriginsDescriptor</a></div><div class="ttdoc">An OriginsDescriptor for the ConcatLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00163">Descriptors.hpp:163</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a9a97cb6d32661a57fc33bd29b8e41ff4"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a9a97cb6d32661a57fc33bd29b8e41ff4">armnn::Layer::GetNameStr</a></div><div class="ttdeci">const std::string &amp; GetNameStr() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00220">Layer.hpp:220</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
<div class="ttc" id="_graph_utils_8hpp_xhtml"><div class="ttname"><a href="_graph_utils_8hpp.xhtml">GraphUtils.hpp</a></div></div>
<div class="ttc" id="_graph_tests_8cpp_xhtml_ac7e13eea9b644be36895db5414a550f3"><div class="ttname"><a href="_graph_tests_8cpp.xhtml#ac7e13eea9b644be36895db5414a550f3">BOOST_AUTO_TEST_CASE</a></div><div class="ttdeci">BOOST_AUTO_TEST_CASE(ClassGraph)</div><div class="ttdef"><b>Definition:</b> <a href="_graph_tests_8cpp_source.xhtml#l00024">GraphTests.cpp:24</a></div></div>
<div class="ttc" id="structarmnn_1_1_activation_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a></div><div class="ttdoc">An ActivationDescriptor for the ActivationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00025">Descriptors.hpp:25</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_afdb1d37740e7a083b625d669588b6a0e"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#afdb1d37740e7a083b625d669588b6a0e">armnn::Layer::GetBackendId</a></div><div class="ttdeci">const BackendId &amp; GetBackendId() const</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00269">Layer.hpp:269</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml">armnn::Graph</a></div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00029">Graph.hpp:29</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_handle_factory_registry_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">armnn::TensorHandleFactoryRegistry</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_handle_factory_registry_8hpp_source.xhtml#l00020">TensorHandleFactoryRegistry.hpp:20</a></div></div>
<div class="ttc" id="classarmnn_1_1_addition_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_addition_layer.xhtml">armnn::AdditionLayer</a></div><div class="ttdoc">This layer represents an addition operation. </div><div class="ttdef"><b>Definition:</b> <a href="_addition_layer_8hpp_source.xhtml#l00013">AdditionLayer.hpp:13</a></div></div>
<div class="ttc" id="_cpu_tensor_handle_8hpp_xhtml"><div class="ttname"><a href="_cpu_tensor_handle_8hpp.xhtml">CpuTensorHandle.hpp</a></div></div>
<div class="ttc" id="_profiler_tests_8cpp_xhtml_af7f71af5c6c124222dd1c42c5df892f4"><div class="ttname"><a href="_profiler_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END</a></div><div class="ttdeci">BOOST_AUTO_TEST_SUITE_END()</div></div>
<div class="ttc" id="_layer_8hpp_xhtml"><div class="ttname"><a href="_layer_8hpp.xhtml">Layer.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
<div class="ttc" id="_exceptions_8hpp_xhtml"><div class="ttname"><a href="_exceptions_8hpp.xhtml">Exceptions.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_input_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_input_layer.xhtml">armnn::InputLayer</a></div><div class="ttdoc">A layer user-provided data can be bound to (e.g. inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_input_layer_8hpp_source.xhtml#l00013">InputLayer.hpp:13</a></div></div>
<div class="ttc" id="classarmnn_1_1_output_slot_xhtml_a7e5c5771d741dd5473989047a9314728"><div class="ttname"><a href="classarmnn_1_1_output_slot.xhtml#a7e5c5771d741dd5473989047a9314728">armnn::OutputSlot::SetTensorInfo</a></div><div class="ttdeci">void SetTensorInfo(const TensorInfo &amp;tensorInfo) override</div><div class="ttdef"><b>Definition:</b> <a href="_layer_8cpp_source.xhtml#l00058">Layer.cpp:58</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a375ca3cff9f1b005d1412dc5f3cf5b6e"><div class="ttname"><a href="namespacearmnn.xhtml#a375ca3cff9f1b005d1412dc5f3cf5b6e">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00035">NumericCast.hpp:35</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a0e36688a43c35668d8db5257274c68fe"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a0e36688a43c35668d8db5257274c68fe">armnn::Layer::GetOutputSlot</a></div><div class="ttdeci">const OutputSlot &amp; GetOutputSlot(unsigned int index=0) const override</div><div class="ttdoc">Get the const output slot handle by slot index. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00318">Layer.hpp:318</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_output_slot_xhtml_aab97b09d9ee85a105883949abcae52f3"><div class="ttname"><a href="classarmnn_1_1_i_output_slot.xhtml#aab97b09d9ee85a105883949abcae52f3">armnn::IOutputSlot::GetNumConnections</a></div><div class="ttdeci">virtual unsigned int GetNumConnections() const =0</div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml_a7ddf0cf6f620d59c10e63495ace795d0"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml#a7ddf0cf6f620d59c10e63495ace795d0">armnn::Layer::GetName</a></div><div class="ttdeci">const char * GetName() const override</div><div class="ttdoc">Returns the name of the layer. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00311">Layer.hpp:311</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a9a7209345edfdb2b066b0ceb66414d7c"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a9a7209345edfdb2b066b0ceb66414d7c">armnn::Graph::TopologicalSort</a></div><div class="ttdeci">Graph &amp; TopologicalSort()</div><div class="ttdoc">Sorts layers in topological order and return this. </div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00177">Graph.hpp:177</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_a3ff30c6669fdc69de1f5be1f89bacc3f"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#a3ff30c6669fdc69de1f5be1f89bacc3f">armnn::Graph::InsertNewLayer</a></div><div class="ttdeci">LayerT * InsertNewLayer(InputSlot &amp;insertBefore, Args &amp;&amp;... args)</div><div class="ttdoc">Inserts a new layer between the output slot currently connected to insertBefore and insertBefore itse...</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8hpp_source.xhtml#l00416">Graph.hpp:416</a></div></div>
<div class="ttc" id="structarmnn_1_1_softmax_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml">armnn::SoftmaxDescriptor</a></div><div class="ttdoc">A SoftmaxDescriptor for the SoftmaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00139">Descriptors.hpp:139</a></div></div>
<div class="ttc" id="_tensor_handle_factory_registry_8hpp_xhtml"><div class="ttname"><a href="_tensor_handle_factory_registry_8hpp.xhtml">TensorHandleFactoryRegistry.hpp</a></div></div>
<div class="ttc" id="classarmnn_1_1_graph_xhtml_ad1bbee7bf5f93b792675886f57d3ebe0"><div class="ttname"><a href="classarmnn_1_1_graph.xhtml#ad1bbee7bf5f93b792675886f57d3ebe0">armnn::Graph::AddCompatibilityLayers</a></div><div class="ttdeci">void AddCompatibilityLayers(std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt;&gt; &amp;backends, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdoc">Modifies the graph in-place, removing edges connecting layers using different compute devices...</div><div class="ttdef"><b>Definition:</b> <a href="_graph_8cpp_source.xhtml#l00300">Graph.cpp:300</a></div></div>
<div class="ttc" id="classarmnn_1_1_layer_xhtml"><div class="ttname"><a href="classarmnn_1_1_layer.xhtml">armnn::Layer</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_8hpp_source.xhtml#l00210">Layer.hpp:210</a></div></div>
<div class="ttc" id="_graph_tests_8cpp_xhtml_a69272002a351060024897bfd47881ddb"><div class="ttname"><a href="_graph_tests_8cpp.xhtml#a69272002a351060024897bfd47881ddb">BOOST_FIXTURE_TEST_CASE</a></div><div class="ttdeci">BOOST_FIXTURE_TEST_CASE(AddCopyLayers, CopyLayersFixture)</div><div class="ttdef"><b>Definition:</b> <a href="_graph_tests_8cpp_source.xhtml#l00516">GraphTests.cpp:516</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdoc">When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below...</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00419">Types.hpp:419</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_e0a84d05c80a2ef4231141dcbbeac5c8.xhtml">armnn</a></li><li class="navelem"><a class="el" href="dir_9d86fd1fbecbedf5bdb69c7e7235fe5f.xhtml">test</a></li><li class="navelem"><a class="el" href="_graph_tests_8cpp.xhtml">GraphTests.cpp</a></li>
    <li class="footer">Generated on Thu Feb 25 2021 17:27:29 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>