aboutsummaryrefslogtreecommitdiff
path: root/21.02/_concat_test_impl_8cpp_source.xhtml
blob: c42eb0a68fe8497a5befb8c95a4273bee02d800e (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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<!-- 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/backends/backendsCommon/test/layerTests/ConcatTestImpl.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('_concat_test_impl_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">ConcatTestImpl.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_concat_test_impl_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 and Contributors. 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;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_concat_test_impl_8hpp.xhtml">ConcatTestImpl.hpp</a>&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_quantize_helper_8hpp.xhtml">QuantizeHelper.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_resolve_type_8hpp.xhtml">ResolveType.hpp</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_permute_8hpp.xhtml">armnnUtils/Permute.hpp</a>&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_tensor_copy_utils_8hpp.xhtml">backendsCommon/test/TensorCopyUtils.hpp</a>&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_workload_test_utils_8hpp.xhtml">backendsCommon/test/WorkloadTestUtils.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="_tensor_helpers_8hpp.xhtml">test/TensorHelpers.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a>;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacearmnn_utils.xhtml">armnnUtils</a>;</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;<span class="comment">//</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">// Helper functions and templates</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment">//</span></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"><a class="line" href="_concat_test_impl_8cpp.xhtml#a908c80ff86d48fe1bc7cd4d4b1d00147">   26</a></span>&#160;<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a908c80ff86d48fe1bc7cd4d4b1d00147">CreateDescriptorForConcat</a>(</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="keyword">const</span> std::vector&lt;TensorInfo&gt; &amp; inputTensorInfos,</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> concatDim)</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;    std::vector&lt;TensorShape&gt; shapes;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    shapes.reserve(inputTensorInfos.size());</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; it: inputTensorInfos)</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    {</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        shapes.push_back(it.GetShape());</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    }</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;    <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a>(shapes.begin(), shapes.end(), concatDim);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;}</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">// Concat is only supported for N and C dimensions for NCHW and the inner most dimension</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">// In case of &lt;4 dimensions we need to make sure that the concat dimensions are at least</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">// the 3rd slowest iterating one or the inner most dimension.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a905e011ae8536bbd643dd09495524596">   46</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="_concat_test_impl_8cpp.xhtml#a905e011ae8536bbd643dd09495524596">NeedPermuteForConcat</a>(</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    <span class="keyword">const</span> std::vector&lt;TensorInfo&gt; &amp; inputTensorInfos,</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> concatDim)</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="comment">// See note above. Additionally we expect the input shapes to have the</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="comment">// same number of dimensions.</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nDimensions = 0;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="comment">// Determine the number of dimensions as well as sanity check them</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="comment">// agains test implementation issues.</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;&amp; tensorInfo : inputTensorInfos)</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    {</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="keywordflow">if</span> (!nDimensions)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        {</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;            nDimensions = tensorInfo.GetShape().GetNumDimensions();</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        }</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(nDimensions == tensorInfo.GetShape().GetNumDimensions(),</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;                <span class="stringliteral">&quot;Input shapes must have the same number of dimensions&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    }</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="keywordflow">return</span> (nDimensions &lt; 3 || (nDimensions == 3 &amp;&amp; (nDimensions-concatDim) &lt; 3 &amp;&amp; (nDimensions-concatDim) != 1));</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a8fcf10f2804bcbbfef4fd86ef6a5ff2d">   72</a></span>&#160;<a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a8fcf10f2804bcbbfef4fd86ef6a5ff2d">ExpandTensorShapeTo3dForPermute</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp; inputShape)</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">   74</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="keywordflow">if</span> (numDims &gt;= 3)</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    {</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="comment">// Nothing to do if the inputShape has at least 3 dimensions.</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keywordflow">return</span> inputShape;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    }</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;    std::vector&lt;unsigned int&gt; newDims(<span class="keywordtype">size_t</span>(3), 1u);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> expandedBy = 3 - numDims;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;numDims; ++i)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    {</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        newDims[expandedBy+i] = inputShape[i];</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    }</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>(3u, &amp;newDims[0]);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#abd92409a35f1f4c41ee52c7471936fd8">   90</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="_concat_test_impl_8cpp.xhtml#abd92409a35f1f4c41ee52c7471936fd8">Generate3dPermuteVectorForConcat</a>(</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions,</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp; concatDim,</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    std::pair&lt;PermutationVector, PermutationVector&gt; &amp; permutations)</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(numDimensions &lt;= 3,</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;       <span class="stringliteral">&quot;Only dimensions 1,2 and 3 are supported by this helper&quot;</span>);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> expandedBy = 3 - numDimensions;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> expandedConcatAxis = concatDim + expandedBy;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">if</span> (expandedConcatAxis == 2)</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        concatDim = 0;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> forwardPermutation({1, 2, 0});</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> reversePermutation({2, 0, 1});</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        permutations = std::make_pair(forwardPermutation, reversePermutation);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (expandedConcatAxis == 1)</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    {</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        concatDim = 0;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> forwardPermutation({2, 0, 1});</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> reversePermutation({1, 2, 0});</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        permutations = std::make_pair(forwardPermutation, reversePermutation);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    }</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordflow">else</span></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;        <a class="code" href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a>(expandedConcatAxis == 0);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        concatDim = 0;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    }</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;}</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a452d79381b887bbbcc645b44025c03ca">  121</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="_concat_test_impl_8cpp.xhtml#a452d79381b887bbbcc645b44025c03ca">PermuteTensorData</a>(</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a>&amp; mappings,</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp; inputTensorInfo,</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keyword">const</span> T * inputData,</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    std::vector&lt;T&gt;&amp; outputData)</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(inputData != <span class="keyword">nullptr</span>, <span class="stringliteral">&quot;inputData must not be null&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordflow">if</span> (inputData == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    {</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="comment">// Nullptr is an error in the test. By returning without doing the concatenation</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="comment">// I expect the caller to fail the test. It still makes sense to report this as</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="comment">// an assert for Debug builds.</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    }</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo = <a class="code" href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(inputTensorInfo, mappings);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <a class="code" href="structarmnn_1_1_permute_queue_descriptor.xhtml">PermuteQueueDescriptor</a> queueDescriptor;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    queueDescriptor.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a> = <a class="code" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a>{mappings};</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> workloadInfo;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    AddInputToWorkload(queueDescriptor, workloadInfo, inputTensorInfo, inputHandle.get());</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    AddOutputToWorkload(queueDescriptor, workloadInfo, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a2dcee0bc4bbae1f745324aed0f841a0a">CreatePermute</a>(queueDescriptor, workloadInfo);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    inputHandle-&gt;Allocate();</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), inputData);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    workload-&gt;Execute();</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">  160</span>&#160;    outputData.resize(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;outputData[0], outputHandle.get());</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    inputTensorInfo = outputTensorInfo;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;}</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;<span class="comment">//</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="comment">// Permute the input tensors so we can do a supported concatenation.</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="comment">// Also treat lower than 3d tensors as 3d by adding dummy 1 dimensions</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="comment">// at the front. Finally this function tells what the output shape</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="comment">// of the permuted concatenated tensor is going to be.</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a88cd4482bd3e898692dd42f3dcff60c0">  171</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="_concat_test_impl_8cpp.xhtml#a88cd4482bd3e898692dd42f3dcff60c0">PermuteInputsForConcat</a>(</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    std::vector&lt;TensorInfo&gt; &amp; inputTensorInfos,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    std::vector&lt;T *&gt; &amp; inputData,</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    std::vector&lt;std::vector&lt;T&gt;&gt; &amp; inputDataStorage,</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp; permuteVector,</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp; concatDim,</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp; outputTensorInfo)</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;{</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(inputTensorInfos.size() &gt; 1,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <span class="stringliteral">&quot;Expecting more than one tensor to be concatenated here&quot;</span>);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = 0;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nthInput = 0;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> identity({0, 1, 2});</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;    std::pair&lt;PermutationVector, PermutationVector&gt; permutations =</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        std::make_pair(identity, identity);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    inputDataStorage.resize(inputData.size());</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;&amp; tensorInfo : inputTensorInfos)</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    {</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="keywordflow">if</span> (numDims == 0)</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        {</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;            numDims = tensorInfo.GetShape().GetNumDimensions();</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;            <a class="code" href="_concat_test_impl_8cpp.xhtml#abd92409a35f1f4c41ee52c7471936fd8">Generate3dPermuteVectorForConcat</a>(numDims, concatDim, permutations);</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">// Store the reverese permutation.</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;            permuteVector = permutations.second;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(!permuteVector.<a class="code" href="classarmnn_1_1_permutation_vector.xhtml#aae44e4154aa80fba7616747450ff69d5">IsEqual</a>(identity),</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;                <span class="stringliteral">&quot;Test logic error, we don&#39;t need permutation, so we shouldn&#39;t arrive here&quot;</span>);</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;        }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;            <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(numDims == tensorInfo.GetShape().GetNumDimensions(),</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                <span class="stringliteral">&quot;All inputs must have the same number of dimensions&quot;</span>);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        }</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_tensor_info.xhtml">TensorInfo</a> newTensorInfo = tensorInfo;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        newTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#abe8889e8150beef5fd204b2d87b49298">SetShape</a>(<a class="code" href="_concat_test_impl_8cpp.xhtml#a8fcf10f2804bcbbfef4fd86ef6a5ff2d">ExpandTensorShapeTo3dForPermute</a>(tensorInfo.GetShape()));</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        PermuteTensorData&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                             memoryManager,</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                             tensorHandleFactory,</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                             permutations.first,</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                             newTensorInfo,</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                             inputData[nthInput],</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                             inputDataStorage[nthInput]);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        inputData[nthInput] = inputDataStorage[nthInput].data();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        inputTensorInfos[nthInput] = newTensorInfo;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        ++nthInput;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#abe8889e8150beef5fd204b2d87b49298">SetShape</a>(</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        <a class="code" href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;            <a class="code" href="_concat_test_impl_8cpp.xhtml#a8fcf10f2804bcbbfef4fd86ef6a5ff2d">ExpandTensorShapeTo3dForPermute</a>(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()),</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;            permutations.first));</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;}</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;<span class="comment">//</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="comment">// This is the pair of PermuteInputsForConcat(...) which permutes back</span></div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="comment">// the output of the concatenation so we can check it against an expected</span></div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="comment">// output.</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#af61d63d5fc13eca28851f3fa65289c47">  241</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="_concat_test_impl_8cpp.xhtml#af61d63d5fc13eca28851f3fa65289c47">PermuteOutputForConcat</a>(</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp; tensorInfo,</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp; permuteVector,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; &amp;&amp; inputDataHandle,</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    T * data)</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;{</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(data != <span class="keyword">nullptr</span>, <span class="stringliteral">&quot;data must not be null&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    <span class="keywordflow">if</span> (data == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    {</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        <span class="comment">// Nullptr is an error in the test. By returning without doing the permutation</span></div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="comment">// I expect the caller to fail the test. It still makes sense to report this as</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        <span class="comment">// an assert for Debug builds.</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> resultTensorInfo = tensorInfo;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    std::vector&lt;T&gt; inputData(tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    std::vector&lt;T&gt; outputData;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;inputData[0], inputDataHandle.get());</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;    PermuteTensorData&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                         memoryManager,</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                         tensorHandleFactory,</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                         permuteVector,</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                         resultTensorInfo,</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                         &amp;inputData[0],</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                         outputData);</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;    ::memcpy(data, &amp;outputData[0], <span class="keyword">sizeof</span>(T)*outputData.size());</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;}</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"><a class="line" href="_concat_test_impl_8cpp.xhtml#a1035b2d9f77d4a2200919945e1502de2">  276</a></span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">void</span> <a class="code" href="namespacearmnn.xhtml#a1deafe1b2777bcaadefe2371b3ebbb27">Concatenate</a>(</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    std::initializer_list&lt;const TensorInfo&gt; inputTensorInfosOrig,</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    std::initializer_list&lt;T *&gt; inputsOrig,</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfoOrig,</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    T * output,</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> concatDim,</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</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;    <a class="code" href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a>(output != <span class="keyword">nullptr</span>, <span class="stringliteral">&quot;output must not be null&quot;</span>);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    <span class="keywordflow">if</span> (output == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    {</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="comment">// Nullptr is an error in the test. By returning without doing the permutation</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        <span class="comment">// I expect the caller to fail the test. It still makes sense to report this as</span></div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="comment">// an assert for Debug builds.</span></div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    }</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    <span class="comment">// Saves a copy of the parameters which we might need to change.</span></div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    std::vector&lt;TensorInfo&gt; inputTensorInfos(inputTensorInfosOrig.begin(), inputTensorInfosOrig.end());</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    std::vector&lt;T *&gt; inputs            = inputsOrig;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo = outputTensorInfoOrig;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> permuteVector{0, 1, 2};</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="comment">// Holds and automatically releases memory for the reshaped input data.</span></div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    std::vector&lt;std::vector&lt;T&gt;&gt; tmpInputDataStorage;</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="keyword">const</span> <span class="keywordtype">size_t</span> inputCount = inputTensorInfos.size();</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="keywordtype">bool</span> needPermuteForConcat = <a class="code" href="_concat_test_impl_8cpp.xhtml#a905e011ae8536bbd643dd09495524596">NeedPermuteForConcat</a>(inputTensorInfos, concatDim);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keywordflow">if</span> (needPermuteForConcat)</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="comment">//</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="comment">// We need to permute the inputs, because concatenation along</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        <span class="comment">// the requested axis is not supported.</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="comment">//</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        PermuteInputsForConcat&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                                  memoryManager,</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                                  tensorHandleFactory,</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                                  inputTensorInfos,</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                                  inputs,</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                                  tmpInputDataStorage,</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;                                  permuteVector,</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                                  concatDim,</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                                  outputTensorInfo);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    }</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> workloadInfo;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    std::vector&lt;std::unique_ptr&lt;ITensorHandle&gt;&gt; inputHandles;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    inputHandles.reserve(inputCount);</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;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> queueDescriptor;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> viewsDescriptor = <a class="code" href="_concat_test_impl_8cpp.xhtml#a908c80ff86d48fe1bc7cd4d4b1d00147">CreateDescriptorForConcat</a>(inputTensorInfos, concatDim);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    queueDescriptor.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a> = viewsDescriptor;</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="keywordflow">if</span> (useSubtensor)</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    {</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        queueDescriptor.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.reserve(viewsDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml#a35546e7b56e6e972a495b48748478ede">GetNumViews</a>());</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; viewsDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml#a35546e7b56e6e972a495b48748478ede">GetNumViews</a>(); ++i)</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        {</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;            queueDescriptor.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.emplace_back(std::vector&lt;unsigned int&gt;(viewsDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml#ab78e6fe963508c1ac5c00d04bb3361a3">GetViewOrigin</a>(i),</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                viewsDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml#ab78e6fe963508c1ac5c00d04bb3361a3">GetViewOrigin</a>(i) + viewsDescriptor.<a class="code" href="structarmnn_1_1_origins_descriptor.xhtml#a78e8266be865fdd92cadd04d6e25ae1f">GetNumDimensions</a>()));</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        }</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">bool</span> subTensorsSupported = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputCount; ++i)</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        {</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;            <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; inputTensorInfo = inputTensorInfos[i];</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;            std::unique_ptr&lt;ITensorHandle&gt; inputHandle =</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                subTensorsSupported ?</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                    tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle,</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                                                          inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>(),</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                                                          queueDescriptor.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>[i].m_Origin.data()) :</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                                                          tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;            inputHandles.emplace_back(std::move(inputHandle));</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;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</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;    <span class="keywordflow">else</span></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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputCount; ++i)</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        {</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;            std::unique_ptr&lt;ITensorHandle&gt; inputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfos[i]);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;            inputHandles.emplace_back(std::move(inputHandle));</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;    }</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;    <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputCount; ++i)</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;        AddInputToWorkload(queueDescriptor, workloadInfo, inputTensorInfos[i], inputHandles[i].<span class="keyword">get</span>());</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;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    AddOutputToWorkload(queueDescriptor, workloadInfo, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(queueDescriptor, workloadInfo);</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;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inputHandle : inputHandles)</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    {</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        inputHandle-&gt;Allocate();</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;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    outputHandle-&gt;Allocate();</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> nextInputId = 0;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; inputHandle : inputHandles)</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    {</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle.get(), inputs[nextInputId]);</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        ++nextInputId;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    }</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;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    <span class="keywordflow">if</span> (needPermuteForConcat)</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        PermuteOutputForConcat&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                                  memoryManager,</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                                  tensorHandleFactory,</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                                  outputTensorInfo,</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                  permuteVector,</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                                  std::move(outputHandle),</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                                  output);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    }</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keywordflow">else</span></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;        <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(output, outputHandle.get());</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="comment">//</span></div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="comment">// Implementation templates</span></div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="comment">//</span></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="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a6f4024f1c2bb14620c566ede118e0c4b">  422</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 1&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a6f4024f1c2bb14620c566ede118e0c4b">Concat1dTestImpl</a>(</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    int32_t qOffset)</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;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo({ 3 }, ArmnnType, qScale, qOffset);</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;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 1&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;({ 1.0f, 2.0f, 3.0f }, qScale, qOffset));</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 1&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;({ 4.0f, 5.0f, 6.0f }, qScale, qOffset));</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 1&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;({ 7.0f, 8.0f, 9.0f }, qScale, qOffset));</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;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 9 }, ArmnnType, qScale, qOffset);</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;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 1&gt;</a> result(outputTensorInfo);</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;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                   { inputTensorInfo, inputTensorInfo, inputTensorInfo },</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                   output.data(),</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                   0,</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                   <span class="keyword">true</span>);</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;    result.output         = MakeTensor&lt;T, 1&gt;(outputTensorInfo, output);</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;    result.outputExpected = MakeTensor&lt;T, 1&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        {</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;            1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        },</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a11311cacab78cfb69270c6fba87702e7">  460</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a11311cacab78cfb69270c6fba87702e7">Concat2dTestImpl</a>(</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfo,</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension,</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keyword">const</span> int32_t qOffset)</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo({ 2, 3 }, ArmnnType, qScale, qOffset);</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;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 2&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</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;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;            10.0f, 11.0f, 12.0f,</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;        qScale, qOffset));</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 2&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;         {</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;            13.0f, 14.0f, 15.0f,</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        },</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 2&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        {</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;            7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        },</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    output.resize(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;                   { inputTensorInfo, inputTensorInfo, inputTensorInfo },</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;                   output.data(),</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                   dimension,</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a> = MakeTensor&lt;T, 2&gt;(outputTensorInfo, output);</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    <span class="keywordflow">return</span> result;</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">  516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a01c3919ddf83b3f3c527cc8433bbddff">  518</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a01c3919ddf83b3f3c527cc8433bbddff">Concat2dDim0TestImpl</a>(</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    int32_t qOffset)</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">  525</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 6, 3 }, ArmnnType, qScale, qOffset);</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;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> result = Concat2dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 0, qScale, qOffset);</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;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 2&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        {</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;            10.0f, 11.0f, 12.0f,</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;            <span class="comment">// Batch 2</span></div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;            <span class="comment">// Batch 3</span></div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;            13.0f, 14.0f, 15.0f,</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;            <span class="comment">// Batch 4</span></div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;            7.0f, 8.0f, 9.0f,</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;            <span class="comment">// Batch 5</span></div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        },</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#ae36ae7043e1761dcfcac538fa29c47d6">  556</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ae36ae7043e1761dcfcac538fa29c47d6">Concat2dDim1TestImpl</a>(</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;{</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 9 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> result = Concat2dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 1, qScale, qOffset);</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 2&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        {</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;            1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;            10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f</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">  576</span>&#160;        qScale, qOffset));</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;    <span class="keywordflow">return</span> result;</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;</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#aa298272bc356453c2814543fd0e2cb5f">  582</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa298272bc356453c2814543fd0e2cb5f">Concat2dDim0DiffInputDimsTestImpl</a>(</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;{</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input0TensorInfo({ 2, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 2&gt;(input0TensorInfo, QuantizedVector&lt;T&gt;(</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;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;            10.0f, 11.0f, 12.0f,</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        },</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input1TensorInfo({ 3, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 2&gt;(input1TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;        {</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;            13.0f, 14.0f, 15.0f,</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;            7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        },</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input2TensorInfo({ 1, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 2&gt;(input2TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;        {</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;        },</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 6, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                   { input0TensorInfo, input1TensorInfo, input2TensorInfo },</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                   output.data(),</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;                   0,</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;    result.output = MakeTensor&lt;T, 2&gt;(outputTensorInfo, output);</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    result.outputExpected = MakeTensor&lt;T, 2&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        {</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;            10.0f, 11.0f, 12.0f,</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;            <span class="comment">// Batch 2</span></div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;            <span class="comment">// Batch 3</span></div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;            13.0f, 14.0f, 15.0f,</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;            <span class="comment">// Batch 4</span></div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;            7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;            <span class="comment">// Batch 5</span></div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;        },</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;}</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#af1042834da8c73c7d8f46160b0b73b45">  662</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#af1042834da8c73c7d8f46160b0b73b45">Concat2dDim1DiffInputDimsTestImpl</a>(</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;{</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input0TensorInfo({ 2, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 2&gt;(input0TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;        {</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;            10.0f, 11.0f, 12.0f,</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;        },</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input1TensorInfo({ 2, 5 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 2&gt;(input1TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;        {</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;            4.0f, 5.0f, 6.0f, 7.0f, 8.0f,</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;            13.0f, 14.0f, 15.0f, 16.0f, 17.0f,</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;        },</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input2TensorInfo({ 2, 1 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 2&gt;(input2TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        {</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;            9.0f,</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;            18.0f</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        },</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 9 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 2&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                   { input0TensorInfo, input1TensorInfo, input2TensorInfo },</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                   output.data(),</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                   1,</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    result.output = MakeTensor&lt;T, 2&gt;(outputTensorInfo, output);</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;    result.outputExpected = MakeTensor&lt;T, 2&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;        {</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;            <span class="comment">// Batch 0</span></div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;            1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;            <span class="comment">// Batch 1</span></div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;            10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        },</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;}</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#ac8fc5aa4f5e286f98708650f6a8682a6">  730</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ac8fc5aa4f5e286f98708650f6a8682a6">Concat3dTestImpl</a>(</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfo,</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension,</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    <span class="keywordtype">bool</span> useSubtensor,</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;{</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo({ 2, 3, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 3&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;        {</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;            23.0f, 24.0f</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;        },</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 3&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;        {</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;            29.0f, 30.0f</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;        },</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 3&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;        {</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;            33.0f, 34.0f,</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;            35.0f, 36.0f</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;        },</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    output.resize(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;                   { inputTensorInfo, inputTensorInfo, inputTensorInfo },</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;                   output.data(),</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;                   dimension,</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;                   useSubtensor);</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a> = MakeTensor&lt;T, 3&gt;(outputTensorInfo, output);</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;}</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a6552cacc8f771f0e210949d56193c8d7">  825</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a6552cacc8f771f0e210949d56193c8d7">Concat3dDim0TestImpl</a>(</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;{</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 6, 3, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result = Concat3dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 0, <span class="keyword">true</span>, qScale, qOffset);</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;        {</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;            <span class="comment">// Batch 2, Channel 0</span></div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;            <span class="comment">// Batch 2, Channel 1</span></div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;            <span class="comment">// Batch 2, Channel 2</span></div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;            <span class="comment">// Batch 3, Channel 0</span></div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;            <span class="comment">// Batch 3, Channel 1</span></div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;            <span class="comment">// Batch 3, Channel 2</span></div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;            <span class="comment">// Batch 4, Channel 0</span></div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;            <span class="comment">// Batch 4, Channel 1</span></div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;            <span class="comment">// Batch 4, Channel 2</span></div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;            <span class="comment">// Batch 5, Channel 0</span></div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;            <span class="comment">// Batch 5, Channel 1</span></div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;            33.0f, 34.0f,</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;            <span class="comment">// Batch 5, Channel 2</span></div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;            35.0f, 36.0f</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        },</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;}</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a4e2a03f3c7e369896b804e963cfca10c">  899</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a4e2a03f3c7e369896b804e963cfca10c">Concat3dDim1TestImpl</a>(</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;{</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 9, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result = Concat3dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 1, <span class="keyword">true</span>, qScale, qOffset);</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;        {</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;            <span class="comment">// Batch 0, Channel 3</span></div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;            <span class="comment">// Batch 0, Channel 4</span></div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;            <span class="comment">// Batch 0, Channel 5</span></div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;            <span class="comment">// Batch 0, Channel 6</span></div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;            <span class="comment">// Batch 0, Channel 7</span></div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;            <span class="comment">// Batch 0, Channel 8</span></div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;            <span class="comment">// Batch 1, Channel 3</span></div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;            <span class="comment">// Batch 1, Channel 4</span></div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;            <span class="comment">// Batch 1, Channel 5</span></div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;            <span class="comment">// Batch 1, Channel 6</span></div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;            <span class="comment">// Batch 1, Channel 7</span></div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;            33.0f, 34.0f,</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;            <span class="comment">// Batch 1, Channel 8</span></div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;            35.0f, 36.0f</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;        },</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;}</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#af7bc28cdb723e0cea4c0b860f40fa47e">  973</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#af7bc28cdb723e0cea4c0b860f40fa47e">Concat3dDim2TestImpl</a>(</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;    <span class="keywordtype">bool</span> useSubtensor,</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;{</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 3, 6 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result = Concat3dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 2, useSubtensor, qScale, qOffset);</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;        {</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;            1.0f, 2.0f, 7.0f, 8.0f, 13.0f, 14.0f,</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;            3.0f, 4.0f, 9.0f, 10.0f, 15.0f, 16.0f,</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;            5.0f, 6.0f, 11.0f, 12.0f, 17.0f, 18.0f,</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;            19.0f, 20.0f, 25.0f, 26.0f, 31.0f, 32.0f,</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;            21.0f, 22.0f, 27.0f, 28.0f, 33.0f, 34.0f,</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;            23.0f, 24.0f, 29.0f, 30.0f, 35.0f, 36.0f,</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;        },</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;}</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#aa97b8ca791f9380d2b678ff2ec923985"> 1012</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa97b8ca791f9380d2b678ff2ec923985">Concat3dDim0DiffInputDimsTestImpl</a>(</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;{</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input0TensorInfo({ 2, 3, 2 }, ArmnnType);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 3&gt;(input0TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;        {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;            23.0f, 24.0f</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;        },</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input1TensorInfo({ 1, 3, 2 }, ArmnnType);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 3&gt;(input1TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;        {</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;        },</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input2TensorInfo({ 3, 3, 2 }, ArmnnType);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 3&gt;(input2TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;        {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;            <span class="comment">// Batch 2, Channel 0</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;            <span class="comment">// Batch 2, Channel 1</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;            33.0f, 34.0f,</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;            <span class="comment">// Batch 2, Channel 2</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;            35.0f, 36.0f</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;        },</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 6, 3, 2 }, ArmnnType);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;                   { input0TensorInfo, input1TensorInfo, input2TensorInfo },</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;                   output.data(),</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;                   0,</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;    result.output = MakeTensor&lt;T, 3&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    result.outputExpected = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;        {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;            <span class="comment">// Batch 2, Channel 0</span></div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;            <span class="comment">// Batch 2, Channel 1</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;            <span class="comment">// Batch 2, Channel 2</span></div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;            <span class="comment">// Batch 3, Channel 0</span></div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;            <span class="comment">// Batch 3, Channel 1</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;            <span class="comment">// Batch 3, Channel 2</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;            <span class="comment">// Batch 4, Channel 0</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;            <span class="comment">// Batch 4, Channel 1</span></div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;            <span class="comment">// Batch 4, Channel 2</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;            <span class="comment">// Batch 5, Channel 0</span></div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;            <span class="comment">// Batch 5, Channel 1</span></div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;            33.0f, 34.0f,</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;            <span class="comment">// Batch 5, Channel 2</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;            35.0f, 36.0f</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;        },</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;}</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01164"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a8ce943ec73def7b13345b918d787d7ca"> 1164</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a8ce943ec73def7b13345b918d787d7ca">Concat3dDim1DiffInputDimsTestImpl</a>(</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;{</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input0TensorInfo({ 2, 3, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 3&gt;(input0TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;        {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;            23.0f, 24.0f</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;        },</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input1TensorInfo({ 2, 4, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 3&gt;(input1TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        {</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;            <span class="comment">// Batch 0, Channel 3</span></div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;            <span class="comment">// Batch 1, Channel 3</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;        },</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input2TensorInfo({ 2, 1, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 3&gt;(input2TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;        {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;        },</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 8, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;                   { input0TensorInfo, input1TensorInfo, input2TensorInfo },</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;                   output.data(),</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;                   1,</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;    result.output = MakeTensor&lt;T, 3&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;    result.outputExpected = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;        {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;            <span class="comment">// Batch 0, Channel 3</span></div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;            7.0f, 8.0f,</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;            <span class="comment">// Batch 0, Channel 4</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;            <span class="comment">// Batch 0, Channel 5</span></div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;            <span class="comment">// Batch 0, Channel 6</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;            <span class="comment">// Batch 0, Channel 7</span></div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;            <span class="comment">// Batch 1, Channel 3</span></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;            <span class="comment">// Batch 1, Channel 4</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;            <span class="comment">// Batch 1, Channel 5</span></div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;            <span class="comment">// Batch 1, Channel 6</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;            <span class="comment">// Batch 1, Channel 7</span></div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;            31.0f, 32.0f,</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;        },</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;}</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01304"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a08b924fe6933a0c221cc0194dffb2b7d"> 1304</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a08b924fe6933a0c221cc0194dffb2b7d">Concat3dDim2DiffInputDimsTestImpl</a>(</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;    <span class="keywordtype">bool</span> useSubtensor,</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;{</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input0TensorInfo({ 2, 3, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 3&gt;(input0TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;        {</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;            1.0f, 2.0f,</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;            3.0f, 4.0f,</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;            5.0f, 6.0f,</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;            23.0f, 24.0f</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;        },</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input1TensorInfo({ 2, 3, 1 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 3&gt;(input1TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;        {</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;            7.0f,</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;            9.0f,</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;            11.0f,</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;            25.0f,</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;            27.0f,</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;            29.0f</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;        },</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> input2TensorInfo({ 2, 3, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 3&gt;(input2TensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;        {</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;            13.0f, 14.0f, 50.0f,</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;            15.0f, 16.0f, 51.0f,</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;            17.0f, 18.0f, 52.0f,</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;            31.0f, 32.0f, 53.0f,</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;            33.0f, 34.0f, 54.0f,</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;            35.0f, 36.0f, 55.0f,</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;        },</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 2, 3, 6 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;    Concatenate&lt;T&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;                   { input0TensorInfo, input1TensorInfo, input2TensorInfo },</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;                   { input0.data(), input1.data(), input2.data() },</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;                   output.data(),</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;                   2,</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;                   useSubtensor);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;    result.output = MakeTensor&lt;T, 3&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;    result.outputExpected = MakeTensor&lt;T, 3&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;        {</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;            <span class="comment">// Batch 0, Channel 0</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;            1.0f, 2.0f, 7.0f, 13.0f, 14.0f, 50.0f,</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;            <span class="comment">// Batch 0, Channel 1</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;            3.0f, 4.0f, 9.0f, 15.0f, 16.0f, 51.0f,</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;            <span class="comment">// Batch 0, Channel 2</span></div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;            5.0f, 6.0f, 11.0f, 17.0f, 18.0f, 52.0f,</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;            <span class="comment">// Batch 1, Channel 0</span></div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;            19.0f, 20.0f, 25.0f, 31.0f, 32.0f, 53.0f,</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;            <span class="comment">// Batch 1, Channel 1</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;            21.0f, 22.0f, 27.0f, 33.0f, 34.0f, 54.0f,</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;            <span class="comment">// Batch 1, Channel 2</span></div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;            23.0f, 24.0f, 29.0f, 35.0f, 36.0f, 55.0f,</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;        },</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;}</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01421"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a597f0b89f3fb6389802de4a51c979b17"> 1421</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a597f0b89f3fb6389802de4a51c979b17">Concat4dTestImpl</a>(</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&amp; outputTensorInfo,</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension,</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;    <span class="keywordtype">bool</span> useSubtensor,</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;{</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo({ 1, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 4&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;        {</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;            11.0f, 12.0f</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;        },</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 4&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;        {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;            21.0f, 22.0f</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;        },</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 4&gt;(inputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;        {</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;        },</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;    output.resize(outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>());</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    Concatenate&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;                   memoryManager,</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;                   tensorHandleFactory,</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;                   {inputTensorInfo, inputTensorInfo, inputTensorInfo},</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;                   {input0.data(), input1.data(), input2.data()},</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;                   output.data(),</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;                   dimension,</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;                   useSubtensor);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a> = MakeTensor&lt;T, 4&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;}</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a198a5812a5bf73d54928ec978f8cf7af"> 1486</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a198a5812a5bf73d54928ec978f8cf7af">Concat4dDim0TestImpl</a>(</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;{</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 3, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result = Concat4dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 0, <span class="keyword">true</span>, qScale, qOffset);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;        {</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;        },</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;}</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01527"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a65992de6287260bcb4be7a4852a22c9c"> 1527</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a65992de6287260bcb4be7a4852a22c9c">Concat4dDim1TestImpl</a>(</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;{</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 9, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result = Concat4dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 1, <span class="keyword">true</span>, qScale, qOffset);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;        {</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;        },</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;}</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01568"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a0047c671718849c74d3bdbd38385f807"> 1568</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a0047c671718849c74d3bdbd38385f807">Concat4dDim2TestImpl</a>(</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;{</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 3, 6, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result = Concat4dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 2, <span class="keyword">true</span>, qScale, qOffset);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;        {</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;        },</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;}</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01609"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a9b4987fbd28822cfde9a5fcbf50793a5"> 1609</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a9b4987fbd28822cfde9a5fcbf50793a5">Concat4dDim3TestImpl</a>(</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;    int32_t qOffset,</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;{</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 3, 2, 6 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result = Concat4dTestImpl&lt;ArmnnType&gt;(</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, outputTensorInfo, 3, useSubtensor, qScale, qOffset);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;    result.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;        {</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;        },</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;}</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01651"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a4b3d058400cdae1f9f42bca0bd4cdd78"> 1651</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a4b3d058400cdae1f9f42bca0bd4cdd78">Concat4dDiffShapeDim0TestImpl</a>(</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;{</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;    constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension = 0u;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo0({ 1, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 4&gt;(inputTensorInfo0, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;        {</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;            11.0f, 12.0f</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;        },</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ 2, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 4&gt;(inputTensorInfo1, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;        {</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;        },</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 3, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;    Concatenate&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;                   memoryManager,</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;                   tensorHandleFactory,</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;                   {inputTensorInfo0, inputTensorInfo1},</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;                   {input0.data(), input1.data()},</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;                   output.data(),</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;                   dimension,</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;    result.output = MakeTensor&lt;T, 4&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;    result.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;        {</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;             1.0f, 2.0f,</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;             3.0f, 4.0f,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;             5.0f, 6.0f,</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;             7.0f, 8.0f,</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;            27.0f, 28.0f,</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;            29.0f, 30.0f,</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;            31.0f, 32.0f</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;        },</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;}</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01738"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a8f747abd7bf17b57c3178c077a8e1949"> 1738</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a8f747abd7bf17b57c3178c077a8e1949">Concat4dDiffShapeDim1TestImpl</a>(</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;{</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;    constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension = 1u;</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo0({ 1, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 4&gt;(inputTensorInfo0, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;        {</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;            11.0f, 12.0f</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;        },</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ 1, 2, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 4&gt;(inputTensorInfo1, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;        {</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;        },</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 5, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;    Concatenate&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;                   memoryManager,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;                   tensorHandleFactory,</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;                   {inputTensorInfo0, inputTensorInfo1},</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;                   {input0.data(), input1.data()},</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;                   output.data(),</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;                   dimension,</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;    result.output = MakeTensor&lt;T, 4&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;    result.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;        {</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;            17.0f, 18.0f</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;        },</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;}</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01806"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a05eed8a9797d93f01639ca03025058f0"> 1806</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a05eed8a9797d93f01639ca03025058f0">Concat4dDiffShapeDim2TestImpl</a>(</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;    int32_t qOffset)</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;{</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension = 2u;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo0({ 1, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 4&gt;(inputTensorInfo0, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;        {</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;             1.0f, 2.0f,</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;             3.0f, 4.0f,</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;             5.0f, 6.0f,</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;             7.0f, 8.0f,</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;            9.0f, 10.0f,</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;            11.0f, 12.0f</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;        },</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ 1, 3, 3, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 4&gt;(inputTensorInfo1, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;        {</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;            27.0f, 28.0f</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;        },</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 3, 5, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;    Concatenate&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;                   memoryManager,</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;                   tensorHandleFactory,</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;                   {inputTensorInfo0, inputTensorInfo1},</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;                   {input0.data(), input1.data()},</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;                   output.data(),</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;                   dimension,</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;                   <span class="keyword">true</span>);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;    result.output         = MakeTensor&lt;T, 4&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;    result.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;        {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;            13.0f, 14.0f,</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;            15.0f, 16.0f,</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;            17.0f, 18.0f,</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;            19.0f, 20.0f,</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;            21.0f, 22.0f,</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;            11.0f, 12.0f,</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;            23.0f, 24.0f,</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;            25.0f, 26.0f,</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;            27.0f, 28.0f</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;        },</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;}</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T = ResolveType&lt;ArmnnType&gt;&gt;</div><div class="line"><a name="l01884"></a><span class="lineno"><a class="line" href="_concat_test_impl_8cpp.xhtml#a4a9959df06e443a3e38d234564ad7736"> 1884</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a4a9959df06e443a3e38d234564ad7736">Concat4dDiffShapeDim3TestImpl</a>(</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;    <span class="keywordtype">float</span> qScale,</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;    int32_t qOffset,</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;{</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;    constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimension = 3u;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo0({ 1, 3, 2, 2 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;    <span class="keyword">auto</span> input0 = MakeTensor&lt;T, 4&gt;(inputTensorInfo0, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;        {</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;             1.0f,  2.0f,</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;             3.0f,  4.0f,</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;             5.0f,  6.0f,</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;             7.0f,  8.0f,</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;             9.0f, 10.0f,</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;            11.0f, 12.0f</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;        },</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ 1, 3, 2, 3 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 4&gt;(inputTensorInfo1, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;        {</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160;            11.0f, 12.0f, 13.0f,</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;            14.0f, 15.0f, 16.0f,</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;            17.0f, 18.0f, 19.0f,</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;            20.0f, 21.0f, 22.0f,</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;            23.0f, 24.0f, 25.0f,</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;            26.0f, 27.0f, 28.0f</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;        },</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 1, 3, 2, 5 }, ArmnnType, qScale, qOffset);</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 4&gt;</a> result(outputTensorInfo);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;    std::vector&lt;T&gt; output;</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;    output.resize(outputTensorInfo.GetNumElements());</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;    Concatenate&lt;T&gt;(workloadFactory,</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;                   memoryManager,</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;                   tensorHandleFactory,</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;                   {inputTensorInfo0, inputTensorInfo1},</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;                   {input0.data(), input1.data()},</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;                   outputTensorInfo,</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;                   output.data(),</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160;                   dimension,</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160;                   useSubtensor);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;    result.output = MakeTensor&lt;T, 4&gt;(outputTensorInfo, output);</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;    result.outputExpected = MakeTensor&lt;T, 4&gt;(outputTensorInfo, QuantizedVector&lt;T&gt;(</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;        {</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;            1.0f, 2.0f, 11.0f, 12.0f, 13.0f,</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;            3.0f, 4.0f, 14.0f, 15.0f, 16.0f,</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;            5.0f, 6.0f, 17.0f, 18.0f, 19.0f,</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;            7.0f, 8.0f, 20.0f, 21.0f, 22.0f,</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;            9.0f, 10.0f, 23.0f, 24.0f, 25.0f,</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;            11.0f, 12.0f, 26.0f, 27.0f, 28.0f</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;        },</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;        qScale, qOffset));</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;    <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;}</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;<span class="keyword">template</span>&lt;DataType ArmnnType, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01952"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a9c875c9398293adbbab5ba306375958f"> 1952</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a460c8d79a829f1ed16f088c12acf41f3">ConcatDifferentInputOutputQParamTest</a>(</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;{</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;    <span class="comment">// Defines the tensor descriptors.</span></div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ 3, 6, 3 }, ArmnnType);</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ 3, 6, 2 }, ArmnnType);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo2({ 3, 6, 1 }, ArmnnType);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;    std::vector&lt;TensorShape&gt; inputTensorShapes({inputTensorInfo1.GetShape(), inputTensorInfo2.GetShape()});</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;    <span class="comment">// Quantized input1 tensor.</span></div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> inputScale1 = 0.5f;</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;    <span class="keyword">const</span> int32_t inputOffset1 = 5;</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;T, 3&gt;(inputTensorInfo1, std::vector&lt;T&gt;(</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;    {</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;        1, 2, 3,</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;        4, 5, 6,</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;        7, 8, 9,</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;        10, 11, 12,</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;        13, 14, 15,</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;        16, 17, 18,</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;        19, 20, 21,</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;        22, 23, 24,</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;        25, 26, 27,</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;        28, 29, 30,</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;        31, 32, 33,</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;        34, 35, 36</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;    }));</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;    <span class="comment">// Quatized input2 tensor.</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> inputScale2 = 0.2f;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;    <span class="keyword">const</span> int32_t inputOffset2 = 10;</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;T, 3&gt;(inputTensorInfo2, std::vector&lt;T&gt;(</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;    {</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;        37, 38, 39,</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;        40, 41, 42,</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;        43, 44, 45,</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;        46, 47, 48,</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;        49, 50, 51,</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;        52, 53, 54</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;    }));</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160;</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;    <span class="comment">// Quantized output tensor.</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> outputScale = 0.1f;</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;    <span class="keyword">const</span> int32_t outputOffset = 20;</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;T, 3&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;    ret.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;T, 3&gt;(outputTensorInfo, std::vector&lt;T&gt;(</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;    {</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;        0,   5,  74,</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;        10,  15,  76,</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;        20,  25,  78,</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;        30,  35,  80,</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;        40,  45,  82,</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;        50,  55,  84,</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;        60,  65,  86,</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;        70,  75,  88,</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;        80,  85,  90,</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;        90,  95,  92,</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;        100, 105,  94,</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;        110, 115,  96,</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;        120, 125,  98,</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;        130, 135, 100,</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;        140, 145, 102,</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;        150, 155, 104,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;        160, 165, 106,</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;        170, 175, 108</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;    }));</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;    outputTensorInfo.SetQuantizationScale(outputScale);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;    outputTensorInfo.SetQuantizationOffset(outputOffset);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;    inputTensorInfo1.SetQuantizationScale(inputScale1);</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;    inputTensorInfo1.SetQuantizationOffset(inputOffset1);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160;    inputTensorInfo2.SetQuantizationScale(inputScale2);</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;    inputTensorInfo2.SetQuantizationOffset(inputOffset2);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin1 = { 0, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[0].</span></div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window1(wOrigin1);</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin2 = { 0, 0, 2 }; <span class="comment">//Extent of the window is defined by size of input[1].</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window2(wOrigin2);</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160;    <span class="keywordtype">bool</span> subTensorsSupported = useSubtensor &amp;&amp; workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle1 =</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo1.GetShape(), wOrigin1.data()) :</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo1);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle2 =</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo2.GetShape(), wOrigin2.data()) :</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo2);</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> data;</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;    <a class="code" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> desc = <a class="code" href="namespacearmnn.xhtml#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a>(</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;            inputTensorShapes.begin(),inputTensorShapes.end(), 2);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;    data.<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a> = desc;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo2, inputHandle2.get());</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;    AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window1);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window2);</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(data, info);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;    inputHandle1-&gt;Allocate();</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;    inputHandle2-&gt;Allocate();</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle1.get(), &amp;input1[0][0][0]);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle2.get(), &amp;input2[0][0][0]);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a>[0][0][0], outputHandle.get());</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;}</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;<span class="comment">// Explicit template specializations</span></div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;<span class="keyword">template</span> <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;ResolveType&lt;DataType::QAsymmU8&gt;</a>, 3&gt;</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;ConcatDifferentInputOutputQParamTest&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;    <span class="keywordtype">bool</span> useSubtensor);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="keyword">template</span> <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;ResolveType&lt;DataType::QSymmS16&gt;</a>, 3&gt;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;ConcatDifferentInputOutputQParamTest&lt;DataType::QSymmS16&gt;(</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;    <span class="keywordtype">bool</span> useSubtensor);</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160;<span class="comment">// Implementation functions</span></div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;</div><div class="line"><a name="l02111"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aa522d5b67ae3d8dbb1e51ad245578926"> 2111</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float,3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a2e952c053f3d7a035671a994352e2bc9">ConcatTest</a>(</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;{</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 3;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 6;</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 3;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth1 = 3;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight1 = 6;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels1 = 2;</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth2 = 3;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight2 = 6;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels2 = 1;</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;    <span class="comment">// Define the tensor descriptors.</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ outputChannels, outputHeight, outputWidth }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ inputChannels1, inputHeight1, inputWidth1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>);</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo2({ inputChannels2, inputHeight2, inputWidth2 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float,3&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;    ret.outputExpected = MakeTensor&lt;float, 3&gt;(outputTensorInfo, std::vector&lt;float&gt;(</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;    {</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;            7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;            10.0f, 11.0f, 12.0f,</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;            13.0f, 14.0f, 15.0f,</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;            19.0f, 20.0f, 21.0f,</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160;            22.0f, 23.0f, 24.0f,</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;            25.0f, 26.0f, 27.0f,</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;            28.0f, 29.0f, 30.0f,</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;            31.0f, 32.0f, 33.0f,</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;            34.0f, 35.0f, 36.0f,</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;            37.0f, 38.0f, 39.0f,</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;            40.0f, 41.0f, 42.0f,</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;            43.0f, 44.0f, 45.0f,</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;            46.0f, 47.0f, 48.0f,</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;            49.0f, 50.0f, 51.0f,</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;            52.0f, 53.0f, 54.0f,</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;        })</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160;    );</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;float, 3&gt;(inputTensorInfo1, std::vector&lt;float&gt;(</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;        {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;            1.0f, 2.0f, 3.0f,</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;            4.0f, 5.0f, 6.0f,</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;            7.0f, 8.0f, 9.0f,</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;            10.0f, 11.0f, 12.0f,</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;            13.0f, 14.0f, 15.0f,</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;            16.0f, 17.0f, 18.0f,</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;            19.0f, 20.0f, 21.0f,</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;            22.0f, 23.0f, 24.0f,</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;            25.0f, 26.0f, 27.0f,</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;            28.0f, 29.0f, 30.0f,</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;            31.0f, 32.0f, 33.0f,</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;            34.0f, 35.0f, 36.0f,</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;        })</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;    );</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;float, 3&gt;(inputTensorInfo2, std::vector&lt;float&gt;(</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;        {</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;            37.0f, 38.0f, 39.0f,</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;            40.0f, 41.0f, 42.0f,</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;            43.0f, 44.0f, 45.0f,</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;            46.0f, 47.0f, 48.0f,</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;            49.0f, 50.0f, 51.0f,</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;            52.0f, 53.0f, 54.0f,</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;        })</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;    );</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin1 = {0, 0, 0}; <span class="comment">//Extent of the window is defined by size of input[0].</span></div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window1(wOrigin1);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160;</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin2 = {2, 0, 0}; <span class="comment">//Extent of the window is defined by size of input[1].</span></div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window2(wOrigin2);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;    <span class="keywordtype">bool</span> subTensorsSupported = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle1 =</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;        subTensorsSupported ?</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo1.GetShape(), wOrigin1.data()) :</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo1);</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle2  =</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;        subTensorsSupported ?</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo2.GetShape(), wOrigin2.data()) :</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo2);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> data;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo2, inputHandle2.get());</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;    AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window1);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window2);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(data, info);</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;    inputHandle1-&gt;Allocate();</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;    inputHandle2-&gt;Allocate();</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle1.get(), &amp;input1[0][0][0]);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle2.get(), &amp;input2[0][0][0]);</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160;</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.output[0][0][0], outputHandle.get());</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;}</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;</div><div class="line"><a name="l02237"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ab8220058ed03ce1bfb0778c8cab3de00"> 2237</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 1&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a6b08fab8b8a00113a020b10b311f745e">Concat1dTest</a>(</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;{</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;    <span class="keywordflow">return</span> Concat1dTestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;}</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;</div><div class="line"><a name="l02245"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ae20568d2c28cd57ac16c48ced2a57790"> 2245</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ac56cadc167dab69f6fd407d2084ed170">Concat2dDim0Test</a>(</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;{</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;    <span class="keywordflow">return</span> Concat2dDim0TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;}</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;</div><div class="line"><a name="l02253"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#abb422df45da62171791c11fd78eeab65"> 2253</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a6dcfe04840950ab1bcf8f1790aa05502">Concat2dDim1Test</a>(</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;{</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;    <span class="keywordflow">return</span> Concat2dDim1TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;}</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;</div><div class="line"><a name="l02261"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a05f39b02c140b707b8fb11d0116b250e"> 2261</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a37fb7480d960917baf48e8d06f7b2b66">Concat2dDim0DiffInputDimsTest</a>(</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;{</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;    <span class="keywordflow">return</span> Concat2dDim0DiffInputDimsTestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager,</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;                                                                tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;}</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;</div><div class="line"><a name="l02270"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a5941eca58661b95a628ed44fef3342c6"> 2270</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a5e7803092126fd2862fdd8a2ed90e32a">Concat2dDim1DiffInputDimsTest</a>(</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;{</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160;    <span class="keywordflow">return</span> Concat2dDim1DiffInputDimsTestImpl&lt;DataType::Float32&gt;(workloadFactory,</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;                                                                memoryManager,</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;                                                                tensorHandleFactory,</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;                                                                0.0f,</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;                                                                0);</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;}</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;</div><div class="line"><a name="l02282"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a553f8e0b4c45a27211a0db518f0a6298"> 2282</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ae4c24060b33c16216f2faf4a7ef7c7ff">Concat3dDim0Test</a>(</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160;{</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;    <span class="keywordflow">return</span> Concat3dDim0TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160;}</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;</div><div class="line"><a name="l02290"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ab459b2dd37ee6e8b571833480c824408"> 2290</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a23c0f7c8c79ce30cccbd65f39d692ed6">Concat3dDim1Test</a>(</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;{</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;}</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;</div><div class="line"><a name="l02298"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a7d39bba5f0a9f984266f9d84a425d7c7"> 2298</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a47256d5dd1d5c65c719c40b2bfc7cc96">Concat3dDim2Test</a>(</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;{</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;    <span class="keywordflow">return</span> Concat3dDim2TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory,</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;                                                   useSubtensor, 0.0f, 0);</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;}</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160;</div><div class="line"><a name="l02308"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a4e079485ce4f5e002f96e6e4ce1e2662"> 2308</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a8260222560c2abfbea0f87869ae22062">Concat3dDim0DiffInputDimsTest</a>(</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;{</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;    <span class="keywordflow">return</span> Concat3dDim0DiffInputDimsTestImpl&lt;DataType::Float32&gt;(</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;}</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;</div><div class="line"><a name="l02317"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a03078758d0a241f00e2e6e68ed7379a9"> 2317</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa6de98235dbd3060d428f6bb77b428ce">Concat3dDim1DiffInputDimsTest</a>(</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;{</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1DiffInputDimsTestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager,</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;                                                                tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160;}</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;</div><div class="line"><a name="l02326"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ae6abe39eda8d2acd37f46b42a5e8b16e"> 2326</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ab8a589490e332bc749972d21b7dff9a4">Concat3dDim2DiffInputDimsTest</a>(</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;{</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;    <span class="keywordflow">return</span> Concat3dDim2DiffInputDimsTestImpl&lt;DataType::Float32&gt;(</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, useSubtensor, 0.0f, 0);</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;}</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160;</div><div class="line"><a name="l02336"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a11f8865a287d1048effbe34be448f4eb"> 2336</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a1662cadf61dca494a38d44fb32f116cc">Concat4dDim0Test</a>(</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160;{</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;    <span class="keywordflow">return</span> Concat4dDim0TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;}</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;</div><div class="line"><a name="l02344"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a9157ab7bc07208ca47303155d2cd12b8"> 2344</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a6e54f02f06e0a3eac39e726a091290df">Concat4dDim1Test</a>(</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;{</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;    <span class="keywordflow">return</span> Concat4dDim1TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160;}</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;</div><div class="line"><a name="l02352"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a6e5e4396531527fadc52f3636d1bf73a"> 2352</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a27d4b7293d9b404c73850981d3496a50">Concat4dDim2Test</a>(</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160;{</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;    <span class="keywordflow">return</span> Concat4dDim2TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;}</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;</div><div class="line"><a name="l02360"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aeb4067152ce120e31043b8477a787261"> 2360</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a410d43ad354ebb8995b7d9bc5b2c686c">Concat4dDim3Test</a>(</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;{</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;    <span class="keywordflow">return</span> Concat4dDim3TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager,</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;                                                   tensorHandleFactory, 0.0f, 0, useSubtensor);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;}</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;</div><div class="line"><a name="l02370"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a3f94cface3893686bb6776ed4926fcda"> 2370</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a972c1ddee6e494e695dc10e0982142b5">Concat4dDiffShapeDim0Test</a>(</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160;{</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim0TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager,</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;                                                            tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;}</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;</div><div class="line"><a name="l02379"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ad787ee57d74366f6a8aedb5bc94dc086"> 2379</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a79c356d8f1e3b0585635ee9b5a9e41a3">Concat4dDiffShapeDim1Test</a>(</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160;{</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim1TestImpl&lt;DataType::Float32&gt;(</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160;}</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;</div><div class="line"><a name="l02388"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a957f8b14b7676797dcde1fc860e86b37"> 2388</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a5d244b77eab878c84d0bdf67ef387d3c">Concat4dDiffShapeDim2Test</a>(</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;{</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim2TestImpl&lt;DataType::Float32&gt;(workloadFactory, memoryManager,</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;                                                            tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;}</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;</div><div class="line"><a name="l02397"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aa1c653d6aa6b4ccb38f5c8abd7e08aa0"> 2397</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;float, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a63a31f32393eda0ec427511ab8da5e55">Concat4dDiffShapeDim3Test</a>(</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160;{</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim3TestImpl&lt;DataType::Float32&gt;(</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0, useSubtensor);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160;}</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;</div><div class="line"><a name="l02407"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a0fe26145da52f8562b32f068e20005ae"> 2407</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;Half, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#af8d15f0030605e3aa9d3679bbd207ae7">ConcatFloat16Test</a>(</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160;{</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1TestImpl&lt;DataType::Float16&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160;}</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;</div><div class="line"><a name="l02415"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a22bf322f7a53aa372791ac2e90411efb"> 2415</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;BFloat16, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ab37c1b501e6ffae4fb1d3e42860a7d1f">ConcatBFloat16Test</a>(</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;{</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1TestImpl&lt;DataType::BFloat16&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.0f, 0);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;}</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a7e1c4089ee308ca4903fa8d2df351ebc"> 2423</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a2f6ac42e5f7a238f07a6bd5869ef767d">ConcatUint8DifferentQParamsTest</a>(</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;{</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 3;</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 6;</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 3;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth1 = 3;</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight1 = 6;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels1 = 2;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth2 = 3;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight2 = 6;</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels2 = 1;</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;    <span class="comment">// Defines the tensor descriptors.</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ outputChannels, outputHeight, outputWidth }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ inputChannels1, inputHeight1, inputWidth1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo2({ inputChannels2, inputHeight2, inputWidth2 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;    <span class="comment">// Quantized input1 tensor. Range [-3, 1]</span></div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> inputScale1 = 0.015686f;</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;    <span class="keyword">const</span> int32_t inputOffset1 = 192;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160;</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;uint8_t, 3&gt;(inputTensorInfo1, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;    {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;        1, 2, 3,</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160;        4, 5, 6,</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;        7, 8, 9,</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160;        10, 11, 12,</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;        13, 14, 15,</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160;        16, 17, 18,</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160;        19, 20, 21,</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160;        22, 23, 24,</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160;        25, 26, 27,</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160;        28, 29, 30,</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;        31, 32, 33,</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;        34, 35, 36,</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;    })</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;    );</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160;</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;    <span class="comment">// Quatized input2 tensor. Range [-1, 4]</span></div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> inputScale2 = 0.019608f;</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;    <span class="keyword">const</span> int32_t inputOffset2 = 50;</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;uint8_t, 3&gt;(inputTensorInfo2, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;    {</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;        37, 38, 39,</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;        40, 41, 42,</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;        43, 44, 45,</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160;        46, 47, 48,</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160;        49, 50, 51,</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;        52, 53, 54,</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;    })</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;    );</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;    <span class="comment">// Output has the same quantization parameters than input1,</span></div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;    <span class="comment">// so that only the requantization of input2 is required</span></div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> outputScale = 0.015686f;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;    <span class="keyword">const</span> int32_t outputOffset = 192;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160;</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160;</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160;    ret.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;uint8_t, 3&gt;(outputTensorInfo, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160;    {</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;        1, 2, 3,</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160;        4, 5, 6,</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;        7, 8, 9,</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;        10, 11, 12,</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;        13, 14, 15,</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;        16, 17, 18,</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;        19, 20, 21,</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160;        22, 23, 24,</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;        25, 26, 27,</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;        28, 29, 30,</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160;        31, 32, 33,</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;        34, 35, 36,</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160;</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;        176, 177, 178,</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160;        179, 181, 182,</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160;        183, 184, 186,</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160;        187, 188, 189,</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;        191, 192, 193,</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;        195, 196, 197,</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;    })</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;    );</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;    outputTensorInfo.SetQuantizationScale(outputScale);</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;    outputTensorInfo.SetQuantizationOffset(outputOffset);</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160;    inputTensorInfo1.SetQuantizationScale(inputScale1);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160;    inputTensorInfo1.SetQuantizationOffset(inputOffset1);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160;    inputTensorInfo2.SetQuantizationScale(inputScale2);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;    inputTensorInfo2.SetQuantizationOffset(inputOffset2);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin1 = { 0, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[0].</span></div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window1(wOrigin1);</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin2 = { 2, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[1].</span></div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window2(wOrigin2);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;    <span class="keywordtype">bool</span> subTensorsSupported = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160;</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle1 =</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo1.GetShape(), wOrigin1.data()) :</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo1);</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle2 =</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo2.GetShape(), wOrigin2.data()) :</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo2);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> data;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo2, inputHandle2.get());</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;    AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window1);</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window2);</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160;</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(data, info);</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;    inputHandle1-&gt;Allocate();</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;    inputHandle2-&gt;Allocate();</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle1.get(), &amp;input1[0][0][0]);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle2.get(), &amp;input2[0][0][0]);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a>[0][0][0], outputHandle.get());</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;}</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;</div><div class="line"><a name="l02569"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a56611b98963e6b152447b8117dcb7451"> 2569</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a4332f7562287037bac9aed90d11a2db9">ConcatUint8Test</a>(</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160;{</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 3;</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 6;</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 3;</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth1 = 3;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight1 = 6;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels1 = 2;</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth2 = 3;</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight2 = 6;</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels2 = 1;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;    <span class="comment">// Defines the tensor descriptors.</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ outputChannels, outputHeight, outputWidth }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ inputChannels1, inputHeight1, inputWidth1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo2({ inputChannels2, inputHeight2, inputWidth2 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>);</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;    <span class="comment">// Arbitrary scale and offsets. They don&#39;t really matter as the Concat operator doesn&#39;t dequantize/quantize them.</span></div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> scale = 0.13497836f;</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;    <span class="keyword">const</span> int32_t offset = -7;</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;    outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(scale);</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;    outputTensorInfo.SetQuantizationOffset(offset);</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;    inputTensorInfo1.SetQuantizationScale(scale);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;    inputTensorInfo1.SetQuantizationOffset(offset);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;    inputTensorInfo2.SetQuantizationScale(scale);</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;    inputTensorInfo2.SetQuantizationOffset(offset);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;    ret.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;uint8_t, 3&gt;(outputTensorInfo, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;        {</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;            1, 2, 3,</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;            4, 5, 6,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;            7, 8, 9,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;            10, 11, 12,</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;            13, 14, 15,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;            16, 17, 18,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;            19, 20, 21,</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;            22, 23, 24,</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;            25, 26, 27,</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;            28, 29, 30,</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;            31, 32, 33,</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160;            34, 35, 36,</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;            37, 38, 39,</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160;            40, 41, 42,</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;            43, 44, 45,</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160;            46, 47, 48,</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;            49, 50, 51,</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;            52, 53, 54,</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;        })</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;    );</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;uint8_t, 3&gt;(inputTensorInfo1, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160;    {</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;        1, 2, 3,</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;        4, 5, 6,</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;        7, 8, 9,</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;        10, 11, 12,</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;        13, 14, 15,</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;        16, 17, 18,</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160;</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;        19, 20, 21,</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;        22, 23, 24,</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160;        25, 26, 27,</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;        28, 29, 30,</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;        31, 32, 33,</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160;        34, 35, 36,</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;    })</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;    );</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160;</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;uint8_t, 3&gt;(inputTensorInfo2, std::vector&lt;uint8_t&gt;(</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;    {</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160;        37, 38, 39,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;        40, 41, 42,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160;        43, 44, 45,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160;        46, 47, 48,</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160;        49, 50, 51,</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;        52, 53, 54,</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;    })</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;    );</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin1 = { 0, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[0].</span></div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window1(wOrigin1);</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin2 = { 2, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[1].</span></div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window2(wOrigin2);</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160;</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160;    <span class="keywordtype">bool</span> subTensorsSupported = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle1 =</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;        subTensorsSupported ?</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo1.GetShape(), wOrigin1.data()) :</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo1);</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle2 =</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;        subTensorsSupported ?</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo2.GetShape(), wOrigin2.data()) :</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo2);</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> data;</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo2, inputHandle2.get());</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;    AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window1);</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window2);</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(data, info);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;    inputHandle1-&gt;Allocate();</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;    inputHandle2-&gt;Allocate();</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle1.get(), &amp;input1[0][0][0]);</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle2.get(), &amp;input2[0][0][0]);</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a>[0][0][0], outputHandle.get());</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160;}</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;</div><div class="line"><a name="l02707"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a9943b5dddb420292860d038bf59c0c7e"> 2707</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint16_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a80b1bff1d772096f5a10a26167425ded">ConcatUint16Test</a>(</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;        <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;        <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160;{</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;    <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(memoryManager);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160;</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 3;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 6;</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 3;</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth1 = 3;</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight1 = 6;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels1 = 2;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth2 = 3;</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight2 = 6;</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels2 = 1;</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;    <span class="comment">// Defines the tensor descriptors.</span></div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> outputTensorInfo({ outputChannels, outputHeight, outputWidth }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>);</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo1({ inputChannels1, inputHeight1, inputWidth1 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>);</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;    <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> inputTensorInfo2({ inputChannels2, inputHeight2, inputWidth2 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160;    <span class="comment">// Arbitrary scale and offsets. They don&#39;t really matter as the Concat operator doesn&#39;t dequantize/quantize them.</span></div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> scale = 0.13497836f;</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;    <span class="keyword">const</span> int32_t offset = -7;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;    outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(scale);</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160;    outputTensorInfo.SetQuantizationOffset(offset);</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;    inputTensorInfo1.SetQuantizationScale(scale);</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;    inputTensorInfo1.SetQuantizationOffset(offset);</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;    inputTensorInfo2.SetQuantizationScale(scale);</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;    inputTensorInfo2.SetQuantizationOffset(offset);</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;    <a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint16_t, 3&gt;</a> ret(outputTensorInfo);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;    ret.<a class="code" href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">outputExpected</a> = MakeTensor&lt;uint16_t, 3&gt;(outputTensorInfo, std::vector&lt;uint16_t&gt;(</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160;    {</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;        1, 2, 3,</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;        4, 5, 6,</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;        7, 8, 9,</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;        10, 11, 12,</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;        13, 14, 15,</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;        16, 17, 18,</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;        19, 20, 21,</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;        22, 23, 24,</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;        25, 26, 27,</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;        28, 29, 30,</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;        31, 32, 33,</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;        34, 35, 36,</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;        37, 38, 39,</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;        40, 41, 42,</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;        43, 44, 45,</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;        46, 47, 48,</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;        49, 50, 51,</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160;        52, 53, 54,</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;    }));</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;    <span class="keyword">auto</span> input1 = MakeTensor&lt;uint16_t, 3&gt;(inputTensorInfo1, std::vector&lt;uint16_t&gt;(</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160;    {</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;        1, 2, 3,</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160;        4, 5, 6,</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;        7, 8, 9,</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;        10, 11, 12,</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;        13, 14, 15,</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;        16, 17, 18,</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160;</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;        19, 20, 21,</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160;        22, 23, 24,</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160;        25, 26, 27,</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160;        28, 29, 30,</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;        31, 32, 33,</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160;        34, 35, 36,</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160;    }));</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160;    <span class="keyword">auto</span> input2 = MakeTensor&lt;uint16_t, 3&gt;(inputTensorInfo2, std::vector&lt;uint16_t&gt;(</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160;    {</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;        37, 38, 39,</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;        40, 41, 42,</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;        43, 44, 45,</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;        46, 47, 48,</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160;        49, 50, 51,</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;        52, 53, 54,</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;    }));</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160;</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin1 = { 0, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[0].</span></div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window1(wOrigin1);</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160;</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;    std::vector&lt;unsigned int&gt; wOrigin2 = { 2, 0, 0 }; <span class="comment">//Extent of the window is defined by size of input[1].</span></div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">ConcatQueueDescriptor::ViewOrigin</a> window2(wOrigin2);</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; outputHandle = tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(outputTensorInfo);</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160;    <span class="keywordtype">bool</span> subTensorsSupported = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">SupportsSubTensors</a>();</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle1 =</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo1.GetShape(), wOrigin1.data()) :</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo1);</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160;</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;    std::unique_ptr&lt;ITensorHandle&gt; inputHandle2 =</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160;            subTensorsSupported ?</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">CreateSubTensorHandle</a>(*outputHandle, inputTensorInfo2.GetShape(), wOrigin2.data()) :</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160;            tensorHandleFactory.<a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">CreateTensorHandle</a>(inputTensorInfo2);</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160;    </div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160;    <a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> data;</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;    <a class="code" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>;</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo1, inputHandle1.get());</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;    AddInputToWorkload(data, info, inputTensorInfo2, inputHandle2.get());</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;    AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window1);</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;    data.<a class="code" href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">m_ViewOrigins</a>.push_back(window2);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;    std::unique_ptr&lt;IWorkload&gt; workload = workloadFactory.<a class="code" href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">CreateConcat</a>(data, info);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;    inputHandle1-&gt;Allocate();</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;    inputHandle2-&gt;Allocate();</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;    outputHandle-&gt;Allocate();</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160;</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle1.get(), &amp;input1[0][0][0]);</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a>(inputHandle2.get(), &amp;input2[0][0][0]);</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160;    workload-&gt;PostAllocationConfigure();</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;    workload-&gt;Execute();</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;    <a class="code" href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a>(&amp;ret.<a class="code" href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">output</a>[0][0][0], outputHandle.get());</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;    <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160;}</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160;</div><div class="line"><a name="l02843"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a587c146d14bc903593d666ec60b0b49e"> 2843</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 1&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ad3d1e6175529a26ba9698955b7cc0d8e">Concat1dUint8Test</a>(</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160;{</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160;    <span class="keywordflow">return</span> Concat1dTestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160;}</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;</div><div class="line"><a name="l02851"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aff1341e10235f1795762b1d1095ecf4b"> 2851</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa101efe51ecfbd0e64eeba18ffa49f52">Concat2dDim0Uint8Test</a>(</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;{</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;    <span class="keywordflow">return</span> Concat2dDim0TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160;}</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160;</div><div class="line"><a name="l02859"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ad2234fe7fbfbfdfb5b21102e6b0058ac"> 2859</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa8e37b566b2e5c533fb357eb560e1834">Concat2dDim1Uint8Test</a>(</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;{</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160;    <span class="keywordflow">return</span> Concat2dDim1TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;}</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160;</div><div class="line"><a name="l02867"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a8dffa45ae372dbede82bdb741bdfef3c"> 2867</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a2e6ce64cef93db0d06b69c4f249fac35">Concat2dDim0DiffInputDimsUint8Test</a>(</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160;{</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;    <span class="keywordflow">return</span> Concat2dDim0DiffInputDimsTestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160;}</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;</div><div class="line"><a name="l02876"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#adfa4be1ded3f85405d00bbb29daf802d"> 2876</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 2&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a06290d393dfb595552fc39fd894d964a">Concat2dDim1DiffInputDimsUint8Test</a>(</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160;{</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;    <span class="keywordflow">return</span> Concat2dDim1DiffInputDimsTestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;}</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160;</div><div class="line"><a name="l02885"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a53d309d9482909084c164413aa68467a"> 2885</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#adbfedf414aac270a5e285d057bfb58b6">Concat3dDim0Uint8Test</a>(</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160;{</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;    <span class="keywordflow">return</span> Concat3dDim0TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160;}</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160;</div><div class="line"><a name="l02893"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a429f624579e1b6ed42b14197fc362310"> 2893</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ad9172e664679c6174261e811c017071d">Concat3dDim1Uint8Test</a>(</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;{</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160;}</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;</div><div class="line"><a name="l02901"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a935316c06a7178dbc199694e7971b54c"> 2901</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ae8b0de60ee1ba3c2d5e4507195496399">Concat3dDim2Uint8Test</a>(</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160;{</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;    <span class="keywordflow">return</span> Concat3dDim2TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, useSubtensor, 0.5f, -1);</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160;}</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160;</div><div class="line"><a name="l02911"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a0d9a73b3d2399435b5a440537aae0fb6"> 2911</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a0035d52bb64343a205f1e2702ed6f52a">Concat3dDim0DiffInputDimsUint8Test</a>(</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160;{</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160;    <span class="keywordflow">return</span> Concat3dDim0TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160;}</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160;</div><div class="line"><a name="l02919"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aa71ef9dd8cce482564352b21fa017551"> 2919</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a23e070d290a76ea49b3dc802c315f852">Concat3dDim1DiffInputDimsUint8Test</a>(</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160;{</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;    <span class="keywordflow">return</span> Concat3dDim1DiffInputDimsTestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;}</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;</div><div class="line"><a name="l02928"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ad8be274610d7ec7bc0ed8f064c21f0ec"> 2928</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 3&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aa36dd3325483a70d872b4009321dcf40">Concat3dDim2DiffInputDimsUint8Test</a>(</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;{</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160;    <span class="keywordflow">return</span> Concat3dDim2DiffInputDimsTestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, useSubtensor, 0.5f, -1);</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;}</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;</div><div class="line"><a name="l02938"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a3fed8fe700e7e517f65343aeb4df616c"> 2938</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#afc881fff20745a31065e74be62b33346">Concat4dDim0Uint8Test</a>(</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;{</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160;    <span class="keywordflow">return</span> Concat4dDim0TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;}</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;</div><div class="line"><a name="l02946"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a9f38aae9785430bfe5e111b9372dacfc"> 2946</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a80c04e457e56741a208b6d84d77bae66">Concat4dDim1Uint8Test</a>(</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;{</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;    <span class="keywordflow">return</span> Concat4dDim1TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;}</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;</div><div class="line"><a name="l02954"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ab7ea1667cddecaedea53dbbefd2fea75"> 2954</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a8bcb164c6900742857a84e7c73fa7fe6">Concat4dDim2Uint8Test</a>(</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160;{</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160;    <span class="keywordflow">return</span> Concat4dDim2TestImpl&lt;DataType::QAsymmU8&gt;(workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;}</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;</div><div class="line"><a name="l02962"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#aa70d3cab4cbde75c62db08cc3b0d567e"> 2962</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ac222f8d0e05afd4cb187d2bafde9b46f">Concat4dDim3Uint8Test</a>(</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory, <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;{</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;    <span class="keywordflow">return</span> Concat4dDim3TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1, useSubtensor);</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;}</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;</div><div class="line"><a name="l02971"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ab9608e4ae205d0de8b1a6036583e8ca7"> 2971</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ae0683139ba76b335575fe37d96a26e2a">Concat4dDiffShapeDim0Uint8Test</a>(</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160;{</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim0TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;}</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160;</div><div class="line"><a name="l02980"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#ae5fc2fc93f2f994d76cd24b77e1c7f80"> 2980</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#a978768350bd24bb2d8b4a25459c265c7">Concat4dDiffShapeDim1Uint8Test</a>(</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;{</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim1TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;}</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;</div><div class="line"><a name="l02989"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a288ea85d287604fd5e470f5e16d3ad91"> 2989</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#ae0420c81890c5a5e7ecb20fb9d8c14d5">Concat4dDiffShapeDim2Uint8Test</a>(</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory)</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;{</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim2TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1);</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160;}</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;</div><div class="line"><a name="l02998"></a><span class="lineno"><a class="line" href="_concat_test_impl_8hpp.xhtml#a6621bf4fe6c56c6d1a5c7af4b529fa45"> 2998</a></span>&#160;<a class="code" href="struct_layer_test_result.xhtml">LayerTestResult&lt;uint8_t, 4&gt;</a> <a class="code" href="_concat_test_impl_8cpp.xhtml#aff509d223f51a5d7ce024c7911f466f6">Concat4dDiffShapeDim3Uint8Test</a>(</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;    <a class="code" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a>&amp; workloadFactory,</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">IBackendInternal::IMemoryManagerSharedPtr</a>&amp; memoryManager,</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;    <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a>&amp; tensorHandleFactory,</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;    <span class="keywordtype">bool</span> useSubtensor)</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160;{</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;    <span class="keywordflow">return</span> Concat4dDiffShapeDim3TestImpl&lt;DataType::QAsymmU8&gt;(</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160;        workloadFactory, memoryManager, tensorHandleFactory, 0.5f, -1, useSubtensor);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_permute_queue_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_permute_queue_descriptor.xhtml">armnn::PermuteQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00180">WorkloadData.hpp:180</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a80b1bff1d772096f5a10a26167425ded"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a80b1bff1d772096f5a10a26167425ded">ConcatUint16Test</a></div><div class="ttdeci">LayerTestResult&lt; uint16_t, 3 &gt; ConcatUint16Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02707">ConcatTestImpl.cpp:2707</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aff509d223f51a5d7ce024c7911f466f6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aff509d223f51a5d7ce024c7911f466f6">Concat4dDiffShapeDim3Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDiffShapeDim3Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02998">ConcatTestImpl.cpp:2998</a></div></div>
<div class="ttc" id="_tensor_copy_utils_8hpp_xhtml"><div class="ttname"><a href="_tensor_copy_utils_8hpp.xhtml">TensorCopyUtils.hpp</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ae4c24060b33c16216f2faf4a7ef7c7ff"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ae4c24060b33c16216f2faf4a7ef7c7ff">Concat3dDim0Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim0Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02282">ConcatTestImpl.cpp:2282</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ac56cadc167dab69f6fd407d2084ed170"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ac56cadc167dab69f6fd407d2084ed170">Concat2dDim0Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 2 &gt; Concat2dDim0Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02245">ConcatTestImpl.cpp:2245</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ae36ae7043e1761dcfcac538fa29c47d6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ae36ae7043e1761dcfcac538fa29c47d6">Concat2dDim1TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 2 &gt; Concat2dDim1TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00556">ConcatTestImpl.cpp:556</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a1662cadf61dca494a38d44fb32f116cc"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a1662cadf61dca494a38d44fb32f116cc">Concat4dDim0Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDim0Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02336">ConcatTestImpl.cpp:2336</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a2e952c053f3d7a035671a994352e2bc9"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a2e952c053f3d7a035671a994352e2bc9">ConcatTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; ConcatTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02111">ConcatTestImpl.cpp:2111</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a0047c671718849c74d3bdbd38385f807"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a0047c671718849c74d3bdbd38385f807">Concat4dDim2TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDim2TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01568">ConcatTestImpl.cpp:1568</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a0035d52bb64343a205f1e2702ed6f52a"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a0035d52bb64343a205f1e2702ed6f52a">Concat3dDim0DiffInputDimsUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim0DiffInputDimsUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02911">ConcatTestImpl.cpp:2911</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8b5d0f8a24e9d9238f412260a552acf8"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">armnn::TensorInfo::GetShape</a></div><div class="ttdeci">const TensorShape &amp; GetShape() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00187">Tensor.hpp:187</a></div></div>
<div class="ttc" id="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin_xhtml"><div class="ttname"><a href="structarmnn_1_1_concat_queue_descriptor_1_1_view_origin.xhtml">armnn::ConcatQueueDescriptor::ViewOrigin</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00122">WorkloadData.hpp:122</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a978768350bd24bb2d8b4a25459c265c7"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a978768350bd24bb2d8b4a25459c265c7">Concat4dDiffShapeDim1Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDiffShapeDim1Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02980">ConcatTestImpl.cpp:2980</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa298272bc356453c2814543fd0e2cb5f"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa298272bc356453c2814543fd0e2cb5f">Concat2dDim0DiffInputDimsTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 2 &gt; Concat2dDim0DiffInputDimsTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00582">ConcatTestImpl.cpp:582</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a2e6ce64cef93db0d06b69c4f249fac35"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a2e6ce64cef93db0d06b69c4f249fac35">Concat2dDim0DiffInputDimsUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 2 &gt; Concat2dDim0DiffInputDimsUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02867">ConcatTestImpl.cpp:2867</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a23e070d290a76ea49b3dc802c315f852"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a23e070d290a76ea49b3dc802c315f852">Concat3dDim1DiffInputDimsUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim1DiffInputDimsUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02919">ConcatTestImpl.cpp:2919</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="_quantize_helper_8hpp_xhtml"><div class="ttname"><a href="_quantize_helper_8hpp.xhtml">QuantizeHelper.hpp</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa36dd3325483a70d872b4009321dcf40"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa36dd3325483a70d872b4009321dcf40">Concat3dDim2DiffInputDimsUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim2DiffInputDimsUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02928">ConcatTestImpl.cpp:2928</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_workload_factory_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.xhtml">armnn::IWorkloadFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8hpp_source.xhtml#l00022">WorkloadFactory.hpp:22</a></div></div>
<div class="ttc" id="_workload_test_utils_8hpp_xhtml"><div class="ttname"><a href="_workload_test_utils_8hpp.xhtml">WorkloadTestUtils.hpp</a></div></div>
<div class="ttc" id="struct_layer_test_result_xhtml_a73610ea6c776cc66e5a78dd842a39b8b"><div class="ttname"><a href="struct_layer_test_result.xhtml#a73610ea6c776cc66e5a78dd842a39b8b">LayerTestResult::outputExpected</a></div><div class="ttdeci">boost::multi_array&lt; T, n &gt; outputExpected</div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.xhtml#l00042">LayerTestResult.hpp:42</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_ac043991b839903b2ba9da884e4020848"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#ac043991b839903b2ba9da884e4020848">armnn::ITensorHandleFactory::CreateSubTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateSubTensorHandle(ITensorHandle &amp;parent, TensorShape const &amp;subTensorShape, unsigned int const *subTensorOrigin) const =0</div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a6dcfe04840950ab1bcf8f1790aa05502"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a6dcfe04840950ab1bcf8f1790aa05502">Concat2dDim1Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 2 &gt; Concat2dDim1Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02253">ConcatTestImpl.cpp:2253</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a80c04e457e56741a208b6d84d77bae66"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a80c04e457e56741a208b6d84d77bae66">Concat4dDim1Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDim1Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02946">ConcatTestImpl.cpp:2946</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa101efe51ecfbd0e64eeba18ffa49f52"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa101efe51ecfbd0e64eeba18ffa49f52">Concat2dDim0Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 2 &gt; Concat2dDim0Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02851">ConcatTestImpl.cpp:2851</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ab37c1b501e6ffae4fb1d3e42860a7d1f"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ab37c1b501e6ffae4fb1d3e42860a7d1f">ConcatBFloat16Test</a></div><div class="ttdeci">LayerTestResult&lt; BFloat16, 3 &gt; ConcatBFloat16Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02415">ConcatTestImpl.cpp:2415</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a27d4b7293d9b404c73850981d3496a50"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a27d4b7293d9b404c73850981d3496a50">Concat4dDim2Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDim2Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02352">ConcatTestImpl.cpp:2352</a></div></div>
<div class="ttc" id="_resolve_type_8hpp_xhtml"><div class="ttname"><a href="_resolve_type_8hpp.xhtml">ResolveType.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a06290d393dfb595552fc39fd894d964a"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a06290d393dfb595552fc39fd894d964a">Concat2dDim1DiffInputDimsUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 2 &gt; Concat2dDim1DiffInputDimsUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02876">ConcatTestImpl.cpp:2876</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a79c356d8f1e3b0585635ee9b5a9e41a3"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a79c356d8f1e3b0585635ee9b5a9e41a3">Concat4dDiffShapeDim1Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDiffShapeDim1Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02379">ConcatTestImpl.cpp:2379</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa6de98235dbd3060d428f6bb77b428ce"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa6de98235dbd3060d428f6bb77b428ce">Concat3dDim1DiffInputDimsTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim1DiffInputDimsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02317">ConcatTestImpl.cpp:2317</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="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ab8a589490e332bc749972d21b7dff9a4"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ab8a589490e332bc749972d21b7dff9a4">Concat3dDim2DiffInputDimsTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim2DiffInputDimsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02326">ConcatTestImpl.cpp:2326</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
<div class="ttc" id="structarmnn_1_1_queue_descriptor_with_parameters_xhtml_aad91b9bbf7aa365d304febe79a3d1333"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml#aad91b9bbf7aa365d304febe79a3d1333">armnn::QueueDescriptorWithParameters::m_Parameters</a></div><div class="ttdeci">LayerDescriptor m_Parameters</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00057">WorkloadData.hpp:57</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_abd92409a35f1f4c41ee52c7471936fd8"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#abd92409a35f1f4c41ee52c7471936fd8">Generate3dPermuteVectorForConcat</a></div><div class="ttdeci">void Generate3dPermuteVectorForConcat(unsigned int numDimensions, unsigned int &amp;concatDim, std::pair&lt; PermutationVector, PermutationVector &gt; &amp;permutations)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00090">ConcatTestImpl.cpp:90</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a05eed8a9797d93f01639ca03025058f0"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a05eed8a9797d93f01639ca03025058f0">Concat4dDiffShapeDim2TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDiffShapeDim2TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01806">ConcatTestImpl.cpp:1806</a></div></div>
<div class="ttc" id="structarmnn_1_1_concat_queue_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_concat_queue_descriptor.xhtml">armnn::ConcatQueueDescriptor</a></div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00120">WorkloadData.hpp:120</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ac222f8d0e05afd4cb187d2bafde9b46f"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ac222f8d0e05afd4cb187d2bafde9b46f">Concat4dDim3Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDim3Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02962">ConcatTestImpl.cpp:2962</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa8e37b566b2e5c533fb357eb560e1834"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa8e37b566b2e5c533fb357eb560e1834">Concat2dDim1Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 2 &gt; Concat2dDim1Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02859">ConcatTestImpl.cpp:2859</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_workload_factory_xhtml_a32bb8d6cf5fc028bf501252767c08b21"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.xhtml#a32bb8d6cf5fc028bf501252767c08b21">armnn::IWorkloadFactory::CreateConcat</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreateConcat(const ConcatQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.xhtml#l01332">WorkloadFactory.cpp:1332</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_abe8889e8150beef5fd204b2d87b49298"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#abe8889e8150beef5fd204b2d87b49298">armnn::TensorInfo::SetShape</a></div><div class="ttdeci">void SetShape(const TensorShape &amp;newShape)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00189">Tensor.hpp:189</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a11311cacab78cfb69270c6fba87702e7"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a11311cacab78cfb69270c6fba87702e7">Concat2dTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 2 &gt; Concat2dTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, const TensorInfo &amp;outputTensorInfo, unsigned int dimension, const float qScale, const int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00460">ConcatTestImpl.cpp:460</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a6f4024f1c2bb14620c566ede118e0c4b"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a6f4024f1c2bb14620c566ede118e0c4b">Concat1dTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 1 &gt; Concat1dTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00422">ConcatTestImpl.cpp:422</a></div></div>
<div class="ttc" id="_tensor_helpers_8hpp_xhtml"><div class="ttname"><a href="_tensor_helpers_8hpp.xhtml">TensorHelpers.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_origins_descriptor_xhtml_ab78e6fe963508c1ac5c00d04bb3361a3"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.xhtml#ab78e6fe963508c1ac5c00d04bb3361a3">armnn::OriginsDescriptor::GetViewOrigin</a></div><div class="ttdeci">const uint32_t * GetViewOrigin(uint32_t idx) const</div><div class="ttdoc">Return the view origin at the int value idx. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00197">Descriptors.cpp:197</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a37fb7480d960917baf48e8d06f7b2b66"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a37fb7480d960917baf48e8d06f7b2b66">Concat2dDim0DiffInputDimsTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 2 &gt; Concat2dDim0DiffInputDimsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02261">ConcatTestImpl.cpp:2261</a></div></div>
<div class="ttc" id="_permute_8hpp_xhtml"><div class="ttname"><a href="_permute_8hpp.xhtml">Permute.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1_concat_queue_descriptor_xhtml_ab1794eb3e74c9700cd3d500fc06dc2e5"><div class="ttname"><a href="structarmnn_1_1_concat_queue_descriptor.xhtml#ab1794eb3e74c9700cd3d500fc06dc2e5">armnn::ConcatQueueDescriptor::m_ViewOrigins</a></div><div class="ttdeci">std::vector&lt; ViewOrigin &gt; m_ViewOrigins</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.xhtml#l00133">WorkloadData.hpp:133</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a91c4dfde57907d7698c7531785690a7f"><div class="ttname"><a href="_assert_8hpp.xhtml#a91c4dfde57907d7698c7531785690a7f">ARMNN_ASSERT_MSG</a></div><div class="ttdeci">#define ARMNN_ASSERT_MSG(COND, MSG)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00015">Assert.hpp:15</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a23c0f7c8c79ce30cccbd65f39d692ed6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a23c0f7c8c79ce30cccbd65f39d692ed6">Concat3dDim1Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim1Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02290">ConcatTestImpl.cpp:2290</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_backend_internal_xhtml_a693b40e6b94e958836aeb0410ca186bd"><div class="ttname"><a href="classarmnn_1_1_i_backend_internal.xhtml#a693b40e6b94e958836aeb0410ca186bd">armnn::IBackendInternal::IMemoryManagerSharedPtr</a></div><div class="ttdeci">std::shared_ptr&lt; IMemoryManager &gt; IMemoryManagerSharedPtr</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00092">IBackendInternal.hpp:92</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_aa97b8ca791f9380d2b678ff2ec923985"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#aa97b8ca791f9380d2b678ff2ec923985">Concat3dDim0DiffInputDimsTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim0DiffInputDimsTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01012">ConcatTestImpl.cpp:1012</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="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a972c1ddee6e494e695dc10e0982142b5"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a972c1ddee6e494e695dc10e0982142b5">Concat4dDiffShapeDim0Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDiffShapeDim0Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02370">ConcatTestImpl.cpp:2370</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a8f747abd7bf17b57c3178c077a8e1949"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a8f747abd7bf17b57c3178c077a8e1949">Concat4dDiffShapeDim1TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDiffShapeDim1TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01738">ConcatTestImpl.cpp:1738</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a2f6ac42e5f7a238f07a6bd5869ef767d"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a2f6ac42e5f7a238f07a6bd5869ef767d">ConcatUint8DifferentQParamsTest</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; ConcatUint8DifferentQParamsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02423">ConcatTestImpl.cpp:2423</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a685739c4eb65a580e075282cfe6787d6"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">armnn::TensorInfo::SetQuantizationScale</a></div><div class="ttdeci">void SetQuantizationScale(float scale)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00464">Tensor.cpp:464</a></div></div>
<div class="ttc" id="_assert_8hpp_xhtml_a5698be69cbd5dfe6c28fcd9867e8cbed"><div class="ttname"><a href="_assert_8hpp.xhtml#a5698be69cbd5dfe6c28fcd9867e8cbed">ARMNN_ASSERT</a></div><div class="ttdeci">#define ARMNN_ASSERT(COND)</div><div class="ttdef"><b>Definition:</b> <a href="_assert_8hpp_source.xhtml#l00014">Assert.hpp:14</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ae0683139ba76b335575fe37d96a26e2a"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ae0683139ba76b335575fe37d96a26e2a">Concat4dDiffShapeDim0Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDiffShapeDim0Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02971">ConcatTestImpl.cpp:2971</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a597f0b89f3fb6389802de4a51c979b17"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a597f0b89f3fb6389802de4a51c979b17">Concat4dTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, const TensorInfo &amp;outputTensorInfo, unsigned int dimension, bool useSubtensor, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01421">ConcatTestImpl.cpp:1421</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_af8d15f0030605e3aa9d3679bbd207ae7"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#af8d15f0030605e3aa9d3679bbd207ae7">ConcatFloat16Test</a></div><div class="ttdeci">LayerTestResult&lt; Half, 3 &gt; ConcatFloat16Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02407">ConcatTestImpl.cpp:2407</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a908c80ff86d48fe1bc7cd4d4b1d00147"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a908c80ff86d48fe1bc7cd4d4b1d00147">CreateDescriptorForConcat</a></div><div class="ttdeci">OriginsDescriptor CreateDescriptorForConcat(const std::vector&lt; TensorInfo &gt; &amp;inputTensorInfos, unsigned int concatDim)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00026">ConcatTestImpl.cpp:26</a></div></div>
<div class="ttc" id="_tensor_copy_utils_8cpp_xhtml_a99b626c58a926dc7d6df78d22ec186c8"><div class="ttname"><a href="_tensor_copy_utils_8cpp.xhtml#a99b626c58a926dc7d6df78d22ec186c8">CopyDataFromITensorHandle</a></div><div class="ttdeci">void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.xhtml#l00014">TensorCopyUtils.cpp:14</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ad9172e664679c6174261e811c017071d"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ad9172e664679c6174261e811c017071d">Concat3dDim1Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim1Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02893">ConcatTestImpl.cpp:2893</a></div></div>
<div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml">armnn::PermutationVector</a></div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00212">Types.hpp:212</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_workload_factory_xhtml_a2dcee0bc4bbae1f745324aed0f841a0a"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.xhtml#a2dcee0bc4bbae1f745324aed0f841a0a">armnn::IWorkloadFactory::CreatePermute</a></div><div class="ttdeci">virtual std::unique_ptr&lt; IWorkload &gt; CreatePermute(const PermuteQueueDescriptor &amp;descriptor, const WorkloadInfo &amp;info) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_factory_8cpp_source.xhtml#l01561">WorkloadFactory.cpp:1561</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a88cd4482bd3e898692dd42f3dcff60c0"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a88cd4482bd3e898692dd42f3dcff60c0">PermuteInputsForConcat</a></div><div class="ttdeci">void PermuteInputsForConcat(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, std::vector&lt; TensorInfo &gt; &amp;inputTensorInfos, std::vector&lt; T *&gt; &amp;inputData, std::vector&lt; std::vector&lt; T &gt;&gt; &amp;inputDataStorage, PermutationVector &amp;permuteVector, unsigned int &amp;concatDim, TensorInfo &amp;outputTensorInfo)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00171">ConcatTestImpl.cpp:171</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a6552cacc8f771f0e210949d56193c8d7"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a6552cacc8f771f0e210949d56193c8d7">Concat3dDim0TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim0TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00825">ConcatTestImpl.cpp:825</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a47256d5dd1d5c65c719c40b2bfc7cc96"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a47256d5dd1d5c65c719c40b2bfc7cc96">Concat3dDim2Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim2Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02298">ConcatTestImpl.cpp:2298</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a4e2a03f3c7e369896b804e963cfca10c"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a4e2a03f3c7e369896b804e963cfca10c">Concat3dDim1TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim1TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00899">ConcatTestImpl.cpp:899</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a5d244b77eab878c84d0bdf67ef387d3c"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a5d244b77eab878c84d0bdf67ef387d3c">Concat4dDiffShapeDim2Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDiffShapeDim2Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02388">ConcatTestImpl.cpp:2388</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a8fcf10f2804bcbbfef4fd86ef6a5ff2d"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a8fcf10f2804bcbbfef4fd86ef6a5ff2d">ExpandTensorShapeTo3dForPermute</a></div><div class="ttdeci">TensorShape ExpandTensorShapeTo3dForPermute(const TensorShape &amp;inputShape)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00072">ConcatTestImpl.cpp:72</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_af1042834da8c73c7d8f46160b0b73b45"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#af1042834da8c73c7d8f46160b0b73b45">Concat2dDim1DiffInputDimsTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 2 &gt; Concat2dDim1DiffInputDimsTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00662">ConcatTestImpl.cpp:662</a></div></div>
<div class="ttc" id="struct_layer_test_result_xhtml_ac9d44d346bb7c89f7a7aa31d2bee947f"><div class="ttname"><a href="struct_layer_test_result.xhtml#ac9d44d346bb7c89f7a7aa31d2bee947f">LayerTestResult::output</a></div><div class="ttdeci">boost::multi_array&lt; T, n &gt; output</div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.xhtml#l00041">LayerTestResult.hpp:41</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a01c3919ddf83b3f3c527cc8433bbddff"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a01c3919ddf83b3f3c527cc8433bbddff">Concat2dDim0TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 2 &gt; Concat2dDim0TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00518">ConcatTestImpl.cpp:518</a></div></div>
<div class="ttc" id="classarmnn_1_1_permutation_vector_xhtml_aae44e4154aa80fba7616747450ff69d5"><div class="ttname"><a href="classarmnn_1_1_permutation_vector.xhtml#aae44e4154aa80fba7616747450ff69d5">armnn::PermutationVector::IsEqual</a></div><div class="ttdeci">bool IsEqual(const PermutationVector &amp;other) const</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00246">Types.hpp:246</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a6e54f02f06e0a3eac39e726a091290df"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a6e54f02f06e0a3eac39e726a091290df">Concat4dDim1Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDim1Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02344">ConcatTestImpl.cpp:2344</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ae0420c81890c5a5e7ecb20fb9d8c14d5"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ae0420c81890c5a5e7ecb20fb9d8c14d5">Concat4dDiffShapeDim2Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDiffShapeDim2Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02989">ConcatTestImpl.cpp:2989</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_af7bc28cdb723e0cea4c0b860f40fa47e"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#af7bc28cdb723e0cea4c0b860f40fa47e">Concat3dDim2TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim2TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00973">ConcatTestImpl.cpp:973</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a1deafe1b2777bcaadefe2371b3ebbb27"><div class="ttname"><a href="namespacearmnn.xhtml#a1deafe1b2777bcaadefe2371b3ebbb27">armnn::Concatenate</a></div><div class="ttdeci">void Concatenate(const ConcatQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_concatenate_8cpp_source.xhtml#l00014">Concatenate.cpp:14</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a8260222560c2abfbea0f87869ae22062"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a8260222560c2abfbea0f87869ae22062">Concat3dDim0DiffInputDimsTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 3 &gt; Concat3dDim0DiffInputDimsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02308">ConcatTestImpl.cpp:2308</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a65992de6287260bcb4be7a4852a22c9c"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a65992de6287260bcb4be7a4852a22c9c">Concat4dDim1TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDim1TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01527">ConcatTestImpl.cpp:1527</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a4a9959df06e443a3e38d234564ad7736"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a4a9959df06e443a3e38d234564ad7736">Concat4dDiffShapeDim3TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDiffShapeDim3TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01884">ConcatTestImpl.cpp:1884</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a410d43ad354ebb8995b7d9bc5b2c686c"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a410d43ad354ebb8995b7d9bc5b2c686c">Concat4dDim3Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDim3Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02360">ConcatTestImpl.cpp:2360</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorShape::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdoc">Function that returns the tensor rank. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00174">Tensor.cpp:174</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml">armnn::ITensorHandleFactory</a></div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00041">ITensorHandleFactory.hpp:41</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_adbfedf414aac270a5e285d057bfb58b6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#adbfedf414aac270a5e285d057bfb58b6">Concat3dDim0Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim0Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02885">ConcatTestImpl.cpp:2885</a></div></div>
<div class="ttc" id="structarmnn_1_1_origins_descriptor_xhtml_a78e8266be865fdd92cadd04d6e25ae1f"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.xhtml#a78e8266be865fdd92cadd04d6e25ae1f">armnn::OriginsDescriptor::GetNumDimensions</a></div><div class="ttdeci">uint32_t GetNumDimensions() const</div><div class="ttdoc">Get the number of dimensions. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00192">Descriptors.cpp:192</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a4332f7562287037bac9aed90d11a2db9"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a4332f7562287037bac9aed90d11a2db9">ConcatUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; ConcatUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02569">ConcatTestImpl.cpp:2569</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ac8fc5aa4f5e286f98708650f6a8682a6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ac8fc5aa4f5e286f98708650f6a8682a6">Concat3dTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, const TensorInfo &amp;outputTensorInfo, unsigned int dimension, bool useSubtensor, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00730">ConcatTestImpl.cpp:730</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ad3d1e6175529a26ba9698955b7cc0d8e"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ad3d1e6175529a26ba9698955b7cc0d8e">Concat1dUint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 1 &gt; Concat1dUint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02843">ConcatTestImpl.cpp:2843</a></div></div>
<div class="ttc" id="namespacearmnn_utils_xhtml"><div class="ttname"><a href="namespacearmnn_utils.xhtml">armnnUtils</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00013">DataLayoutIndexed.hpp:13</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a5e7803092126fd2862fdd8a2ed90e32a"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a5e7803092126fd2862fdd8a2ed90e32a">Concat2dDim1DiffInputDimsTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 2 &gt; Concat2dDim1DiffInputDimsTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02270">ConcatTestImpl.cpp:2270</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a452d79381b887bbbcc645b44025c03ca"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a452d79381b887bbbcc645b44025c03ca">PermuteTensorData</a></div><div class="ttdeci">void PermuteTensorData(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, const PermutationVector &amp;mappings, TensorInfo &amp;inputTensorInfo, const T *inputData, std::vector&lt; T &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00121">ConcatTestImpl.cpp:121</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="structarmnn_1_1_workload_info_xhtml"><div class="ttname"><a href="structarmnn_1_1_workload_info.xhtml">armnn::WorkloadInfo</a></div><div class="ttdoc">Contains information about inputs and outputs to a layer. </div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00016">WorkloadInfo.hpp:16</a></div></div>
<div class="ttc" id="struct_layer_test_result_xhtml"><div class="ttname"><a href="struct_layer_test_result.xhtml">LayerTestResult</a></div><div class="ttdef"><b>Definition:</b> <a href="_layer_test_result_8hpp_source.xhtml#l00030">LayerTestResult.hpp:30</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a08b924fe6933a0c221cc0194dffb2b7d"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a08b924fe6933a0c221cc0194dffb2b7d">Concat3dDim2DiffInputDimsTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim2DiffInputDimsTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01304">ConcatTestImpl.cpp:1304</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a733ae6b70d0bfa43433c3e7606992328"><div class="ttname"><a href="namespacearmnn.xhtml#a733ae6b70d0bfa43433c3e7606992328">armnn::CreateDescriptorForConcatenation</a></div><div class="ttdeci">OriginsDescriptor CreateDescriptorForConcatenation(TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</div><div class="ttdoc">Convenience template to create an OriginsDescriptor to use when creating a ConcatLayer for performing...</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00258">Descriptors.hpp:258</a></div></div>
<div class="ttc" id="structarmnn_1_1_origins_descriptor_xhtml_a35546e7b56e6e972a495b48748478ede"><div class="ttname"><a href="structarmnn_1_1_origins_descriptor.xhtml#a35546e7b56e6e972a495b48748478ede">armnn::OriginsDescriptor::GetNumViews</a></div><div class="ttdeci">uint32_t GetNumViews() const</div><div class="ttdoc">Get the number of views. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00187">Descriptors.cpp:187</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a198a5812a5bf73d54928ec978f8cf7af"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a198a5812a5bf73d54928ec978f8cf7af">Concat4dDim0TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDim0TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01486">ConcatTestImpl.cpp:1486</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a8bcb164c6900742857a84e7c73fa7fe6"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a8bcb164c6900742857a84e7c73fa7fe6">Concat4dDim2Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDim2Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02954">ConcatTestImpl.cpp:2954</a></div></div>
<div class="ttc" id="_concat_test_impl_8hpp_xhtml"><div class="ttname"><a href="_concat_test_impl_8hpp.xhtml">ConcatTestImpl.hpp</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_ae8b0de60ee1ba3c2d5e4507195496399"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#ae8b0de60ee1ba3c2d5e4507195496399">Concat3dDim2Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 3 &gt; Concat3dDim2Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02901">ConcatTestImpl.cpp:2901</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a460c8d79a829f1ed16f088c12acf41f3"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a460c8d79a829f1ed16f088c12acf41f3">ConcatDifferentInputOutputQParamTest</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; ConcatDifferentInputOutputQParamTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01952">ConcatTestImpl.cpp:1952</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a9b4987fbd28822cfde9a5fcbf50793a5"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a9b4987fbd28822cfde9a5fcbf50793a5">Concat4dDim3TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDim3TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01609">ConcatTestImpl.cpp:1609</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a8ce943ec73def7b13345b918d787d7ca"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a8ce943ec73def7b13345b918d787d7ca">Concat3dDim1DiffInputDimsTestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 3 &gt; Concat3dDim1DiffInputDimsTestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01164">ConcatTestImpl.cpp:1164</a></div></div>
<div class="ttc" id="namespacearmnn_utils_xhtml_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00098">Permute.cpp:98</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_tensor_handle_factory_xhtml_a375f11dd42ff042435e8771cf287b20c"><div class="ttname"><a href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a375f11dd42ff042435e8771cf287b20c">armnn::ITensorHandleFactory::CreateTensorHandle</a></div><div class="ttdeci">virtual std::unique_ptr&lt; ITensorHandle &gt; CreateTensorHandle(const TensorInfo &amp;tensorInfo) const =0</div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a63a31f32393eda0ec427511ab8da5e55"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a63a31f32393eda0ec427511ab8da5e55">Concat4dDiffShapeDim3Test</a></div><div class="ttdeci">LayerTestResult&lt; float, 4 &gt; Concat4dDiffShapeDim3Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, bool useSubtensor)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02397">ConcatTestImpl.cpp:2397</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_afc881fff20745a31065e74be62b33346"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#afc881fff20745a31065e74be62b33346">Concat4dDim0Uint8Test</a></div><div class="ttdeci">LayerTestResult&lt; uint8_t, 4 &gt; Concat4dDim0Uint8Test(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02938">ConcatTestImpl.cpp:2938</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a6b08fab8b8a00113a020b10b311f745e"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a6b08fab8b8a00113a020b10b311f745e">Concat1dTest</a></div><div class="ttdeci">LayerTestResult&lt; float, 1 &gt; Concat1dTest(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l02237">ConcatTestImpl.cpp:2237</a></div></div>
<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorInfo::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00192">Tensor.hpp:192</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a905e011ae8536bbd643dd09495524596"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a905e011ae8536bbd643dd09495524596">NeedPermuteForConcat</a></div><div class="ttdeci">bool NeedPermuteForConcat(const std::vector&lt; TensorInfo &gt; &amp;inputTensorInfos, unsigned int concatDim)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00046">ConcatTestImpl.cpp:46</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_af61d63d5fc13eca28851f3fa65289c47"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#af61d63d5fc13eca28851f3fa65289c47">PermuteOutputForConcat</a></div><div class="ttdeci">void PermuteOutputForConcat(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, const TensorInfo &amp;tensorInfo, const PermutationVector &amp;permuteVector, std::unique_ptr&lt; ITensorHandle &gt; &amp;&amp;inputDataHandle, T *data)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l00241">ConcatTestImpl.cpp:241</a></div></div>
<div class="ttc" id="structarmnn_1_1_permute_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_permute_descriptor.xhtml">armnn::PermuteDescriptor</a></div><div class="ttdoc">A PermuteDescriptor for the PermuteLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00118">Descriptors.hpp:118</a></div></div>
<div class="ttc" id="_tensor_copy_utils_8cpp_xhtml_ae15f1a3c55d2db87683577de9fa4437c"><div class="ttname"><a href="_tensor_copy_utils_8cpp.xhtml#ae15f1a3c55d2db87683577de9fa4437c">CopyDataToITensorHandle</a></div><div class="ttdeci">void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_copy_utils_8cpp_source.xhtml#l00009">TensorCopyUtils.cpp:9</a></div></div>
<div class="ttc" id="_concat_test_impl_8cpp_xhtml_a4b3d058400cdae1f9f42bca0bd4cdd78"><div class="ttname"><a href="_concat_test_impl_8cpp.xhtml#a4b3d058400cdae1f9f42bca0bd4cdd78">Concat4dDiffShapeDim0TestImpl</a></div><div class="ttdeci">LayerTestResult&lt; T, 4 &gt; Concat4dDiffShapeDim0TestImpl(IWorkloadFactory &amp;workloadFactory, const IBackendInternal::IMemoryManagerSharedPtr &amp;memoryManager, const armnn::ITensorHandleFactory &amp;tensorHandleFactory, float qScale, int32_t qOffset)</div><div class="ttdef"><b>Definition:</b> <a href="_concat_test_impl_8cpp_source.xhtml#l01651">ConcatTestImpl.cpp:1651</a></div></div>
<div class="ttc" id="classarmnn_1_1_i_workload_factory_xhtml_a37f4eba7877deb34f4d8d64c9bcb9ab5"><div class="ttname"><a href="classarmnn_1_1_i_workload_factory.xhtml#a37f4eba7877deb34f4d8d64c9bcb9ab5">armnn::IWorkloadFactory::SupportsSubTensors</a></div><div class="ttdeci">virtual bool SupportsSubTensors() const =0</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_0f3cdec46afbc61a1ded8e1687c9c9a0.xhtml">backends</a></li><li class="navelem"><a class="el" href="dir_797a213d7d01b98ef12d53b0820ea64e.xhtml">backendsCommon</a></li><li class="navelem"><a class="el" href="dir_28bfe507f7e135bdae07c2a6b7f66696.xhtml">test</a></li><li class="navelem"><a class="el" href="dir_99a30439342d160875b21dac3498ad7f.xhtml">layerTests</a></li><li class="navelem"><a class="el" href="_concat_test_impl_8cpp.xhtml">ConcatTestImpl.cpp</a></li>
    <li class="footer">Generated on Fri Mar 19 2021 15:26:01 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>